First cycle
degree courses
Second cycle
degree courses
Single cycle
degree courses
School of Science
Course unit
SC03105369, A.A. 2015/16

Information concerning the students who enrolled in A.Y. 2015/16

Information on the course unit
Degree course Second cycle degree in
SC1176, Degree course structure A.Y. 2014/15, A.Y. 2015/16
bring this page
with you
Number of ECTS credits allocated 10.0
Type of assessment Mark
Course unit English denomination PROGRAMMING LANGUAGES
Website of the academic structure
Department of reference Department of Mathematics
Mandatory attendance No
Language of instruction Italian
Single Course unit The Course unit can be attended under the option Single Course unit attendance
Optional Course unit The Course unit can be chosen as Optional Course unit

Teacher in charge GILBERTO FILE' INF/01

ECTS: details
Type Scientific-Disciplinary Sector Credits allocated
Core courses INF/01 Computer Science 10.0

Course unit organization
Period First semester
Year 1st Year
Teaching method frontal

Type of hours Credits Teaching
Hours of
Individual study
Practice 3.0 24 51.0 No turn
Lecture 7.0 54 121.0 No turn

Start of activities 01/10/2015
End of activities 28/01/2016
Show course schedule 2019/20 Reg.2014 course timetable

Examination board
Examination board not defined

Prerequisites: A good knowledge of the programming languages Java and C++.
Target skills and knowledge: Learn a functional language (ML, Haskell). Appreciate the differences between functional and imperative languages. Appreciate the role of types. Understand the data managment during a program execution (both functional and imperative) and its influence on compilation. Learn the main concepts that marked the development of programming languages from 1950 till Java. The ability to construct a compiler and an interpreter.
Examination methods: The examination consists of a written and of an oral proof. The written part consists of some practical and sone theoretica questions. The oral part consists of a discussion about the project.
Assessment criteria: The evaluation is a measure of the degree of undestanding of the concepts taught in the course. The practical written exercises show the ability of the student to apply he notions to specific (slightly) new exercises. The theoretical questions show the depth and completeness of the understanding of the student. Finally, the oral examination shows the understanding of the project that encompasses many important concepts taught in the course.
Course unit contents: The main topics of the course are as follows:
1) The functional language Haskell: syntax, exercises, recursion, type inference, eager and lazy evaluation;
2) type inference in Haskell;
3) data management at run-time: blocks, functions, recursion, static and dynamic scoping, exceptions;
4) Short history of the object-oriented languages: Simula, Smalltalk, C++ and Java;
5) C++ critical points;
6) Java vs. C++;
7) comparison of the implementation of parametric polymorphism in Haskell, C++ and Java;
8) the project consists of constructing a compiler for a simple functional language: lexical and syntactic analysis, intermediate code production,, producing final code and interpreting it.
Planned learning activities and teaching methods: Fundamentally, the course consists of traditional class lectures. For helping students understand the material, every week, a 2 hours lesson is organized as follows: in the first hour students solve some exercises assigned by the professor and that concern the material covered in the previous week, in the second hour these exercises are corrected, using the blackboard, with a strong interaction between professor and students. Finally, the project is presented to the students during the course through a document (in 5 parts) and some lectures dedicated to it. The course uses Moodle, that allows a free interaction between professor and students.
Additional notes about suggested reading: Slides used for the lectures are made available on the elearning site. Some articles, that are mentioned during the course, are also put on the elearning site, as well as the exercises that are proposed weekly to the students, the document about the project and some past exams. Beside all this, the course has a reference text.
Textbooks (and optional supplementary readings)
  • John Mitchell, Concepts in Programming Languages. --: Cambridge University Press, 2003. Cerca nel catalogo