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
- ability of using using of languages for object oriented programming, generic programming and meta programming; - ability of using languages for data-driven programming; - ability of developing software for mobile devices (eg. Android) and embedded systems.