Servizi per la didattica
PORTALE DELLA DIDATTICA

Tecniche di programmazione

03FYZPL

A.A. 2018/19

Corsi di studio

Corso di Laurea in Ingegneria Gestionale - Torino

Organizzazione del corso
Didattica Ore
Lezioni 30
Esercitazioni in aula 30
Esercitazioni in laboratorio 40
Docenti
Docente Qualifica Settore h.Lez h.Es h.Lab h.Tut Anni incarico
Corno Fulvio   Professore Associato ING-INF/05 30 10 20 0 7
Collaboratori
Espandi

Riduci
Docente Qualifica Settore h.Lez h.Es h.Lab h.Tut
Monge Roffarello Alberto Collaboratore Esterno   0 20 20 0
Monge Roffarello Alberto Dottorando   0 20 20 0
Tommasi Tatiana Ricercatore a tempo det. L.240/10 art.24-B ING-INF/05 0 0 40 0
Didattica
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 10 B - Caratterizzanti Ingegneria informatica
2018/19
L’insegnamento si propone di completare le capacità di programmazione dello studente, mettendolo in grado di affrontare e risolvere problemi, anche complessi, attraverso la realizzazione di programmi software. In particolare il corso si propone di integrare le competenze acquisite nei precedenti corsi, in particolare Programmazione ad Oggetti e Basi di Dati, permettendo di creare applicazioni in grado di presentare interfacce utente evolute e di accedere a basi di dati relazionali. Dal punto di vista algoritmico, dopo avere introdotto la ricorsione saranno analizzate le strutture dati più comuni (liste, alberi, grafi) e saranno studiati alcuni degli algoritmi di simulazione ed ottimizzazione più rilevanti, con riferimento ad applicazioni concrete nel campo della logistica, della produzione e dell’organizzazione d’impresa (es: allocazione di risorse, scheduling, simulazione ad eventi, trasporti, …).
The course aims at complementing the programming abilities of the students, allowing them to face and solve application problems, even complex ones, through the development of software programs. In particular, the course integrates the skills acquired in former courses, in particular Object Oriented Programming and Data Bases, enabling students to create applications with graphical user interfaces and that access relational data bases. From the algorithmic point of view, after introducing recursion, the most common data structures (lists, trees, graphs) will be analyzed, and the most relevant simulation and optimization algorithms will be studied, in particular with concrete applications to the fields of logistics, production, and enterprise organization (e.g., resource allocation, scheduling, queuing network systems, transports, etc.).
Conoscenza e capacità di comprensione: strutture dati complesse (liste, alberi, grafi); paradigma model-view-controller; progettazione di interfacce grafiche in Java; accesso a basi di dati relazionali da applicazioni Java; ricorsione; problemi di ricerca e di ottimizzazione (tecniche divide et impera); applicazioni in campo logistico e dell’organizzazione. Capacità di applicare conoscenza e comprensione: realizzazione di applicazioni grafiche in Java, con accesso a basi di dati; risoluzione di problemi di simulazione, ricerca ed ottimizzazione attraverso la realizzazione di programmi software; analisi di problemi di tipo gestionale e definizione di una soluzione algoritmica per la relativa risoluzione, ed implementazione della stessa.
Knowledge and understanding capabilities: complex data structures (lists, trees, graphs); model-view-controller paradigm; design of graphical user interfaces in Java; accessing relational data bases from Java applications; recursion; search problems and optimization problems (divide and conquer and min-max techniques); applications in logistics and organization. Ability to apply knowledge and understanding: design and implementation of graphical applications in Java, interacting with data bases; problem solving for simulation, search and optimization problems through the implementation of software programs; analysis of typical management problems and definition of algorithmic solutions for their solution, as well as implementation.
Conoscenza delle basi di dati relazionali, ed in particolare della loro interrogazione ed aggiornamento mediante istruzioni SQL. Concetti di programmazione ad oggetti, ed in particolare un linguaggio di programmazione object-oriented (Java o C#, ad esempio), con capacità di programmare in tale linguaggio.
Prior knowledge of relational data base management systems, and their query and update through SQL instructions. Concepts of object oriented programming, in particular knowledge of at leas one object-oriented programming launguage (Java or C#, for example), and ability to program in that language.
Complementi di programmazione in Java: applicazioni grafiche (JavaFX), accesso a basi di dati (JDBC), principali pattern di programmazione (MVC, Singleton, Factory, DAO). Strutture dati ed algoritmi: ricorsione, liste, alberi, grafi, procedure di visita e di ricerca, librerie Java per la gestione delle strutture dati complesse (jGraphT). Problem solving: problemi di ricerca e problemi di ottimizzazione; tecniche di ricerca di tipo esaustivo (ricorsivo) ed ottimale (greedy); applicazioni a casi di interesse gestionale (simulazione di eventi, problemi di scheduling, problemi di ottimizzazione delle risorse, di ricerca trasporti, ecc).
Java programming: JavaFX graphical interfaces, data base access (JDBC), some programming patterns (MVC, Singleton, Factory, DAO). Data structures and algorithms: recursion, collections, lists, trees, graphs, visit and search algorithms, Java libraries for managing complex data structures (jGraphT). Problem solving: search and optimization problems; techniques for exhaustive (recursive) search; applications to problems of interest for management students.
Lezioni in aula: presentazioni teoriche e sviluppo di esercizi. Materiale didattico (slide e video-registrazioni) fornito on-line. Esercitazioni in aula: svolgimento di programmi in aula ed analisi/progettazione di esempi applicativi. Tutti gli esercizi saranno disponibili sulla piattaforma GitHub. Esercitazioni in laboratorio informatico: sviluppo di programmi di ricerca ed ottimizzazione. Testi e soluzioni su GitHub.
Lucidi e dispense forniti dai docenti. Disponibilità completa delle video-registrazioni (screencast) di tutte le lezioni ed esercitazioni. Disponibilità completa delle soluzioni di tutti gli esercizi proposti in aula ed in laboratorio. Testi ausiliari: K. Sierra, B. Bates, Head First Java (O’Reilly); R. Sedgewick, Algoritmi in Java (Addison-Wesley) Pro JavaFX 2 - A Definitive Guide to Rich Clients with Java Technology, by James Weaver, Weiqi Gao, Stephen Chin, Dean Iverson, Johan Vos, ISBN13: 978-1-4302-6872-7, http://www.apress.com/9781430268727/ Algorithms in a Nutshell, By George T. Heineman, Gary Pollice, Stanley Selkow, O'Reilly Media, ISBN: 978-0-596-51624-6, http://shop.oreilly.com/product/9780596516246.do
Modalità di esame: test informatizzato in laboratorio; prova di laboratorio;
L’accertamento prevede la realizzazione di un programma in grado di risolvere un problema gestionale, secondo le tecniche e le metodologie trattate durante il corso. La prova verrà svolta in laboratorio informatico. La prova consisterà nella realizzazione in Java di un programma che, analizzando i dati presenti in una base dati e costruendo opportune strutture dati (collection e grafi, principalmente) sia in grado di interrogare la base dati e fornire dei risultati (basandosi su un esercizio ricorsivo o una simulazione ad eventi). La prova ha la durata di 2 ore, durante le quali gli studenti sviluppano il proprio programma sui PC del laboratorio LEP. Durante la prova è permesso accedere ad Internet (GitHub e motori di ricerca, in particolare), per mettere lo studente nelle condizioni di lavoro più realisticamente simili a quelle di un effettivo sviluppatore. La prova è divisa in due parti: - la prima parte si focalizza sull'interfacciamento con il database, la costruzione di strutture dati (grafi) e la semplice analisi o visita di tali strutture. Questa parte deve essere completata per raggiungere la sufficienza (min 18, max 21). La funzionalità di questa parte sarà verificata in laboratorio, immediatamente al termine della prova. - la seconda parte si focalizza sugli aspetti maggiormente algoritmici (ricorsione e simulazioni ad eventi), e si configura come una continuazione della parte precedente. Per gli studenti che abbiano raggiunto la sufficienza nella prima parte, verrà valutata anche la seconda parte, tramite correzione off-line.
Exam: computer lab-based test; practical lab skills test;


© Politecnico di Torino
Corso Duca degli Abruzzi, 24 - 10129 Torino, ITALY
m@il