Advanced Computer Programming
A.Y. 2018/2019
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
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.
- using of languages for data-driven programming;
- software development for mobile devices (eg. Android) and embedded systems.
Lesson period: First semester
Assessment methods: Esame
Assessment result: voto verbalizzato in trentesimi
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
NON-ATTENDING STUDENTS
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.
- 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.
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.
- 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.
Professor(s)