Advanced computer programming

A.Y. 2016/2017
Lesson for
Overall hours
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

Active edition
Lessons: 48 hours
Professor: Ceselli Alberto
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
- concurrent, distributed, event-driven and GPU programming
B) Low level programming
C) Mobile, component based and aspect-oriented programming

Examples are discussed and excercises are given during lab sessions, using Python, Java, C and C++ programming languages.
Lesson period
First semester
Assessment methods
Assessment result
voto verbalizzato in trentesimi