Paradigmi e Linguaggi di Programmazione

Da Agent Group.
Vai alla navigazione Vai alla ricerca

Questa pagina fornisce il materiale didattico e le informazioni relative all'insegnamento di Paradigmi e Linguaggi di Programmazione (6 CFU) per il Corso di Laurea Magistrale in Informatica a partire dall'AA 2016/2017.


News

Ultime news

 Le lezioni inizieranno il 25 settembre 2017

Vecchie news

2016/17

 La lezione di lunedì 21 novembre 2016 si terrà in aula M2.1
 La lezione di lunedì 7 novembre 2016 si terrà in aula M2.1
 La lezione di lunedì 17 ottobre 2016 si terrà in aula M2.1
 Le lezioni inizieranno il 26 settembre 2016


Informazioni sul docente

File:Docente.png

Prof. Giacomo Cabri

Dipartimento di Scienze Fisiche, Informatiche e Matematiche

Università di Modena e Reggio Emilia, Via Campi 213/B - 41125 Modena

Telefono 0592058320 - Fax 0592055216

giacomo.cabri@unimore.it

Orario delle Lezioni

Orario dell'AA 2017/18

Le lezioni dell'AA 2017/18 inizieranno il 25 settembre 2017 con il seguente orario:

  • Lunedì dalle 11 alle 13 in aula M2.1 presso Matematica
  • Martedì dalle 11 alle 13 in aula M2.4 presso Matematica

Orario dell'AA 2016/17

Le lezioni dell'AA 2016/17 inizieranno il 26 settembre 2016 con il seguente orario:

  • Lunedì dalle 11 alle 13 in aula M2.5 presso Matematica
  • Martedì dalle 11 alle 13 in aula M2.1 presso Matematica

Obiettivi formativi

Gli obiettivi dell'insegnamento sono:

  • Presentare e confrontare i vari paradigmi di programmazione
  • Presentare i linguaggi di programmazione per un contesto specifico: il Web


Contenuti dell'insegnamento

Paradigmi di programmazione

  • Paradigma imperativo
  • Paradigma funzionale
  • Paradigma logico
  • Java 8 come linguaggio imperativo con costrutti funzionali
  • Esempi di linguaggi nei vari paradigmi: LISP, Proglog

Programmazione Web

  • Programmazione client: JavaScript
  • Programmazione lato server: JEE
  • Framework per lo sviluppo di applicazioni Web

Verifica dell'apprendimento

La verifica si componente di due parti. La prima parte consiste nello sviluppo di un progetto, da parte di un singolo studente o di un gruppo. La seconda parte consiste nella presentazione del progetto tramite un report e nella verifica della comprensione dei contenuti tramite domande sul programma svolto.

Sviluppo di un progetto

Progetto sui linguaggi

Questo progetto prevede l'implementazione di un algoritmo tramite 2 linguaggi visti a lezione e relativo confronto. Gli algoritmi che possono essere implementati sono:

  • Torre di Hanoi
  • 8 regine
  • Filosofi a cena
  • Altri concordati con il docente

Progetto Web

Per svolgere un progetto Web, accordarsi direttamente con il docente.

Presentazione del progetto e prova orale

Il progetto viene presentato durante l'appello orale. È necessario presentare:

  • il codice del software sviluppato
  • una relazione sul progetto svolto

La relazione deve riportare un confronto tra l'implementazione con i due (o più) linguaggi, sia quantitativa (ad es. numero di linee di codice, tempo di esecuzione, ...) sia qualitativa (facilità di programmazione, distanza tra soluzione concettuale e codifica, supporto di librerie, ...).

Appelli

Le date degli appelli sono disponibili sul sito ESSE3 (http://www.esse3.unimore.it).

Testi Consigliati

  • Maurizio Gabbrielli, Simone Martini, Linguaggi di programmazione - Principi e paradigmi, mcgraw-hill
  • Maurizio Gabbrielli, Simone Martini, Programming Languages: Principles and Paradigms, Springer
  • Raoul-Gabriel Urma, Mario Fusco, and Alan Mycroft, Java 8 in Action, Manning

Slide dell'insegnamento

In questa pagina sono riportati alcuni lucidi usati a lezione.

Grazie al prof. Enrico Denti dell'Università di Bologna e al prof. Riccardo Lancellotti dell'Università di Modena e Reggio Emilia.

  1. Concetti generali / General concepts
  2. Paradigma funzionale / Functional paradigm
  3. Linguaggio LISP
  4. Java 8
  5. Paradigma logico e Prolog / Logic paradigm and Prolog
  6. JavaScript
  7. JEE


Seminari

Materiale del seminario su SCALA (Giovanni Simonini, 6/12/2016)

Slide del seminario su Domain Specific Languages (Federico Bergenti, 19/12/2016)

Esercizi presentati a lezione

  1. LISP exercises (solutions)
  2. Java 8 exercises (solutions)
  3. Prolog exercises (solutions)

Strumenti Software

Si indicano di seguito gli strumenti software che si utilizzano durante l'insegnamento e si indica dove e' possibile reperirli.

  • Per sviluppare programmi in Java si utilizza il JDK (Java Development Kit). È di pubblico domino e si puo' scaricare dal sito Java at Oracle.
  • NOTA: È necessario utilizzare una versione del JDK maggiore o uguale alla 1.8 .
  • Come ambiente integrato (IDE) è possibile utilizzare quello che si preferisce. Quello consigliato è Eclipse.
  • LISP CLISP, LispWorks, CLISP on Mac
  • PROLOG SWI Prolog
  • JEE Apache Tomcat

Esercitazioni di laboratorio