Skip to main content
If you continue browsing this website, you agree to our policies:
  • Condizioni di utilizzo e trattamento dei dati
Continue
x
If you continue browsing this website, you agree to our policies:
  • Condizioni di utilizzo e trattamento dei dati
Continue
x
e-Learning - UNIMIB
  • Home
  • My Media
  • More
Listen to this page using ReadSpeaker
English ‎(en)‎
English ‎(en)‎ Italiano ‎(it)‎
You are currently using guest access
 Log in
e-Learning - UNIMIB
Home My Media
Percorso della pagina
  1. Science
  2. Bachelor Degree
  3. Informatica [E3102Q - E3101Q]
  4. Courses
  5. A.A. 2023-2024
  6. 2nd year
  1. Programming Languages
  2. Summary
Insegnamento Course full name
Programming Languages
Course ID number
2324-2-E3101Q108
Course summary SYLLABUS

Course Syllabus

  • Italiano ‎(it)‎
  • English ‎(en)‎
Export

Obiettivi

Gli studenti apprenderanno vari paradigmi programmazione, in particolare il paradigma logico e quello funzionale. Apprenderanno inoltre a utilizzare ambienti per programmare nei principali linguaggi presentati. Gli studenti saranno in grado di sviluppare progetti di piccole e medie dimensioni in (Common) Lisp, Prolog e altri linguaggi utilizzando gli ambienti di programmazione presentati.

Contenuti sintetici

L’insegnamento ha l’obiettivo di mostrare il panorama dei paradigmi di programmazione secondo la tradizionale suddivisione tra paradigma imperativo, paradigma logico (dichiarativo) e paradigma funzionale.

Programma esteso

  1. I paradigmi di programmazione: imperativo, logico (dichiarativo) e funzionale. Richiami delle nozioni di “run-time” e di esecuzione di un programma su un’architettura idealizzata a pila (stack). Nozioni base degli ambienti di programmazione per i diversi sistemi presentati. Cenni storici.
  2. Il paradigma di programmazione logico. Introduzione al linguaggio di programmazione Prolog.
  3. Il paradigma di programmazione funzionale. Introduzione al linguaggio di programmazione LISP (Common Lisp). Note su Haskell, Julia e Javascript.
  4. Il paradigma di programmazione imperativo. Introduzione al linguaggio di programmazione C/C++.
  5. Utilizzo dei vari paradigmi in situazioni e contesti diversi.

Prerequisiti

Concetti di base di programmazione ricorsiva, logica matematica e di architetture hardware e software.

Modalità didattica

Il corso si svolgerà mediante lezioni frontali in presenza e con l’ausilio di sistemi di e-learning per la distribuzione del materiale didattico e di esercizi e progetti. Ci saranno inoltre delle lezioni in laboratorio per imparare a programmare nei linguaggi considerati a lezione.

Materiale didattico

  • Leon Sterling and Ehud Shapiro, The Art of Prolog Advanced Programming Techniques - 2nd Edition;
  • Abelson, Sussman e Sussman, Structure and Interpretation of Computer Programs (SICP);
  • Abelson, Sussman, Henz and Wrigstad, Structure and Interpretation of Computer Programs (SICP) - Javascript edition;
  • Peter Seibel, Practical Common Lisp (PCL);
  • Brian W. Kernigham & Dennis M. Ritchie, C Programming Language (2ⁿᵈ Edition), Prentice Hall, 1988;
  • Robert Sedgewick, Algorithms in C, Parts 1-5 (Bundle): Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms (3rd Edition), Addison Wesley, 2001;
  • Varie risorse online per gli altri linguaggi di programmazione presentati.

Periodo di erogazione dell'insegnamento

Primo semestre

Modalità di verifica del profitto e valutazione

L'insegnamento di Linguaggi di Programmazione prevede il superamento di una prova teorica (uno scritto) e di un progetto di programmazione. A discrezione del docente potrà essere richiesta anche una prova orale. La prova scritta ed il progetto corrispondente al primo appello sono strutturati in due prove "in itinere".

Le prove in itinere sono due scritti offerti in Novembre (Programmazione Logica e Prolog) e a Gennaio/Febbraio (Programmazione Funzionale; Programmazione Imperativa), e uno o due progetti in itinere, postati a fine Ottobre, da consegnare in forma elettronica a Gennaio/Febbraio. Le prove in itinere costituiscono, come già detto, il primo appello per il corso, e non sono recuperabili nei restanti appelli.

Dall'appello successivo (Febbraio/Marzo) lo scritto comprende tutte le parti del corso. Lo stesso vale per i progetti. Gli appelli seguenti saranno a Giugno, Luglio e Settembre (in data da precisarsi).

La parte teorica ed i progetti di laboratorio vanno superati entrambi nella stessa tornata; il voto complessivo è la media, ponderata a seconda dei casi, ovvero a discrezione del docente, dei voti parziali. In particolare, una media aritmetica almeno pari a 18 non è sufficiente per garantire il superamento dell'esame.

