Scheda programma d'esame
LABORATORY II
GIOVANNI MANZINI
Academic year2022/23
CourseCOMPUTER SCIENCE
Code732AA
Credits12
PeriodSemester 1 & 2
LanguageItalian

ModulesAreaTypeHoursTeacher(s)
LABORATORIO IIINF/01LABORATORI96
GIOVANNI MANZINI unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Lo studente acquisirà conoscenze relativi alla programmazione di sistema in C, programmazione concorrente, utilizzo di Makefile, scripting in Python, programmazione in Assembler.

Knowledge

The student will acquire knowledge related to system programming in C, concurrent programming, use of Makefile's, Python scripting, Assembler programming.

 

Modalità di verifica delle conoscenze

Le conoscenze verrano verificate tramite: 

  • Compiti in classe - esercizi di programmazione da svolgere in un tempo ridotto.
  • Compiti a casa - esercizi di programmazione più complessi.
  • Progetto - compitò più complesso che deve integrare diversi concetti visti a lezione.
  • Verifica orale finale.

 Le modalità di verifica potranno subire delle modifiche a seconda delle restrizioni dovute al Covid

Assessment criteria of knowledge

The knowledge acquired will be assessed using:

  • Programming tests in class.
  • Programming homeworks.
  • Project.
  • Final oral exam.

 The assessment criteria can be change because of Covid related restrictions.

Capacità

Lo studente sviluperà capacità di:

  • Sviluppo di programmi in C.
  • Design e sviluppo di soluzioni multithreading in C.
  • Sviluppo di script Python.
  • Gestione di comunicazione tra processi anche scritti in linguaggi diversi
  • Sviluppo di programmi in Assembler ARM.

 

Skills

The student will acquire skills in:

  • Development of C programming language.
  • Design and evelopment of multithreading solutions in C.
  • Development of Python Scripts.
  • Handling of inter process communications even involving different programming languages
  • Development of ARM Assembler programs.

 

Modalità di verifica delle capacità

Compiti di programmazione in classe e a casa, progetto finale.

 

Assessment criteria of skills

Programming execises at home and in class, final project.

Comportamenti

Al termine del corso gli studenti dovrebbero essere in grado di svolgere in maniera efficiente compiti complessi utilizzando anche programmi concorrenti

Behaviors

At the end of the course students should be able to efficiently tackle complex tasks, possibily using concurrent programs. 

Modalità di verifica dei comportamenti

Progetto finale e orale.

Assessment criteria of behaviors

Final project and oral exam

Prerequisiti (conoscenze iniziali)

Buona conoscenza di almeno un linguaggio di programmazione imperativo.

Conoscenza delle strutture dati elementari: array e liste (ordinati), pile, stack, alberi, tabelle hash.

Conoscenza dei comandi principali delle shell Linux/Unix.

 

Prerequisites

Good knowledge of at least one imperative language

Knowlegde of elementary data structures: (sorted) arrays and lists, queues, stacks, trees, hash tables

Knowledge of the man Linux/Unix shell commands.

Corequisiti

E' fortemente consigliato di seguire in parallelo il corso di Architetture e Sistemi Operativi

Co-requisites

IT is strongly suggested to follow the course on Architectures and Operating Systems

Indicazioni metodologiche

Modalità: Lezioni frontali

Attività di apprendimento:

  • frequenza lezioni
  • studio individuale
  • svolgere esercizi di programmazione individualmente
  • frequenza di ricevimenti tenuti dagli assistenti e docenti

Frequenza fortemente consigliata ma non obbligatoria.

Metodi di insegnamento:

  • lezioni frontali con slide
  • esercizi di programmazione

 

Teaching methods

Delivery: frontal lectures in mixed mode (in person and online)

Learning activities:

  • attending lectures
  • individual study
  • solving of programming exercises individually
  • attending office hours with the assistants and professors

Attendance: strongly advised but not mandatory.

Teaching methods:

  • lectures with slides
  • programming exercises

 

Programma (contenuti dell'insegnamento)

Programmazione sequenziale in C, incluso utilizzo di puntatori, stringhe, librerie standard I/O. 

Programmazione in C utilizzando chiamate di sistema.

Debugging con GDB e controllo accessi alla memoria con valgrind.

Utilizzo di Makefile.

Programmazione concorrente in C utilizzando processi e thread.

Communicazione e sincronizazzione tra processi e thread.

Programmazione in Assembler ARM.

Scripting in Python.

Applicazioni, esempi e collegamenti con altri corsi del secondo anno.

 

Syllabus

C programming, including using pointers, strings, standard I/O libraries.

C programming using system calls.

GDB debugging and memroy check using valgrind.

Using Makefile.

Concurrent programming in C using processes and threads.

Communication and sincronisation among processes and threads.

ARM Assembler programming

Python Scripting.

 

 

Bibliografia e materiale didattico

P. Deitel, H. Deitel. Il linguaggio C. Fondamenti e tecniche di programmazione. Pearson.

Marc J. Rochkind. Advanced UNIX Programming 2nd Edition, Addison-Wesley Professional Computing Series, 2004.

 

Bibliography

P. Deitel, H. Deitel. C: how to program. Pearson.

Marc J. Rochkind. Advanced UNIX Programming 2nd Edition, Addison-Wesley Professional Computing Series, 2004.

 

Modalità d'esame

L'esame si svolgerà con una delle due seguenti modalità:

  1. Verifiche intermedie durante l'anno, tramite compiti di programmazione a casa e in classe, progetto finale ridotto, orale.
  2. Per gli studenti che non hanno passato le verifiche intermedie: progetto finale completo, orale.

 

Assessment methods

The exam will be held in two modalities:

  1. Intermediate programming tests during the academic year, including homework and in-class tests, final simplified project, oral exam.
  2. For the syudents who did not pass the intermediate evaluation: final project and oral exam.

 

Updated: 20/09/2022 18:31