Advanced Computer Programming

A.Y. 2018/2019
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
Expected learning outcomes
- 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.
Single course

This course cannot be attended as a single course. Please check our list of single courses to find the ones available for enrolment.

Course syllabus and organization

Linea Crema

Responsible
Lesson period
First semester
ATTENDING STUDENTS
Course 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
Course 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.
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Professor: Ceselli Alberto
Professor(s)