Principles of programming languages: syntax, static and dynamic semantics.
Object-oriented programming: Java.
Functional programming: OCaml.
Standard
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, inheritance and dynamic binding, casting, overloading, exceptions. Advanced features: outlines of generic classes and methods, and nested classes. 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, 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)
Ricevimento: Appointment by email
Ricevimento: On request.
DAVIDE ANCONA (President)
LUCA FRANCESCHINI
GIOVANNI LAGORIO
PAOLA MAGILLO
ELENA ZUCCA
Prerequisites: basic notions of imperative programming, and algorithms and data structures.
PROGRAMMING LANGUAGES AND OBJECT-ORIENTED PROGRAMMING
Written and oral test. Java project.
Mastering of basic theoretical aspects: written and oral test.
Object-oriented and functional programming in the small: written and oral test.
Comprehension of the formal specification of a programming language, and object-oriented implementation techniques for interpreters: Java project.