PROGRAMMING LANGUAGES AND OBJECT-ORIENTED PROGRAMMING
Principles of programming languages: syntax, static and dynamic semantics.
Object-oriented programming: Java.
Functional programming: OCaml.
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)
DAVIDE ANCONA (President)
Prerequisites: basic notions of imperative programming, and algorithms and data structures.
L'orario di tutti gli insegnamenti è consultabile su EasyAcademy.
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.