Servizi per la didattica
PORTALE DELLA DIDATTICA

Algoritmi e programmazione

03MNOOA

A.A. 2020/21

Lingua dell'insegnamento

Italiano

Corsi di studio

Corso di Laurea in Ingegneria Informatica - Torino

Organizzazione dell'insegnamento
Didattica Ore
Lezioni 96
Esercitazioni in laboratorio 24
Tutoraggio 29.5
Docenti
Docente Qualifica Settore h.Lez h.Es h.Lab h.Tut Anni incarico
Cabodi Gianpiero - Corso 2 Professore Associato ING-INF/05 39 0 0 0 6
Camurati Paolo Enrico - Corso 1 Professore Ordinario ING-INF/05 39 0 0 0 10
Camurati Paolo Enrico - Corso 3 Professore Ordinario ING-INF/05 39 0 0 0.5 10
Collaboratori
Espandi

Didattica
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 12 B - Caratterizzanti Ingegneria informatica
2020/21
Il corso permette di acquisire adeguate conoscenze di algoritmi, strutture dati e loro implementazione in C per la soluzione di problemi complessi. Si accentua il passaggio dalle capacità analitiche a quelle progettuali. Vengono presentate le soluzioni algoritmiche "classiche" dei problemi e la teoria che sta alla loro base, con particolare riferimento a implementazioni in C. Si trattano aspetti avanzati del linguaggio C, quali puntatori, allocazione dinamica della memoria, modularità e realizzazione di Tipi di Dato Astratti. Si propongono agli studenti esempi pratici di soluzione di problemi complessi, con analisi dei principali paradigmi risolutivi e si svolgono esercitazioni di laboratorio ad essi connesse.
The course allows the student to acquire adequate knowledge and skills in algorithms, data structures and their implementation in C to solve complex problems. The student should gradually evolve from more analytic to more design-oriented skills. Algorithmic solutions to 'classical' problems are introduced, together with their theoretical foundations, and the implementations in C. Advanced aspects of C are considered, like pointers, dynamic memory allocation, modularity and Abstract Data Type implementation. The student has the opportunity to analyze practical examples, describing solutions to complex problems, and the related algorithmic paradigms. Knowledge and programming skills are applied during lab sessions.
• Conoscenza dei meccanismi di allocazione della memoria e utilizzo dei puntatori • Abilità di programmazione avanzata in C, utilizzando puntatori e strutture dati dinamiche • Conoscenza delle nozioni elementari di analisi della complessità • Conoscenza degli algoritmi di ordinamento • Abilità di valutare la complessità di algoritmi e di migliorarne l'efficienza in termini di tempo di esecuzione e/o uso di memoria • Conoscenza di strutture dati complesse e ADT (liste, code, pile, heap, alberi, tabelle di hash e grafi) e dei relativi algoritmi • Conoscenza delle strategie elementari di programmazione modulare in C • Conoscenza dei paradigmi di programmazione ricorsiva, dinamica e greedy • Abilità di problem solving mediante progetto di strutture dati e algoritmi • Abilità nelle tecniche di programmazione ricorsiva, dinamica e greedy • Abilità di utilizzo di strumenti di ausilio alla programmazione
• Knowledge of techniques for memory allocation and use of pointers • Programming skills in C, using pointers and dynamic data structures • Knowledge of basic complexity analysis • Knowledge of sorting algorithms • Ability to evaluate algorithm complexity and improve efficiency in terms of execution time and/or memory use • Knowledge of complex data structures and ADTs (linked lists, queues, stacks, heaps, trees, hash tables and graphs) and related algorithms • Knowledge of simple strategies for modular programming in C • Knowledge of recursive, dynamic programming and greedy problem-solving paradigms • Skills in problem solving, based on design of data structures and algorithms • Skills in recursive programming techniques • Skills to exploit tools for program development
Vista la natura incrementale di questo corso rispetto a quello del I anno “Informatica”, vi sono prerequisiti stringenti in termini di abilità di programmazione e conoscenza del linguaggio C, in particolare: • Architettura elementare dei sistemi di elaborazione (modello di Von Neumann) • Sintassi, tipi di dato e costrutti base del linguaggio C • Capacità di sviluppare semplici programmi in C, utilizzando costrutti condizionali e iterativi, dati scalari a aggregati, I/O standard, file testo e funzioni • Capacità di soluzione di problemi (algoritmici) elementari
Due to the incremental nature of the course with respect to the first year class “Computer Science”, there are several strict prerequisites in terms of programming skills and programming language knowledge, with particular emphasis on the following topics: • Elementary computer systems architecture (Von Neumann model) • Syntax of C, basic data types and constructs • Basic programming skills in C, using conditional and iterative constructs, scalar and aggregate data, standard I/O, text files and functions • Skills in elementary (algorithmic) problem solving
• Costrutti fondamentali del linguaggio C e problem-solving elementare (11h) • Analisi di algorítmi (3h) o analisi asintotica di complessità di caso peggiore o notazione O, Omega, Theta o equazioni alle ricorrenze • Algoritmi di ordinamento (8h) o ordinamenti iterativi (bubble sort, selection sort, insertion sort, shell sort, counting sort) o ordinamenti ricorsivi (mergesort, quicksort, heapsort) • Strutture dati statiche e dinamiche e loro realizzazione in C (15h) o rappresentazione dei dati in memoria e gestione della memoria in runtime o puntatori (o riferimento a oggetti) o allocazione di memoria statica, su stack, e dinamica o strutture linkate o strategie per scegliere la struttura dati • Modularità e realizzazione modulare di algoritmi e strutture dati (10h) o il modello implementazione-interfaccia-client o la realizzazione di un programma C con più sorgenti e header file o utilizzo elementare di strumenti di sviluppo e debug: es. make, gdb, cvs • Ricorsione e programmi ricorsivi (10h) o il concetto di ricorsione o funzioni matematiche ricorsive o procedure ricorsive semplici o backtrack e implementazione della ricorsione • Matematica discreta (4h) o insiemi, relazioni, funzioni o grafi e alberi, liste • Oggetti astratti, collezioni di oggetti e ADT (10h) o esempi modulari di strutture composte quali vettori di liste, multiliste o liste, stack, code FIFO, code generalizzate, code a priorità, heap • Paradigmi algoritmici (12h) o divide et impera o il paradigma della programmazione dinamica o il paradigma greedy • Problem solving (14h) o strategie di analisi e di definizione di strutture dati e algoritmi o problemi di ricerca e di ottimizzazione o tecniche di esplorazione dello spazio delle possibilità basate su calcolo combinatorio e ricorsione • Strutture dati per tabelle di simboli (8h) o Alberi Binari di Ricerca o Tabelle di hash • Teoria dei grafi (15h) o rappresentazione dei grafi o visite in profondità e ampiezza e loro applicazioni o cammini minimi o alberi ricoprenti minimi.
• Review of basic language construct and basic problem solving (11h) • Algorithm analysis (3h) o Asymptotic worst-case complexity analysis o O, Omega, Theta notations o Recurrence equations • Sorting algorithms (8h) o Iterative sorting (bubble sort, selection sort, insertion sort, shell sort, counting sort) o Recursive sorting (mergesort, quicksort, heapsort) • Static and dynamic data structures and their implementation in C (15h) o Data representation in memory and runtime memory management o Pointers (or references to objects) o Static, on stack and dynamic memory allocation o Linked structures o Strategies for data structure selection • Modularity and modular implementation of algorithms and data structures (10h) o The implementation-interface-client model o Implementation in C of programs with multiple source and header files o Basic use of development and debug tools, like make, gdb, cvs • Recursion and recursive programs (10h) o The notion of recursion o Mathematical recursive functions o Simple recursive procedures o Backtrack and implementation of recursion • Discrete mathematics (4h) o Sets, relations, functions o Lists, graphs and trees • Abstract objects, collections of objects and ADTs (10h) o Modular examples of composed structures, like arrays of lists and multilists o Linked lists, stacks, FIFO queues, generalized queues, priority queues, heaps • Algorithmic paradigms (12h) o Divide and conquer o Dynamic Programming o Greedy • Problem solving (14h) o Analysis and definition of strategies for data structures and algorithms o Search and optimization problems o Techniques to explore the state space based on combinatorics • Data structures for symbol tables (8h) o Binary search trees o Hash tables • Graph theory (15h) o Graph representation o Depth-first and breadth-first search and their applications o Shortest paths o Minimum spanning trees.
Le lezioni (80h) sono comprensive di esercitazioni integrate. Lezioni e laboratori (20h) sono integrate con ulteriori 20h per consolidamento delle nozioni apprese. Alcuni dei laboratori possono essere valutati e dare adito ad un bonus di al massimo 2/30.
Lectures (80h) include practice lessons. Lectures and lab sessions (20h) are extended with 20 additional hours to consolidate what the student has learned. Selected lab sessions may be ranked and contribute a bonus (max 2/30).
Testi di riferimento: • Deitel & Deitel, ‘Corso completo di programmazione C’, Apogeo, 2010 • P. Camurati, S. Quer, ‘Algoritmi e Programmazione: richiami di teoria con esercizi svolti’, CLUT, IV edizione, 2017 • G. Cabodi, P. Camurati, P. Pasini, D. Patti, D. Vendraminetto, ‘Dal problema al programma: introduzione al problem-solving in linguaggio C’, Apogeo, II edizione, 2016 • G. Cabodi, P. Camurati, P. Pasini, D. Patti, D. Vendraminetto, ‘Ricorsione e problem-solving: strategie algoritmiche in linguaggio C’, Apogeo, 2015 • G. Cabodi, P. Camurati, P. Pasini, D. Patti, D. Vendraminetto, ‘Puntatori e strutture dati dinamiche: allocazione della memoria e modularità in linguaggio C’, Apogeo, 2016 • G. Cabodi, P. Camurati, P. Pasini, D. Patti, D. Vendraminetto, ‘Algoritmi in pratica: da specifiche a codice C', Apogeo, 2018 Altri testi suggeriti: • R. Sedgewick, ‘Algoritmi in C’, IV edizione, Pearson, 2015 • T.H.Cormen, C.E.Leiserson, R.L.Rivest, C. Stein, ‘Introduzione agli Algoritmi e alle Strutture Dati’, III edizione, Mc-Graw Hill, 2010 • P. Crescenzi, G. Gambosi, R. Grossi, ‘Strutture di dati e algoritmi’, Pearson Addison-Wesley 2006 • R. Sedgewick, K. Wayne, ‘Algorithms Part I & II’, www.coursera.org (in inglese) • A. Bertossi, A. Montresor, ‘Algoritmi e strutture di dati’, Città Studi edizioni, 2014 Materiale didattico a disposizione su Web: • trasparenze proiettate in aula • esercizi e soluzioni • videolezioni (a.a. 2019/20)
Textbooks (in Italian): • Deitel & Deitel, ‘Corso completo di programmazione C’, Apogeo, 2010 • P. Camurati, S. Quer, ‘Algoritmi e Programmazione: richiami di teoria con esercizi svolti’, CLUT, IV edizione, 2017 • G. Cabodi, P. Camurati, P. Pasini, D. Patti, D. Vendraminetto, ‘Dal problema al programma: introduzione al problem-solving in linguaggio C’, Apogeo, II edizione, 2016 • G. Cabodi, P. Camurati, P. Pasini, D. Patti, D. Vendraminetto, ‘Ricorsione e problem-solving: strategie algoritmiche in linguaggio C’, Apogeo, 2015 • G. Cabodi, P. Camurati, P. Pasini, D. Patti, D. Vendraminetto, ‘Puntatori e strutture dati dinamiche: allocazione della memoria e modularità in linguaggio C’, Apogeo, 2016 • G. Cabodi, P. Camurati, P. Pasini, D. Patti, D. Vendraminetto, ‘Algoritmi in pratica: da specifiche a codice C', Apogeo, 2018 Other suggested readings: • R. Sedgewick, ‘Algoritmi in C’, IV edizione, Pearson, 2015 (in Italian) • T.H.Cormen, C.E.Leiserson, R.L.Rivest, C. Stein, ‘Introduzione agli Algoritmi e alle Strutture Dati’, III edizione, Mc-Graw Hill, 2010 (in Italian) • P. Crescenzi, G. Gambosi, R. Grossi, ‘Strutture di dati e algoritmi’, Pearson Addison-Wesley 2006 (in Italian) • R. Sedgewick, K. Wayne, ‘Algorithms Part I & II’, www.coursera.org (in English) • A. Bertossi, A. Montresor, ‘Algoritmi e strutture di dati’, Città Studi edizioni, 2014 (in Italian) Teaching material available on the Web: • Lecture transparencies • Exercises and solutions • Videolectures (academic year 2019/20)
Modalità di esame: Prova orale obbligatoria; Prova scritta a risposta aperta o chiusa tramite PC con l'utilizzo della piattaforma di ateneo Exam integrata con strumenti di proctoring (Respondus);
Struttura dell’esame L’esame, di durata massima 2h30, si compone di: • esame scritto suddiviso in 2 parti in sequenza: teoria (50 minuti) e programmazione (max 100 minuti) • esame orale obbligatorio. Esame scritto • teoria: svolgimento di esercizi relativi all’applicazione di algoritmi a semplici problemi (max 12 punti) • programmazione: 2 modalità alternative: o orientata al progetto: progettazione e realizzazione di un programma in grado di risolvere un problema (max 18 punti) o orientata alla padronanza del C avanzato (puntatori, allocazione dinamica, ricorsione), delle strutture dati e degli algoritmi fondamentali (max 12 punti) La preparazione richiesta per entrambe le parti è la stessa. Esame orale • accertamento delle conoscenze acquisite durante il corso in termini di comprensione dei concetti e di loro esposizione, scrittura di codice C atto alla risoluzione di problemi di complessità compatibile con la durata dell’esame. Modalità di svolgimento dell’esame scritto in remoto L’esame scritto sarà a risposta aperta tramite PC con l'utilizzo della piattaforma di ateneo Exam integrata con strumenti di proctoring (Respondus). Le 2 parti (teoria e programmazione) saranno svolte in sequenza. Per tener conto di eventuali problemi di accesso, la parte di teoria e quella di programmazione verranno rese disponibili per una finestra temporale maggiore della loro durata (indicativamente 65 minuti per la teoria e 120 minuti per la programmazione). Una volta iniziata l’una o l’altra parte, la durata è quella specificata (50 o 100 minuti). In ciascuna delle 2 parti il candidato potrà scorrere le domande avanti e indietro non essendo imposta alcuna sequenzialità. Materiale consultabile durante lo scritto: I docenti indicheranno di volta in volta le modalità di consultazione, eventualmente online, di riferimenti per il linguaggio C, come pure l'utilizzo di interfacce (file header) per librerie personali. NON è possibile consultare altri testi, appunti, dispense, etc. NON è possibile utilizzare supporti di tipo elettronico oltre al PC (cellulari, palmari, portatili, etc.) Sperimentazione della piattaforma Exam con Respondus Come indicato nelle norme di Ateneo, lo studente è tenuto: • a verificare con largo anticipo di essere dotato degli strumenti hardware, software e di rete necessari allo svolgimento dell’esame • ad effettuare una simulazione, sul portale della didattica nella sezione "Esami in Remoto”, per poter identificare e risolvere eventuali criticità. Una simulazione con soluzioni di un appello passato erogata in remoto è disponibile sulla pagina del corso. In caso si riscontrino problemi, per questioni di dotazione hardware/software/rete lo studente deve aprire un ticket come indicato nelle norme di Ateneo. Nel caso si riscontrino problemi specifici al corso di Algoritmi, lo studente invii al più presto una segnalazione ad algoritmi@polito.it Comportamento in caso di problemi tecnici Nel caso insorgano problemi in fase di esame: • lo studente non riesce a connettersi correttamente alla piattaforma Exam con Respondus: innanzitutto è opportuno riprovare più volte, ma, trascorsi non più di 10 minuti dall’inizio della prova deve contattare via e-mail algoritmi@polito.it per segnalarlo • se lo studente non risulta essersi connesso dal log della piattaforma Exam con Respondus e se non ha segnalato alcuna difficoltà, lo si considera non presentato all’appello • se lo studente si connette correttamente alla piattaforma Exam con Respondus, ma poi insorgono problemi tecnici (es. mancanza di connessione) che non consentano il regolare svolgimento della prova di esame, vale quanto definito nelle norme di Ateneo del 30 maggio 2020 al punto c). In particolare lo studente deve segnalare IMMEDIATAMENTE il problema direttamente mediante messaggio ad algoritmi@polito.it. Se il problema sussiste ed impedisce di portare a termine l’esame, successivamente dovrà presentare specifica autocertificazione, di cui l’Ateneo fornisce fac-simile, in cui siano riportati con precisione la tipologia di problemi riscontrati, l’orario in cui i problemi si sono verificati, indirizzo del luogo dove si è svolta la prova e indicazione del provider per consentire l’eventuale effettuazione di controlli. Tale documento dovrà essere trasmesso ad algoritmi@polito.it entro 60 minuti dal termine dell’esame. Comunicazione con i docenti durante l’esame Una volta fatto accesso alla piattaforma Exam con Respondus per ciascuna delle 2 parti di teoria e programmazione, sarà reso disponibile un link a una Virtual Classroom in cui docenti e studenti potranno comunicare mediante un canale opportuno. Sarà comunque disabilitata qualsiasi forma di comunicazione tra studenti mediante Virtual Classroom. Si suggerisce di avere a disposizione carta e penna nel caso in cui per la soluzione dei vari esercizi fossero necessari passaggi intermedi su carta, prima di riportare la soluzione su Exam. Si ricordi che viene valutato esclusivamente ciò che è caricato sulla piattaforma Exam. Al termine dello scritto, lo studente riceve tramite la piattaforma Exam un file .pdf con il suo elaborato. In seguito deve caricare sul Portale entro tre giorni dalla data dello scritto: • una relazione (max 3 pagine) sulla soluzione adottata (strutture dati, algoritmo, etc.) • una copia del programma corretto, con evidenziate le modifiche rispetto al programma consegnato. Qualora lo studente non carichi il materiale indicato entro la data prevista, la prova scritta non viene corretta. Criterio di ammissione all'orale: votoTeoria ≥ soglia1 && votoC ≥ soglia2 && votoTeoria + votoC ≥ 15/30 soglia1 e soglia2 definite di volta in volta in funzione della difficoltà degli esercizi. L'esame orale si svolge indicativamente 7-10 giorni dopo lo scritto. Il calendario viene reso disponibile in contemporanea alla pubblicazione degli esiti dell'esame scritto. Modalità di svolgimento dell’esame orale in remoto L’esame orale si svolge mediante l’uso di Virtual Classroom, disponibile sulla pagina del corso. Quando invitato dai docenti, lo studente dovrà entrare nella Virtual Classroom e identificarsi mediante documento che verrà confrontato con la foto disponibile nell’elenco studenti del corso. Un estraneo alla Commissione d’esame sarà presente e/o l’esame sarà registrato. Lo studente deve dichiarare che non sta usando alcuno strumento di ausilio e che nella stanza non vi è alcuna persona di supporto. Valutazione finale La valutazione è complessiva ed integra, non media, i risultati nelle singole parti di cui consta l’esame. Eventuali bonus per laboratori valutati non sono additivi, bensì inclusi nella valutazione complessiva.
Exam: Compulsory oral exam; Computer-based written test with open-ended questions or multiple-choice questions using the Exam platform and proctoring tools (Respondus);
Exam structure The exam, lasting at most 2h30, consists of: • a written exam divided into 2 parts in sequence: theory (50 minutes) and programming (max 100 minutes) • a mandatory oral exam. Written exam • theory: exercises applying algorithms to simple problems (max 12 points) • programming: 2 alternative modes: o project-oriented: design and implementation of a program capable of solving a problem (max 18 points) o oriented to mastering advanced features of C (pointers, dynamic allocation, recursion), data structures and fundamental algorithms (max 12 points) The preparation required for both modes is the same. Oral exam • assessment of the knowledge acquired during the course in terms of understanding the concepts and their exposure, writing C code to solve problems whose complexity is compatible with the duration of the exam. Mode for online written exams The written exam will be open-ended via PC with the use of the integrated Exam platform with proctoring tools (Respondus). The 2 parts (theory and programming) will be carried out in sequence. To take into account any access problems, the theory and programming parts will be available for a time window longer than their duration (approximately 65 minutes for the theory part and 120 minutes for the programming part). Once one or the other part has started, the duration is the specified one (50 or 100 minutes). In each of the 2 parts the candidate will be able to scroll the questions forward and backward since no sequencing is imposed. Material available during the written exam: The teachers will indicate at each "appello" how to consult references, possibly online for the C language, as well as how to use interfaces (header files) for personal libraries. It is forbidden to consult other texts, notes, handouts, etc. It is forbidden to use electronic media in addition to the PC (cell phones, PDAs, laptops, etc.) Testing of the Exam platform with Respondus As indicated by Politecnico, the student is required: • to verify well in advance that he/she is equipped with hardware, software and network tools necessary for the examination • to perform a simulation, on the teaching portal in the "Remote Exams" section, in order to be able to identify and resolve any critical issues. A simulation with solutions of a past exam delivered online is available on the course page. In case of problems, the student must open a ticket for hardware / software / network issues as indicated by Politecnico rules. If the student encounters specific problems with this course, he/she should send an e-mail as soon as possible to algoritmi@polito.it. Behavior in case of technical problems If problems arise during the examination: • the student cannot successfully connect to the Exam platform with Respondus: first of all it is appropriate to retry several times, but, after no more than 10 minutes from the start of the test, the student must contact algoritmi@polito.it by e-mail to report it • if the student is not logged in from the log of the Exam platform with Respondus and if he/she has not reported any difficulty, it is assumed that he/she has not sat for the exam • if the student successfully connects to the Exam platform with Respondus, but then technical problems occur (e.g. lack of connection) that do not allow the smooth running of the exam, as defined in Politenico May 30 rules point c), the student must IMMEDIATELY send an e-mail to algoritmi@polito.it. If the problem persists and prevents the exam from being completed, subsequently the student must submit a self-certification (Politecnico has a facsimile). In the document the student must accurately report the type of problems encountered, the time when the problems occurred, the address of the place where the test took place and the indication of the provider to allow to carry out checks. This document must be sent to algoritmi@polito.it within 60 minutes after the end of the exam. Communication with teachers during the exam Once the student has accessed the Exam platform with Respondus for each of the 2 parts, a link will be made available to a Virtual Classroom where teachers and students communicate over an appropriate channel. However, any form of communication between students through Virtual Classroom will be disabled. It is suggested to have pen and paper available in case they are needed for the solution of exercises or for intermediate steps on paper required before uploading the solution on Exam. Only what is loaded on the Exam platform will be evaluated. At the end of the written exam, the student receives through the Exam platform a .pdf file with his/her work. He/she must then upload onto the course web portal "Portale della didatica" within three days of the date of the written exam: • a report (max 3 pages) on the solution adopted (data structures, algorithm, etc.) • a copy of the correct program, highlighting changes with respect to the original program. If the student does not upload the material by the scheduled date, the written exam will not be evaluated. Admission criteria to the oral exam: Theory Mark ≥ threshold1 && C Mark ≥ threshold2 && Theory Mark + C Mark ≥ 15/30 threshold1 and threshold2 defined at each "appello" according to the difficulty of the exercises. The oral exam takes place approximately 7-10 days after the written one. The timetable is made available at the same time as the results of the written exam are published. Mode for online oral exams The oral exam takes place using Virtual Classroom, available on the course page. When invited by the teachers, the student must enter the Virtual Classroom and identify him/herself by showing and ID document which will be compared with the photo available in the student list of the course. A person not belonging to the exam board will be present and / or the exam will be recorded. The student must declare that he/she is not using any tool and that there is no support person in the room. Final evaluation The final mark is global and does not average, rather it integrates the results in the single parts of the exam. Any bonuses for assessed laboratories are not added, rather they are included in the final mark.
Modalità di esame: Test informatizzato in laboratorio; Prova orale obbligatoria; Prova scritta a risposta aperta o chiusa tramite PC con l'utilizzo della piattaforma di ateneo Exam integrata con strumenti di proctoring (Respondus);
Struttura dell’esame L’esame, di durata massima 2h30, si compone di: • esame scritto suddiviso in 2 parti in sequenza: teoria (50 minuti) e programmazione (max 100 minuti) • esame orale obbligatorio. Esame scritto • teoria: svolgimento di esercizi relativi all’applicazione di algoritmi a semplici problemi (max 12 punti) • programmazione: 2 modalità alternative: o orientata al progetto: progettazione e realizzazione di un programma in grado di risolvere un problema (max 18 punti) o orientata alla padronanza del C avanzato (puntatori, allocazione dinamica, ricorsione), delle strutture dati e degli algoritmi fondamentali (max 12 punti) La preparazione richiesta per entrambe le parti è la stessa. Esame orale • accertamento delle conoscenze acquisite durante il corso in termini di comprensione dei concetti e di loro esposizione, scrittura di codice C atto alla risoluzione di problemi di complessità compatibile con la durata dell’esame. Modalità di svolgimento dell’esame scritto L’esame scritto sarà a risposta aperta tramite PC con l'utilizzo della piattaforma di ateneo Exam integrata con strumenti di proctoring (Respondus). Le 2 parti (teoria e programmazione) saranno svolte in sequenza. Per tener conto di eventuali problemi di accesso, la parte di teoria e quella di programmazione verranno rese disponibili per una finestra temporale maggiore della loro durata (indicativamente 65 minuti per la teoria e 120 minuti per la programmazione). Una volta iniziata l’una o l’altra parte, la durata è quella specificata (50 o 100 minuti). In ciascuna delle 2 parti il candidato potrà scorrere le domande avanti e indietro non essendo imposta alcuna sequenzialità. L'esame scritto sarà svolto contemporaneamente in remoto e in presenza, quest'ultima in locali dell'Ateneo dotati di adeguate attrezzature, quali i LAIB. Materiale consultabile durante lo scritto: I docenti indicheranno di volta in volta le modalità di consultazione, eventualmente online, di riferimenti per il linguaggio C, come pure l'utilizzo di interfacce (file header) per librerie personali. NON è possibile consultare altri testi, appunti, dispense, etc. NON è possibile utilizzare supporti di tipo elettronico oltre al PC (cellulari, palmari, portatili, etc.) Sperimentazione della piattaforma Exam con Respondus per esame scritto in remoto Come indicato nelle norme di Ateneo, lo studente è tenuto: • a verificare con largo anticipo di essere dotato degli strumenti hardware, software e di rete necessari allo svolgimento dell’esame • ad effettuare una simulazione, sul portale della didattica nella sezione "Esami in Remoto”, per poter identificare e risolvere eventuali criticità. Una simulazione con soluzioni di un appello passato erogata in remoto è disponibile sulla pagina del corso. In caso si riscontrino problemi, per questioni di dotazione hardware/software/rete lo studente deve aprire un ticket come indicato nelle norme di Ateneo. Nel caso si riscontrino problemi specifici al corso di Algoritmi, lo studente invii al più presto una segnalazione ad algoritmi@polito.it Comportamento in caso di problemi tecnici per esame scritto in remoto Nel caso insorgano problemi in fase di esame: • lo studente non riesce a connettersi correttamente alla piattaforma Exam con Respondus: innanzitutto è opportuno riprovare più volte, ma, trascorsi non più di 10 minuti dall’inizio della prova deve contattare via e-mail algoritmi@polito.it per segnalarlo • se lo studente non risulta essersi connesso dal log della piattaforma Exam con Respondus e se non ha segnalato alcuna difficoltà, lo si considera non presentato all’appello • se lo studente si connette correttamente alla piattaforma Exam con Respondus, ma poi insorgono problemi tecnici (es. mancanza di connessione) che non consentano il regolare svolgimento della prova di esame, vale quanto definito nelle norme di Ateneo del 30 maggio 2020 al punto c). In particolare lo studente deve segnalare IMMEDIATAMENTE il problema direttamente mediante messaggio ad algoritmi@polito.it. Se il problema sussiste ed impedisce di portare a termine l’esame, successivamente dovrà presentare specifica autocertificazione, di cui l’Ateneo fornisce fac-simile, in cui siano riportati con precisione la tipologia di problemi riscontrati, l’orario in cui i problemi si sono verificati, indirizzo del luogo dove si è svolta la prova e indicazione del provider per consentire l’eventuale effettuazione di controlli. Tale documento dovrà essere trasmesso ad algoritmi@polito.it entro 60 minuti dal termine dell’esame. Comportamento in caso di problemi tecnici per esame scritto in presenza Nel caso insorgano problemi in fase di esame: • lo studente avverte immediatamente i docenti che vigilano. Comunicazione con i docenti durante l’esame In remoto: una volta fatto accesso alla piattaforma Exam con Respondus per ciascuna delle 2 parti di teoria e programmazione, sarà reso disponibile un link a una Virtual Classroom in cui docenti e studenti potranno comunicare mediante un canale opportuno. Sarà comunque disabilitata qualsiasi forma di comunicazione tra studenti mediante Virtual Classroom. In presenza: sono presenti docenti che vigilano cui lo studente si può rivolgere. Si suggerisce di avere a disposizione carta e penna nel caso in cui per la soluzione dei vari esercizi fossero necessari passaggi intermedi su carta, prima di riportare la soluzione su Exam. Si ricordi che viene valutato esclusivamente ciò che è caricato sulla piattaforma Exam. Al termine dello scritto, lo studente riceve tramite la piattaforma Exam un file .pdf con il suo elaborato. In seguito deve caricare sul Portale entro tre giorni dalla data dello scritto: • una relazione (max 3 pagine) sulla soluzione adottata (strutture dati, algoritmo, etc.) • una copia del programma corretto, con evidenziate le modifiche rispetto al programma consegnato. Qualora lo studente non carichi il materiale indicato entro la data prevista, la prova scritta non viene corretta. Criterio di ammissione all'orale: votoTeoria ≥ soglia1 && votoC ≥ soglia2 && votoTeoria + votoC ≥ 15/30 soglia1 e soglia2 definite di volta in volta in funzione della difficoltà degli esercizi. L'esame orale si svolge indicativamente 7-10 giorni dopo lo scritto. Il calendario viene reso disponibile in contemporanea alla pubblicazione degli esiti dell'esame scritto. Modalità di svolgimento dell’esame orale in remoto L’esame orale si svolge mediante l’uso di Virtual Classroom, disponibile sulla pagina del corso. Quando invitato dai docenti, lo studente dovrà entrare nella Virtual Classroom e identificarsi mediante documento che verrà confrontato con la foto disponibile nell’elenco studenti del corso. Un estraneo alla Commissione d’esame sarà presente e/o l’esame sarà registrato. Lo studente deve dichiarare che non sta usando alcuno strumento di ausilio e che nella stanza non vi è alcuna persona di supporto. Modalità di svolgimento dell’esame orale in presenza L’esame orale si svolge in un'aula. Valutazione finale La valutazione è complessiva ed integra, non media, i risultati nelle singole parti di cui consta l’esame. Eventuali bonus per laboratori valutati non sono additivi, bensì inclusi nella valutazione complessiva.
Exam: Computer lab-based test; Compulsory oral exam; Computer-based written test with open-ended questions or multiple-choice questions using the Exam platform and proctoring tools (Respondus);
Exam structure The exam, lasting at most 2h30, consists of: • a written exam divided into 2 parts in sequence: theory (50 minutes) and programming (max 100 minutes) • a mandatory oral exam. Written exam • theory: exercises applying algorithms to simple problems (max 12 points) • programming: 2 alternative modes: o project-oriented: design and implementation of a program capable of solving a problem (max 18 points) o oriented to mastering advanced features of C (pointers, dynamic allocation, recursion), data structures and fundamental algorithms (max 12 points) The preparation required for both modes is the same. Oral exam • assessment of the knowledge acquired during the course in terms of understanding the concepts and their exposure, writing C code to solve problems whose complexity is compatible with the duration of the exam. Mode for written exams The written exam will be open-ended via PC with the use of the integrated Exam platform with proctoring tools (Respondus). The 2 parts (theory and programming) will be carried out in sequence. To take into account any access problems, the theory and programming parts will be available for a time window longer than their duration (approximately 65 minutes for the theory part and 120 minutes for the programming part). Once one or the other part has started, the duration is the specified one (50 or 100 minutes). In each of the 2 parts the candidate will be able to scroll the questions forward and backward since no sequencing is imposed. The written exam will be carried out simultaneously online and onsite, the latter in University premises equipped with adequate equipment, such as LAIB. Material available during the written exam: The teachers will indicate at each "appello" how to consult references, possibly online for the C language, as well as how to use interfaces (header files) for personal libraries. It is forbidden to consult other texts, notes, handouts, etc. It is forbidden to use electronic media in addition to the PC (cell phones, PDAs, laptops, etc.) Testing of the Exam platform with Respondus As indicated by Politecnico, the student is required: • to verify well in advance that he/she is equipped with hardware, software and network tools necessary for the examination • to perform a simulation, on the teaching portal in the "Remote Exams" section, in order to be able to identify and resolve any critical issues. A simulation with solutions of a past exam delivered online is available on the course page. In case of problems, the student must open a ticket for hardware / software / network issues as indicated by Politecnico rules. If the student encounters specific problems with this course, he/she should send an e-mail as soon as possible to algoritmi@polito.it. Behavior in case of technical problems during the online written exam If problems arise during the examination: • the student cannot successfully connect to the Exam platform with Respondus: first of all it is appropriate to retry several times, but, after no more than 10 minutes from the start of the test, the student must contact algoritmi@polito.it by e-mail to report it • if the student is not logged in from the log of the Exam platform with Respondus and if he/she has not reported any difficulty, it is assumed that he/she has not sat for the exam • if the student successfully connects to the Exam platform with Respondus, but then technical problems occur (e.g. lack of connection) that do not allow the smooth running of the exam, as defined in Politenico May 30 rules point c), the student must IMMEDIATELY send an e-mail to algoritmi@polito.it. If the problem persists and prevents the exam from being completed, subsequently the student must submit a self-certification (Politecnico has a facsimile). In the document the student must accurately report the type of problems encountered, the time when the problems occurred, the address of the place where the test took place and the indication of the provider to allow to carry out checks. This document must be sent to algoritmi@polito.it within 60 minutes after the end of the exam. Behavior in case of technical problems during the onsite written exam If problems arise during the examination: • the student immediately informs the supervising teachers. Communication with teachers during the exam Online: once the student has accessed the Exam platform with Respondus for each of the 2 parts, a link will be made available to a Virtual Classroom where teachers and students communicate over an appropriate channel. However, any form of communication between students through Virtual Classroom will be disabled. Onsite: there are teachers who supervise the students. It is suggested to have pen and paper available in case they are needed for the solution of exercises or for intermediate steps on paper required before uploading the solution on Exam. Only what is loaded on the Exam platform will be evaluated. At the end of the written exam, the student receives through the Exam platform a .pdf file with his/her work. He/she must then upload onto Portal within three days of the date of the written exam: • a report (max 3 pages) on the solution adopted (data structures, algorithm, etc.) • a copy of the correct program, highlighting changes with respect to the original program. If the student does not upload the material by the scheduled date, the written exam will not be evaluated. Admission criteria to the oral exam: Theory Mark ≥ threshold1 && C Mark ≥ threshold2 && Theory Mark + C Mark ≥ 15/30 threshold1 and threshold2 defined at each "appello" according to the difficulty of the exercises. The oral exam takes place approximately 7-10 days after the written one. The timetable is made available at the same time as the results of the written exam are published. Mode for online oral exams The oral exam takes place using Virtual Classroom, available on the course page. When invited by the teachers, the student must enter the Virtual Classroom and identify him/herself by showing and ID document which will be compared with the photo available in the student list of the course. A person not belonging to the exam board will be present and / or the exam will be recorded. The student must declare that he/she is not using any tool and that there is no support person in the room. Mode for onsite oral exams The oral exam takes place in a classroom. Final evaluation The final mark is global and does not average, rather it integrates the results in the single parts of the exam. Any bonuses for assessed laboratories are not added, rather they are included in the final mark.


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