I progetti posso essere svolti in gruppo (massimo 3 persone). Chi svolge il progetto da solo od in coppia potrà avere un bonus.

Il voto è in trentesimi, ed esprime una valutazione complessiva di tutto cioè che concorre al raggiungimento degli obiettivi formativi dichiarati. Cioè, è frutto di una valutazione complessiva delle varie caratteristiche delle prove. Per esempio: chiarezza, rigore, autonomia di giudizio, capacità di scegliere esempi e di illustrare l'argomento in modo efficace.

Nota finale: tutti gli esiti saranno caricati nel sistema: voto, ritirato, assente, insufficiente etc.

Orario di ricevimento

Prof. Marco Antoniotti: giorno da decidersi o su appuntamento via email.

Prof.ssa Gabriella Pasi: su appuntamento via email.

Prof. Fabio Sartori: su appuntamento via email.

Export

Aims

The students will familiarize with various programming paradigms, in particular the logical and functional ones. They will learn the most common programming environments for the languages presented during the course. The students will acquire the ability to develop small and medium sized projects in (Common) Lisp, Prolog, and other languages by using the programming environments presented.

Contents

The course will provide students with a panoramic view of the main programming language paradigms: imperative, logic (declarative) and functional.

Detailed program

  1. Programming languages paradigms: imperative, logical (declarative) and functional. Notions recall of “run-time”, program execution on an idealized stack architecture. Basic notions about programming environments for the different systems presented. Some historical perspectives.
  2. The logic programming paradigm. Introduction to the Prolog programming language.
  3. The functional programming paradigm. Introduction to the (Common) Lisp programming language. Notes on Haskell, Julia and Javascript.
  4. The imperative programming paradigm. Introduction to the C/C++ programming language.
  5. Usage of the different paradigms in a variety of contexts.

Prerequisites

Basic concepts of recursive programming, mathematical logic and hardware/software architecture.

Teaching form

The course will be offered as a set of standard lectures during the term. “e-Learning” support will also be provided for the distribution of course material, exercises and project descriptions. Moreover there will be laboratory sessions where the students will learn to program with the programming languages introduced during the course.

Textbook and teaching resource

  • Leon Sterling and Ehud Shapiro, The Art of Prolog Advanced Programming Techniques - 2nd Edition;
  • Abelson, Sussman e Sussman, Structure and Interpretation of Computer Programs (SICP);
  • Abelson, Sussman, Henz e Wrigstad, Structure and Interpretation of Computer Programs (SICP) - Javascript edition;
  • Peter Seibel, Practical Common Lisp (PCL);
  • Brian W. Kernigham & Dennis M. Ritchie, C Programming Language (2ⁿᵈ Edition), Prentice Hall, 1988;
  • Robert Sedgewick, Algorithms in C, Parts 1-5 (Bundle): Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms (3rd Edition), Addison Wesley, 2001
  • Various online resources for the other programming language presented.

Semester

First semester

Assessment method

The Programming Languages exam requires passing a written test and a programming project. At the discretion of the instructors an oral exam may be also required. The written exam and the project corresponding to the first roll-call are organized into two "partial" tests.

The partial tests are two written exams offered in November (Logic Programming) and in January/February (Functional Programming; Imperative Programming), plus one or two projects, posted towards the end of October, to be electronically handed-in in January/February. The partial tests, as already said, comprise the first roll-call for the course and are not held over for the remaining roll-calls.

From the next roll-call (February/March) onward, the written exam will comprise all the course materiale. The same applies for the projects. The following roll-calls will be in June, July and September (in dates to be announced).

The written exam and the projects must be passed after the same roll-call; the final grade is the weighted average, at the discretion of the instructors, of the partial grades. In particular, a weighted arithmetic average equal to 18 does not guarantee the passing of the exam.

Projects can be done in groups (max 3 people). Whoever works on a project alone or in a pair, may have a bonus.

The final grade is in thirtieths, and expresses a comprehensive evaluation of everything that concurs to the achievement of the stated educational goals. That is, it is the result of a comprehensive evaluation of the tests. E.g., clarity, rigor, judgment abilities, argumentation choices and ability to illustrate them in an efficacious way.

Final note: every exam result will be recorded in the system: grade, withdraw, absent, insufficient, etc.

Office hours

Prof. Marco Antoniotti: TBD or by appointment via email.

Prof.ssa Gabriella Pasi: by appointment via email.

Prof. Fabio Sartori: by appointment via email.

Enter

Key information

Field of research
INF/01
ECTS
8
Term
First semester
Activity type
Mandatory
Course Length (Hours)
72
Degree Course Type
Degree Course
Language
Italian

Staff

    Teacher

  • Marco Antoniotti
    Marco Antoniotti
  • FS
    Fabio Sartori

Students' opinion

View previous A.Y. opinion

Bibliography

Find the books for this course in the Library

Enrolment methods

Manual enrolments
Self enrolment (Student)

You are currently using guest access (Log in)
Policies
Get the mobile app
Powered by Moodle
© 2025 Università degli Studi di Milano-Bicocca
  • Privacy policy
  • Accessibility
  • Statistics