- Laboratory of Computer Science
- Summary
Course Syllabus
Obiettivi
Acquisire i fondamenti concettuali della programmazione dei calcolatori.
Acquisire la capacità di progettare e realizzare strutture di dati e programmi per la risoluzione di problemi in campo scientifico e in ambito più generale.
Contenuti sintetici
Le nozioni di algoritmo e di costo computazionale di un algoritmo.
Principi di programmazione imperativa: strutture dei dati e algoritmi.
Nozioni di base sulla struttura funzionale dei calcolatori e sui sistemi operativi.
Rappresentazione dei dati, errori e approssimazione nei calcoli numerici.
Strategie di disegno degli algoritmi.
Programma esteso
Le nozioni di algoritmo e di costo computazionale di un algoritmo.
Struttura funzionale di un calcolatore. Natura e funzioni dei sistemi operativi.
Principi di programmazione imperativa. Variabili e tipi, istruzioni primitive, strutture di controllo (sequenza, scelta, iterazione). Esemplificazione in C.
Tipi strutturati: vettori, matrici, record. Tipi di dati dinamici: liste concatenate, alberi. Esemplificazione in C.
Rappresentazione dei dati. Numerazione binaria. Rappresentazione dei numeri interi e dei numeri reali. Rappresentazione a virgola mobile. Approssimazioni e errori.
Strategie di progettazione delle strutture dei dati e degli algoritmi.
Prerequisiti
Nozioni di base di logica proposizionale (connettivi logici: congiunzione, disgiunzione, negazione).
Modalità didattica
Lezioni frontali (2 CFU), esercitazioni in laboratorio (2 CFU).
Materiale didattico
Dispense a cura dei docenti, esercizi svolti e commentati.
Testi di consultazione:
1. JG Brookshear, SG Kochan, Fondamenti di informatica e programmazione in C, Pearson, 2014.
2. BW Kernighan, DM Ritchie, Il linguaggio C, seconda edizione, Pearson, 2004.
Periodo di erogazione dell'insegnamento
Secondo semestre.
Modalità di verifica del profitto e valutazione
Prova scritta: lo studente dovrà scrivere un programma in C che risolve un problema assegnato.
Prova orale: discussione del compito scritto e domande sui contenuti dell'insegnamento.
Orario di ricevimento
Martedì, 10:30-12:00 o per appuntamento.
Aims
Acquire the conceptual basis of computer programming.
Acquire the ability to design and implement data structures and algorithms for solving problems in scientific fields, and in a more general setting.
Contents
The notions of algorithm, and of computational cost of an algorithm.
Basics of imperative programming: data structures and algorithms.
Basic notions on the functional structure of computers and on operating systems.
The representation of data; errors and approximations in numerical computations.
Strategies for algorithm design.
Detailed program
The notions of algorithm, and of computational cost of an algorithm.
The functional structure of digital computers. Nature and functions of operating systems.
Structured types: arrays, matrices, records. Dynamic data types: linked lists, trees. Examples in C.
Representation of data. The binary notation. Representation of integers and of real numbers. Floating-point representation. Approximation and errors.
Strategies for the design of data structures and algorithms.
Prerequisites
Basic notions of propositional logic.
Teaching form
Lectures (2 CFU), laboratory activity (2 CFU).
Textbook and teaching resource
Notes prepared by the teacher, exercises with commented solutions.
1. JG Brookshear, SG Kochan, Fondamenti di informatica e programmazione in C, Pearson, 2014.
2. BW Kernighan, DM Ritchie, Il linguaggio C, seconda edizione, Pearson, 2004.
Semester
Second semester.
Assessment method
Written exam: the student will have to write a program in C, which solves a given problem.
Oral exam: discussion about the written exam, and questions on the content of the course.
Office hours
Every Tuesday, 10:30-12:00, or by appointment.
Key information
Staff
-
Federico Nati