|Monday||11:30 AM - 1:30 PM||lesson||Lecture Hall B|
|Tuesday||1:30 PM - 2:30 PM||lesson||Lecture Hall B|
|Friday||11:30 AM - 1:30 PM||lesson||Lecture Hall B|
This class teaches fundamental concepts in programming languages, such as functions, types, memory management and control. The objective is to give students a thorough understanding of the issues and trade-offs in programming languages design. Such an understanding allows them to appreciate advantages and disadvantages of the various languages, so that they can choose the appropriate language for the application they are working on. Prerequisites: some knowledge of at least one object-oriented language (e.g., Java, C++) and at least one procedural language (e.g., C), and some exposure to simple analyses of algorithms and data structures.
Functions. A historical example: some elements of the Lisp language. Virtual machines: interpreters and compilers. Description of a programming language: syntax and semantics. Structured operational semantics: transition systems. The ML language. Type system, type inference and polymorphism in ML. Memory management: scope, functions and procedures, parameter passing. Control: structure and abstraction, exceptions in ML. Data: abstraction and modularity, modules in ML.
|John C. Mitchell||Concepts in Programming Languages (Edizione 1)||Cambridge University Press||2003||0-521-7809||Testo adottato|
|Jeffrey D. Ullman||Elements of ML Programming (Edizione 2)||Prentice Hall||1998||0-13-79038||Testo di supporto per il linguaggio ML|
|Lawrence C. Paulson||ML for the Working Programmer (Edizione 2)||Cambridge University Press||1996||0-521-5654||Testo di supporto per il linguaggio ML|
|Guy Cousineau, Michel Mauny||The functional approach to programming (Edizione 1)||Cambridge University Press||1998||0-521-5768||Testo di supporto per il linguaggio ML|
Partial-tests exam: this mode applies only to those students who take the exam right at the end of the class, that is, in December, given that the class is taught in the Fall. The exam consists of two written tests in class (C1 and C2) and a few homeworks (A). The grade is determined as follows: 20% A + 50% C1 + 50% C2. After the exam at the end of the Fall term, A, C1 and C2 have no value for the later exams. Students who take the exam in this form register for the December session.
Single-test exam: the exam consists of a single written test (E), whose difficulty is equivalent to that of C1+C2, and whose grade determines the final grade. This form of exam applies to all exam sessions.
Remarks: test C2 will be held in the same date, hour and room of test E of the December session (of course, duration and contents of C2 and E will be different).
Registration: at each session the date of the exam is the date of the written test (E) and therefore it is sufficient to register for that date. All grades will be registered. Students who are dissatisfied with their performance can withdraw by not handing-in C2 or E.
Rules: all assignments are strictly individual; it is severely forbidden to copy, exchange, share code or other keys to the questions. All assignments that show signs of cheating will receive grade 0, with no distinction between those who copy and those who let them copy.