From Agentgroup
Jump to: navigation, search
(Created page with "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 Magistra...")
 
 
(32 intermediate revisions by the same user not shown)
Line 5: Line 5:
  
 
==Ultime news==
 
==Ultime news==
   Le lezioni inizieranno il 26 settembre 2016
+
   Le lezioni inizieranno il 25 settembre 2017
  
 
==Vecchie news==
 
==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=
 
=Informazioni sul docente=
Line 22: Line 29:
  
 
=Orario delle Lezioni=
 
=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==
 
==Orario dell'AA 2016/17==
 
Le lezioni dell'AA 2016/17 inizieranno il 26 settembre 2016 con il seguente orario:
 
Le lezioni dell'AA 2016/17 inizieranno il 26 settembre 2016 con il seguente orario:
*Luned&igrave; dalle 11 alle 13 <!--in aula M1.5 (ex aila IV) presso Matematica-->
+
*Luned&igrave; dalle 11 alle 13 in aula M2.5 presso Matematica
*Marted&igrave; dalle 11 alle 13 <!--nel Laboratorio Base presso Matematica-->
+
*Marted&igrave; dalle 11 alle 13 in aula M2.1 presso Matematica
 
+
  
 
=Obiettivi formativi=
 
=Obiettivi formativi=
Line 41: Line 52:
 
*Paradigma funzionale
 
*Paradigma funzionale
 
*Paradigma logico
 
*Paradigma logico
*Esempi di linguaggi nei vari paradigmi
+
*Java 8 come linguaggio imperativo con costrutti funzionali
*Java 8 e C# come linguaggi imperativi con costrutti funzionali
+
*Esempi di linguaggi nei vari paradigmi: LISP, Proglog
  
 
Programmazione Web
 
Programmazione Web
*Programmazione lato client e lato server
+
*Programmazione client: JavaScript
*Programmazione client: AJAX e JavaScript
+
*Programmazione lato server: JEE
*Programmazione lato server: JEE, .NET
+
 
*Framework per lo sviluppo di applicazioni Web
 
*Framework per lo sviluppo di applicazioni Web
  
Line 54: Line 64:
  
 
==Sviluppo di un progetto==
 
==Sviluppo di un progetto==
TBA
+
 
 +
===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==
 
==Presentazione del progetto e prova orale==
TBA
+
Il progetto viene presentato durante l'appello orale.
 +
&Egrave; 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&ugrave;) linguaggi, sia quantitativa (ad es. numero di linee di codice, tempo di esecuzione, ...) sia qualitativa (facilit&agrave; di programmazione, distanza tra soluzione concettuale e codifica, supporto di librerie, ...).
  
 
=Appelli=
 
=Appelli=
Line 66: Line 90:
 
=Testi Consigliati=
 
=Testi Consigliati=
  
TBA
+
*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=
 
=Slide dell'insegnamento=
Line 75: Line 100:
 
In questa pagina sono riportati alcuni lucidi usati a lezione.
 
In questa pagina sono riportati alcuni lucidi usati a lezione.
  
TBA
+
Grazie al prof. Enrico Denti dell'Universit&agrave; di Bologna e al prof. Riccardo Lancellotti dell'Universit&agrave; di Modena e Reggio Emilia.
  
 +
* [[Media:00-CourseIntroductionPLP.pdf|Introduzione all'insegnamento / Course Introduction]]
 +
# [[Media:01-GeneralConcepts.pdf|Concetti generali / General concepts]]
 +
# [[Media:02-FunctionalParadigm.pdf|Paradigma funzionale / Functional paradigm]]
 +
# [[Media:03-LISP.pdf|Linguaggio LISP]]
 +
# [[Media:04-Java8.pdf|Java 8]]
 +
# [[Media:05-LogicParadigmProlog.pdf|Paradigma logico e Prolog / Logic paradigm and Prolog]]
 +
# [[Media:06-JavaScript.pdf|JavaScript]]
 +
# [[Media:07-JEE.pdf|JEE]]
 
<!--
 
<!--
* [[Media:00-IntroduzioneInsegnamentoPO.pdf|Introduzione all'insegnamento]]
 
# [[Media:01-Motivazioni.pdf|Motivazioni]]
 
# [[Media:02-LimitiProgrammazioneTradizionale.pdf|Limiti della programmazione tradizionale]]
 
# [[Media:03-IntroOOP.pdf|Introduzione alla programmazione ad oggetti]]
 
# [[Media:04-IntroJava.pdf|Introduzione al linguaggio Java]]
 
# [[Media:05-OOPJava.pdf|OOP in Java]]
 
 
# [[Media:06-ClassiAstratteIntefacceJava.pdf|Classi astratte e interfacce]]
 
# [[Media:06-ClassiAstratteIntefacceJava.pdf|Classi astratte e interfacce]]
 
# [[Media:07-IOJava.pdf|I/O in Java]]
 
# [[Media:07-IOJava.pdf|I/O in Java]]
Line 103: Line 130:
  
 
==Seminari==
 
==Seminari==
<!--
+
[http://dbgroup.unimo.it/materiale_scala.zip Materiale] del seminario su SCALA (Giovanni Simonini, 6/12/2016)
[[Media:SeminarioJavaInfolog2015.pdf|Seminario]] sull'uso di Java in azienda (Infolog, 9/12/2015)
+
-->
+
TBA
+
  
 +
[[Media:DSL - 2016.12.19.pdf|Slide]] del seminario su Domain Specific Languages (Federico Bergenti, 19/12/2016)
  
 
= Esercizi presentati a lezione =
 
= Esercizi presentati a lezione =
 
[[Image:eserciziLezione.png|right]]
 
[[Image:eserciziLezione.png|right]]
  
TBA
+
# [[Media:ES03-LISP.pdf|LISP exercises]] ([[Media:ES03-LISP_solutions.pdf|solutions]])
 
+
# [[Media:ES04-Java8.pdf|Java 8 exercises]] ([[Media:ES04-Java8_solutions.pdf|solutions]])
 +
# [[Media:ES05-Prolog.pdf|Prolog exercises]] ([[Media:ES05-Prolog_solutions.pdf|solutions]])
  
 
=Strumenti Software=
 
=Strumenti Software=
Line 122: Line 148:
 
* '''NOTA:''' &Egrave; necessario utilizzare una versione del JDK maggiore o uguale alla 1.8 .
 
* '''NOTA:''' &Egrave; necessario utilizzare una versione del JDK maggiore o uguale alla 1.8 .
 
* Come ambiente integrato (IDE) è possibile utilizzare quello che si preferisce. Quello consigliato è [http://www.eclipse.org/ Eclipse].
 
* Come ambiente integrato (IDE) è possibile utilizzare quello che si preferisce. Quello consigliato è [http://www.eclipse.org/ Eclipse].
* LISP [http://www.gnu.org/software/clisp/ CLISP], [http://www.lispworks.com/ LispWorks]
+
* LISP [http://www.gnu.org/software/clisp/ CLISP], [http://www.lispworks.com/ LispWorks], [https://objectcoder.com/2014/01/26/installing-common-lisp-clisp-on-mac-os-x/ CLISP on Mac]
 
+
* PROLOG [http://www.swi-prolog.org SWI Prolog]
TBC
+
* JEE [http://tomcat.apache.org/ Apache Tomcat]
 
+
  
 
=Esercitazioni di laboratorio=
 
=Esercitazioni di laboratorio=

Latest revision as of 12:33, 12 September 2017

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

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

Iscrizione.png

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

Lucidi.png

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

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

Strumenti Software

Strumenti.png

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