FOUNDATIONS OF COMPUTER SCIENCE F - O

Academic Year 2022/2023 - Teacher: SIMONE PALAZZO

Expected Learning Outcomes

Learning objectives, expressed according to Dublin descriptors, are the following:

Knowledge and understanding: students will know the basics of computer science as the science that studies algorithms, working principles and organization of computers, information systems and computer networks, as well as basics of programming languages.

Applying knowledge and understanding: students will be able to understand the organization and working rationale of modern information systems, to develop algorithms to solve problems of medium complexity, and to code them in C language.

Making judgements: students will be able to judge the suitability of information technology tools in a professional context, as well as data structures and approaches for handling them in the solution of data processing problems.

Communication skills: students will be able to discuss with expert computer scientists on the design of a modern information system, and describe procedures for solving data processing problems.

Learning skills: students will be able to learn advanced methodologies and new programming languages, and to flexibly apply concepts provided in this course.

Course Structure

Lectures, hands-on exercises.

Should teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, in line with the programme planned and outlined in the syllabus.

Detailed Course Content

Fundamentals of algorithms and programs

- Automatic information processing. Algorithms and programs. Programming languages. Code Design. Structured programming. Flowcharts and pseudocode.

Information Representation

- Coding systems. Numbering systems and conversion algorithms. Full and floating point arithmetic. Representation of multimedia data.

Computer Architecture:

- Computer components: central memory, central unit, basic operation of the computer (machine cycle). Peripheral devices and memories.

Computer networks and the Internet
- Local networks. Geographical networks. Network protocols. Overview of the Internet and the most widespread network applications.

Operating Systems

- Programming Environment. Compilers vs. interpreters. Architecture and functionality of an Operating System. Process management. Memory management. File system.

The C programming language: syntax and semantics

- Instruction set. Control structures. Data types in C: int, char, float, double, arrays and strings, structures. The C pointer. Functions.

Sorting and searching algorithms

- Sequential and binary search. Sorting algorithms.

Dynamic allocation

- Dynamic data structures. Dynamic allocation of memory.

Textbook Information

  1. Fondamenti di Informatica per Ingegneria Industriale, a cura di: Daniela Giordano, Salvatore Cavalieri e Concetto Spampinato. McGraw-Hill.

  2. Linguaggio C - 5a ed. - Guida alla programmazione con elementi di Objective-C, a cura di Bellini, Guidi.

Course Planning

 SubjectsText References
1Codifica dell'informazione
2Introduzione al C
3Variabili
4Algoritmi
5Operatori ed espressioni
6Casting ed istruzioni condizionali
7Linguaggi di programmazione
8Computabilità e algebra di Boole
9Switch
10CPU e memorie
11Istruzioni iterative
12Sistemi operativi
13Array
14Matrici e stringhe
15Reti di calcolatori
16Struct
17Puntatori
18Vettori e puntatori; puntatori a vettori e a struct
19Funzioni; passaggio di parametri per valore
20Passaggio di parametri per indirizzo
21Allocazione dinamica
22Ricorsione e file
VERSIONE IN ITALIANO