Vai al contenuto principale
Se prosegui nella navigazione del sito, ne accetti le politiche:
  • Condizioni di utilizzo e trattamento dei dati
Prosegui
x
e-Learning - UNIMIB
  • Home
  • Calendario
  • My Media
  • Altro
Ascolta questa pagina con ReadSpeaker
Italiano ‎(it)‎
English ‎(en)‎ Italiano ‎(it)‎
Ospite
 Login
e-Learning - UNIMIB
Home Calendario My Media
Percorso della pagina
  1. Area di Scienze
  2. Corso di Laurea Triennale
  3. Informatica [E3102Q - E3101Q]
  4. Insegnamenti
  5. A.A. 2021-2022
  6. 2° anno
  1. Linguaggi di Programmazione
  2. Introduzione
Insegnamento Titolo del corso
Linguaggi di Programmazione
Codice identificativo del corso
2122-2-E3101Q108
Descrizione del corso SYLLABUS

Syllabus del corso

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

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 e Prolog 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.

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). "

4 "Il paradigma di programmazione imperativo. Introduzione al linguaggio di programmazione 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

Nota: per l'AA 2021-22 ci potranno essere della variazioni riguardo le modalità di erogazione, a causa dell'emergenza COVID.

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);

Peter Seibel, Practical Common Lisp (PCL);

Brian W. Kernigham & Dennis M. Ritchie, C Programming Language (2nd 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


Periodo di erogazione dell'insegnamento

Primo semestre

Modalità di verifica del profitto e valutazione

Nota: per l'AA 2021-22 ci potranno essere della variazioni riguardo le modalità di esame, a causa dell'emergenza COVID.

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 e Lisp; Programmazione Imperativa e C/C++), e uno o due  progetti in itinere, postati a fine Ottobre, da consegnare in forma elettronica a Gennaio/Febbraio (Common Lisp, Prolog e/o C++). 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), ma sono da consegnare individualmente. 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: Martedì dalle ore 10:30 o su appuntamento via email.

Prof.ssa Gabriella Pasi: su appuntamento via email.

Prof. Rafael Penaloza: su appuntamento via email.

Esporta

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 and Prolog, 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 environment for the different systems presented.

2 "The logic programming paradigm. Introduction to the Prolog programming language."

3 "The functional programming paradigm. Introduction to the (Common) Lisp programming language."

4 "The imperative programming paradigm. Introduction to the 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

Note: for AY 2021-22 the lectures and lab formats may be subject to variations, due to the COVID emergency.

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);

Peter Seibel, Practical Common Lisp (PCL);

Brian W. Kernigham & Dennis M. Ritchie, C Programming Language (2nd 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


Semester

First semester

Assessment method

Note: for the AY 2021-22 exams procedures may be subject to changes, due to the COVID emergency.

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 Prolog) and in January/February (Functional Programming and Lisp; Imperative Programming and C/C++), 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), but must be handed-in individually. 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: Tuesday from 10:30 am or by appointment via email.

Prof.ssa Gabriella Pasi: by appointment via email.

Prof. Rafael Penaloza: by appointment via email.


Entra

Scheda del corso

Settore disciplinare
INF/01
CFU
8
Periodo
Primo Semestre
Tipo di attività
Obbligatorio
Ore
72
Tipologia CdS
Laurea Triennale
Lingua
Italiano

Staff

    Docente

  • Marco Antoniotti
    Marco Antoniotti
  • GP
    Gabriella Pasi
  • RP
    Rafael Penaloza Nyssen

Opinione studenti

Vedi valutazione del precedente anno accademico

Bibliografia

Trova i libri per questo corso nella Biblioteca di Ateneo

Metodi di iscrizione

Iscrizione manuale
Iscrizione spontanea (Studente)

Ospite (Login)
Politiche
Ottieni l'app mobile
Powered by Moodle
© 2025 Università degli Studi di Milano-Bicocca
  • Privacy
  • Accessibilità
  • Statistiche