|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) and at least one procedural language (e.g., C), and some exposure to simple analyses of algorithms and data structures.
Computable functions. A historical example: some elements of the Lisp language. Abstract machines: interpreters and compilers. Description of a programming language: syntax and semantics. Structured operational semantics or "natural" semantics: transition systems. A partly functional, partly procedural language: The ML language. The notion of environment: identifiers, types, 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. Advanced topics on the object-oriented paradigm (optional). Basic elements of concurrent and distributed programming in ML or Java (optional).
|John C. Mitchell||Concepts in Programming Languages (Edizione 1)||Cambridge University Press||2003||0-521-7809||Libro di testo adottato.|
|Jeffrey D. Ullman||Elements of ML Programming (Edizione 2)||Prentice Hall||1998||0-13-79038||Libro di riferimento principale per il linguaggio ML.|
|Maurizio Gabbrielli, Simone Martini||Linguaggi di programmazione: principi e paradigmi (Edizione 2)||McGraw Hill||2011||88-386-626||Altro libro di riferimento generale.|
|Lawrence C. Paulson||ML for the Working Programmer (Edizione 2)||Cambridge University Press||1996||0-521-5654||Altro libro di riferimento per il linguaggio ML.|
|Guy Cousineau, Michel Mauny||The functional approach to programming (Edizione 1)||Cambridge University Press||1998||0-521-5768||Altro libro di riferimento 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 term. In this mode, the exam consists of two written tests in class of two hours each (C1 and C2). The grade is determined as follows: 50% C1 + 50% C2. After the exam at the end of the Fall term, C1 and C2 have no value whatsoever for the later exams. Students who take the exam in this form must register for the December session.
Single-test exam: in this mode, the exam consists of a single written test (E), whose difficulty is equivalent to that of the partial tests combined, and whose grade determines the final grade in the exam. This form of exam applies to all exam sessions, including the one at the end of the class. However, if a student who has taken the partial tests, takes also test E, the grade determined by the partial tests no longer applies. In other words, students are not allowed to take both the partial tests and E and choose the best grade.
Remarks: homeworks will be assigned in class together with the date they are due; test C1 will be held on Monday November 5, 2007; 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 and transmitted to the Office of the Registrar independent of annotation on the students' booklets. Students cannot "reject" their grades. Students who are dissatisfied with their performance can withdraw: in order to withdraw it is sufficient not to hand-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.