---+ Fondamenti di Programmazione 1 - AA 17-18 ---++ AVVISI Tutti gli avvisi verranno inseriti nel forum nella pagina http://q2a.di.uniroma1.it/fondamenti-di-programmazione/avvisi %RED% *Prossimi esami* * *Mercoledì 7 novembre* lab. 15 e 17 via Tiburtina 205 * *prova di recupero dalle 9 alle 13* per partecipare dovete [[Prenotazioni/2018_11_07_ProvaDiRecuperoFondamentiDiProgrammazione][PRENOTARVI QUI]] * *prova di esame dalle 14.30 alle 18* per partecipare dovete [[https://stud.infostud.uniroma1.it][prenotarvi su INFOSTUD]] * *fine ottobre/inizio novembre* (appello speciale ma aperto a tutti) __NOTA__ nella verbalizzazione degli esami (che devo chiudere e firmare digitalmente) uso questo schema: * RINUNCIA: ha svolto almeno parte dell'esame ma deve completare il resto in un appello successivo * ASSENTE: non ha partecipato ad alcuna prova d'esame in questo appello * BOCCIATO: non lo uso (potrei usarlo per i compiti troppo simili) %FINE% ---+++ Programma di massima Introduzione alla programmazione tramite il linguaggio Python. Tipi di dati, variabili, assegnamenti, strutture di controllo, funzioni, classi, moduli e Input/Output. Strutture dati: vettori, stringhe, liste e dizionari. Progettazione e sviluppo di programmi tramite programmazione procedurale e orientata agli oggetti. Librerie di Python per la grafica, per la gestione dei file, per l'elaborazione di testi/html e per l'accesso ad Internet. Debugging e testing di programmi. ---+++ Diario delle lezioni * [[Diario delle lezioni - canale AL]] (Sterbini) * [[Diario delle lezioni - canale MZ]] (Monti) * [[Diario delle esercitazioni]] (Spognardi + i docenti) ---+++ Amministrazione ---++++ Docenti * Canale AL: Users.AndreaSterbini (ric. studenti martedì dalle 15 alle 18, via Salaria 113, stanza 314b) * Canale MZ: Users.AngeloMonti (ric. studenti martedì dalle 15 alle 18, via Salaria 113, stanza 335) * Laboratorio: Users.AngeloSpognardi * Teledidattica: Users.AngeloMonti ---++++ Aule e calendario didattico Le lezioni del corso iniziano *martedì 26 settembre 2017*. Le lezioni si tengono: * Canale AL: martedì e venerdì dalle 10.30 alle 13, aula P1 (città universitaria, a fianco del parcheggio sotterraneo) * Canale MZ: martedì e venerdì dalle 10.30 alle 13, aula P2 (città universitaria, a fianco del parcheggio sotterraneo) * Laboratorio: mercoledì dalle 9 alle 13 e dalle 13 alle 17, laboratori 15 e 17, [[https://goo.gl/maps/osh7zZziBu82][via Tiburtina 205]] * __ATTENZIONE:__ il laboratorio verrà usato dai due canali a mattine/pomeriggi alterni (vedi http://q2a.di.uniroma1.it/20/uso-dei-laboratori-in-via-tiburtina-da-parte-dei-due-canali) * __ATTENZIONE:__ la prima lezione in laboratorio si terrà *mercoledì 4 ottobre* ---+++ Prerequisiti È richiesta un'adeguata preparazione iniziale relativa alle materie presenti nei programmi della scuola secondaria superiore, con particolare riguardo allitaliano e alla matematica. Una discreta conoscenza dellinglese è di grande aiuto. ---+++ Testi di riferimento Anche se non necessario, il corso seguirà il materiale nell'ebook seguente, di cui consigliamo l'aquisto. * F. Pellacini, [[http://pellacini.di.uniroma1.it/books/fondamentibook16/fondamentibook16.html][Fondamenti di Programmazione in Python]] * F. Pellacini, [[http://github.com/xelatihy/fondamentibook/][Codice di Fondamenti di Programmazione in Python]] Altri libri che possono essere utili sono: * Allen B. Downey et al., [[http://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm][Pensare da Informatico]] * Guido van Rossum, [[http://docs.python.it/html/tut/tut.html][Il tutorial di Python]] * Josh Cogliati, [[http://www.python.it/doc/Easytut/easytut-it/index.html][Tutorial per principianti in Python]] * Allen B. Downey et al., [[https://github.com/AllenDowney/ThinkPythonItalian][Pensare in Python]] Siti molto molto utili * Python Tutor ( http://pythontutor.com ) ---+++ Modalità d'esame Per sostenere l'esame è possibile fare 5 homeworks ed una prova di laboratorio "piccola" oppure o una sola prova di laboratorio più lunga. È forte consiglio dei docenti usare la modalità con homeworks, ma ogni studente può scegliere come fare. ---+++ Homeworks (esercizi da svolgere a casa) Verranno pubblicati 5 homework di cui si farà la media pesata (gli homework saranno di difficoltà diversa). * Ciascun homework contiene 3 esercizi, che a loro volta possono avere difficoltà diverse. Il voto dell'Homework è la media pesata dei punti ottenuti dai test (30 se passano tutti i test). * I singoli esercizi possono ricevere un bonus extra di 4 punti, come descritto in seguito, il punteggio massimo per un homework è quindi 34. * Ogni esercizio verrà fornito in un archivio ZIP con tutti i file necessari e con un programma di verifica delle sue funzionalità (il "grader") che permette di verificare se il codice sviluppato si comporta correttamente su un certo numero di casi di test. * Ogni esercizio può essere consegnato più volte, solo l'ultima è valida. * Il codice consegnato verrà verificato usando sia i test già contenuti nel grader, che alcuni test aggiuntivi dello stesso genere. ---+++ Bonus per qualità del codice ed efficienza Per ciascun esercizio è possibile ottenere 2 punti in più se si è nel 1/4 più alto della graduatoria di chi ha consegnato quell'esercizio (compresi quelli che sono a pari merito con l'ultimo della fascia): * per minore intricatezza del codice ( [[WikipediaIt:Complessit%C3%A0_ciclomatica][complessità ciclomatica]]) * per ottenere del codice meno intricato conviene spezzarlo in funzioni più semplici * per minore tempo di esecuzione totale di tutti i test ("efficienza dell'algoritmo") * per ottenere tempi minori conviene usare algoritmi più efficienti *NOTA:* i bonus sono indipendenti vengono assegnati solo ai programmi che superano tutti i test (tempi e intricatezza non hanno senso se l'esercizio non è svolto completamente). Nel caso di esercizi in cui si chiede espressamente una soluzione ricorsiva, la ricorsione verrà verificata da opportuni test che, se non superati, ridurranno il voto dell'esercizio. ---+++ Forum di auto-aiuto e bonus per partecipazione Il corso dispone di un forum di auto-aiuto (http://q2a.di.uniroma1.it). * Registratevi sul forum usando la vostra email istituzionale (che finisce con uniroma1.it) * Potete usare il nick preferito, ma nella scheda <u>state attenti ad inserire correttamente i campi: *nome e cognome e matricola* </u> Il forum è dedicato alla discussione ed all'auto-aiuto tra gli studenti del corso. I docenti sono i moderatori del forum. * Nel forum sono disponibili appositi spazi dove è possibile scambiare domande e consigli per svolgere gli esercizi degli homework. * *E' VIETATO LO SCAMBIO DI CODICE.* <u>E' permesso lo scambio di pseudo-codice</u> (descrizione in italiano dell'algoritmo da usare). Al voto d'esame si somma un *bonus di max 2 punti* per la partecipazione attiva al forum http://q2a.di.uniroma1.it . * Si ottengono punti nel forum se: * si pongono domande utili (a giudizio dei compagni e dei docenti) * si danno risposte utili ed esaurienti (a giudizio di chi ha posto la domanda, dei compagni e dei docenti) * Domande inutili e off-topic non contribuiscono al punteggio e/o verranno eliminate a discrezione dei docenti. ---+++ Codice di Comportamento Gli studenti possono discutere con altri le soluzioni degli homework ma poi ognuno deve scrivere la soluzione per proprio conto. La discussione con gli altri non solo è permessa ma è anche incoraggiata perché è molto utile per mettere a confronto le proprie idee, per chiarire dubbi e per rendere più gradevole e stimolante lo studio. Però poi le soluzioni vanno interamente pensate, o ripensate, e scritte per proprio conto senza copiarle in tutto o in parte da altri. Anche passare la soluzione ad altri non è permesso. Infatti, sia chi ha copiato che chi si è fatto copiare incapperà nel cheating test. * Tutto il codice consegnato per gli homework verrà controllato per verificare casi di somiglianza eccessiva a giudizio insindacabile dei docenti. * Gli studenti per i quali un esercizio è valutato sospetto ricevono una ammonizione (*cartellino giallo*). * Al secondo esercizio sospetto scatta il *cartellino rosso* e lo studente deve svolgere una prova di laboratorio per confermare di essere stato in grado di svolgere l'homework. * La prova per confermare il voto degli homework consegnati ma sospetti si terrà: * Nella settimana di interruzione didattica per gli esoneri, se i due esercizi sospetti sono nei primi 2 homework * Altrimenti nella prova di esame in laboratorio, che dovrà essere sostenuto nella versione "completa/difficile" (vedi sotto) * Superando la prova si conferma il punteggio raccolto dagli esercizi sospetti, che altrimenti vengono annullati. ---+++ Prova di esame * Alla fine del corso verrà svolta una prova di programmazione in laboratorio (di 3-4 ore a seconda della disponibilità dei laboratori) in cui dovranno essere svolti alcuni esercizi. * Anche per la prova d'esame verranno assegnati fino a 2 punti "bonus" per i programmi migliori (tra quelli consegnati nella sessione) per qualità (complessità ciclomatica minore) ed efficienza (tempo di esecuzione dei test minore). (totale max 4 punti) * Per poter superare l'esame il voto della prova di laboratorio deve essere sufficiente. * La prova in laboratorio è la prova d'esame e sarà disponibile per ciascuno dei 5 appelli dall'anno accademico più i 2 appelli speciali riservati a fuori-corso, lavoratori e part-time. * Le date d'esame verranno pubblicate come per gli altri esami e per partecipare dovrete prenotarvi su Infostud. * Il risultato degli homework vale per tutto l'anno accademico. * Se gli homework danno un voto sufficiente si è direttamente ammessi alla prova d'esame (una prova di programmazione in laboratorio di 3-4 ore). * Se nel complesso gli homework non vengono superati (voto complessivo<18) allora è necessario prima svolgere una prova di recupero ---+++ Voto finale Non è previsto un esame orale. * *Per chi ha svolto gli homework* il voto finale è dato dalla media tra il voto della prova finale ed il voto degli homework (compresi bonus degli homework e bonus per partecipazione al forum). * *Chi non ha potuto svolgere gli homework* oppure chi non vuole usare il punteggio degli homework può svolgere prima la prova di recupero, che permette di recuperare un homework mancante/peggiore oppure tutti gli homework. In tal caso il voto d'esame è la media tra prova di recupero e prova d'esame. * E' permesso rifiutare il voto di una prova comunicandolo PRIMA di fare la successiva (ad esempio si possono rifiutare gli HW PRIMA di fare la prova di recupero) ---+++ Ambiente di sviluppo Per programmare useremo la distribuzione Python Anaconda che contiene Python nella versione 3.5 o 3.6 (https://www.anaconda.com/download/) In sede d'esame avrete la possibilità di usare sia l'IDE [[https://en.wikipedia.org/wiki/Spyder_(software)][Spyder]] che l'editor Notepad++, che l'ambiente IDLE. Per installare e iniziare ad eseguire i programmi in Python vedete la pagina PrimiPassi ---
This topic: Programmazione1/AA17_18
>
WebHome
Topic revision: r41 - 2018-10-28 - AndreaSterbini
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback