Advanced computer programming

A.Y. 2018/2019
Lesson for
6
Max ECTS
48
Overall hours
SSD
INF/01
Language
English
Learning objectives
Programming is a ubiquitous field in computer science: being able to produce and understand computer code using state-of-the-art technologies is of fundamental importance to both contribute and manage each software development task.

The course has both methodological and application-oriented objectives, to provide both theoretical understanding and practical skills for effectively programming in diverse computing domains.

From the methodological point of view, the course aims at allowing students to
- better understand computing domains
- select the most appropriate programming paradigms for each domain
- assess and improve code robustness against bugs
- improve code factorization and structuring skills
- fully exploit specialized hardware computing capabilities

From the application point of view, the course gives practical skills in
- application development using state-of-the-art object-oriented and scripting languages
- low-level programming for special purpose devices and embedded systems
- high-level programming for service oriented architectures
- advanced using of languages for object oriented programming, generic programming and meta programming;
- using of languages for data-driven programming;
- software development for mobile devices (eg. Android) and embedded systems.

Course structure and Syllabus

Linea Crema
Active edition
Yes
Responsible
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Professor: Ceselli Alberto
ATTENDING STUDENTS
Syllabus
A) Advanced programming paradigms
- functional and data-driven programming
- data and process abstraction; object oriented, parametric and generic programming
- reflection, reification, decorators, metaclasses and annotation
B) Concurrency
- concurrent, distributed, event-driven and GPU programming
C) Case study
- development of applications in a particular real world domain, proposed by the teacher at the beginning of the course

Examples are discussed and exercises are given during lab sessions, using Python, Java, C and C++ programming languages.
NON-ATTENDING STUDENTS
Syllabus
A) Advanced programming paradigms
- functional and data-driven programming
- data and process abstraction; object oriented, parametric and generic programming
- reflection, reification, decorators, metaclasses and annotation
B) Concurrency
- concurrent, distributed, event-driven and GPU programming
C) Case study
- development of applications in a particular real world domain, proposed by the teacher at the beginning of the course

Examples are discussed and exercises are given during lab sessions, using Python, Java, C and C++ programming languages.
Lesson period
First semester
Lesson period
First semester
Assessment methods
Esame
Assessment result
voto verbalizzato in trentesimi
Educational website(s)
Professor(s)