FOUNDATIONS OF COMPUTER SCIENCE - canale 2

Academic Year 2017/2018 - 1° Year
Teaching Staff: Orazio TOMARCHIO
Credit Value: 9
Scientific field: ING-INF/05 - Information processing systems
Taught classes: 49 hours
Exercise: 30 hours
Term / Semester: One-year
ENGLISH VERSION

Learning Objectives

The objective of the course is to give the students an overview of the information science by introducing the methodologies and the technologies used in the automatic processing of data.

Basic programming concepts by using the ANSI C programming language will be provided, together with fundamentals data structures and algorithms.

Moreover, through a wide experimentation also in some lab sessions, students will learn how to solve problems by developing correct, efficient and well-structured programs.


Detailed Course Content

Part 1

  • Automatic processing of data and algorithms - Algorithms and programs - A graphic notation for algorithms - Programming languages - Program design
  • Information representation: Numerical systems - Conversion between numerical systems - Binary numbering system - Representation of integers - Representation fixed-point and floating point - Boolean algebra, logic functions, logical expression
  • Computer architecture: basic architecture, CPU, central memory, I/O peripherics. Basic behaviour of the computer. The operating system
  • Programming languages: Translation and execution of programs - Programming environment - Programming languages: imperative languages - Compilers, Linkers - Bulding and deploying an application - Libraries and header files

Modulo 2

  • Fundamentals of the C programming language: Syntax - Structure of a C program - Compiling a program
  • Main data types - Identifiers - Variables - Access Modifiers - Constants - Operators
  • Control structures: Sequence, Selection and Iteration - Expression
  • Arrays, strings and pointers: One-dimensional arrays - Pointers to arrays - Strings - Multidimensional arrays - Pointer Variables - Operators and expressions with pointers - Pointers to arrays - Dynamic memory allocation
  • Functions: Declaration and definition - Function parameters - Return statement - Local Variables - Declarations and scope of identifiers
  • Structures, unions, and user-defined types: Struct - Array of structs - Structs as function arguments - Structs Pointers - Union - Enumerations - Sizeof - Tipedef
  • I / O in C: Console I/O - Files - Reading and writing characters strings - Formatted I/O - Channels - Text files - Binary files

Modulo 3

  • Recursion
  • Dynamic memory allocation
  • Computational complexity
  • Sorting algorithms - Examples of sorting algorithms
  • Abstract Data Type: List, Queue, Stack, Tree, Binary Tree, Hashmap.

Textbook Information

  • [BeGu] Bellini, Guidi. Linguaggio C. Guida alla programmazione. McGraw-Hill
  • [Pel] Pellegrino Principe. C guida alla programmazione. Apogeo