|SCIENTIFIC DISCIPLINARY SECTOR||INF/01|
Principles of programming languages: syntax, static and dynamic semantics, and intepreters.
Functional programming: OCaml.
Object-oriented programming: Java.
students will extend their skills acquired in the introductory courses on programming in the small, and
learn to develop applications starting from informal requirements and use integrated development environments
Students will acquire the following skills:
Basic notions on imperative programming, algorithms and data types and structures.
Principles of programming languages: overview, programming paradigms; syntax, static and dynamic semantics, development of a semantics-driven interpreter.
Object-oriented paradigm (the Java programming language): objects, classes, interfaces, inheritance and dynamic binding, casting, overloading, exceptions. Advanced features: generic classes and methods. Practical uses of the standard API, iterator and visitor design pattern.
Functional paradigm (the OCaml programming language): higher-order and polymorphic functions, polymorphic type inference, currying, functions on lists, tail recursion, user-defined types.
-Davide Ancona, Giovanni Lagorio, Elena Zucca. Linguaggi di Programmazione. Città Studi Edizioni.
-Ken Arnold, James Gosling, and David Holmes. The Java Programming Language, Fourth Edition, Prentice Hall.
-Emmanuel Chailloux, Pascal Manoury, and Bruno Pagano. Developing Applications With Objective Caml.
-Josh Bloch. Effective Java (second edition). Prentice Hall. (advanced, optional)
-Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. (advanced, optional)
Office hours: Appointment by email
DAVIDE ANCONA (President)
RICCARDO BIANCHINI (Substitute)
GIOVANNI LAGORIO (Substitute)
PAOLA MAGILLO (Substitute)
Prerequisites: basic notions of imperative programming, and algorithms and data structures.
All class schedules are posted on the EasyAcademy portal.
Written test. Final software project and individual discussion on it.
Use of the basic concepts of object-oriented programming in the small: development of a software project, Java comprehension and programming exercises in the written test.
Comprehension, use and implementation of the iterator and visitor design patterns: development of a software project, Java programming exercises in the written test.
Use of the basic concepts of functional and generic programming in the small: OCaml programming exercises in the written test.
Comprehension of the specification of a programming language and its underlying implementation issues: development of a software project, exercises on regular expressions and context free grammars in the written test.