[AVVISO] Homework 2 obbligatorio (scaduto)

andrea.sterbini (172780 points)
513 935 1789
asked Oct 24, 2019 in Avvisi by andrea.sterbini (172,780 points)
edited Nov 23, 2019 by andrea.sterbini

ATTENZIONE

  • ATTENZIONE: l'algoritmo.txt dev'essere un file di testo utf8, usate direttamente spyder per editarlo
  • eventuali correzioni verranno inserite qui
  • NOTA: il programma test_01.py DISATTIVA la funzione print, quindi non vedrete stampe. Per riattivare le stampe seguite le istruzioni all'inizio dello HW1

Istruzioni

Per svolgere l'homework:

  • Installate le librerie necessarie
  • Scaricate il file HW2obb.zip e scompattatelo in una directory
    • Lo zip contiene
      • l'esercizio da svolgere, descritto all'inizio del file program01.py
        • l'esercizio consiste nel realizzare, se necessario definendo funzioni ausiliarie, la funzione descritta all'inizio del file, completandone il codice
      • altre librerie e file necessari ad eseguire i test sulla vostra macchina
  • Posizionatevi nella directory HW2obb creata unzippando l'archivio ed editate il file program01.py completando la funzione indicata
  • ATTENZIONE: il programma NON DEVE eseguire nessun input() o print(), infatti riceve tutte le informazioni di cui ha bisogno tramite i parametri della funzione che dovete completare e torna il risultato con return.
  • ATTENZIONE: SONO VIETATE le variabili globali.
  • ATTENZIONE: SONO VIETATE tutte le altre librerie a parte quelle già importate nel testo.
  • ATTENZIONE: E' VIETATO copiare codice dalle librerie di sistema.
  • ATTENZIONE: i vostri programmi NON DEVONO sfruttare eventuali periodicità o caratteristiche strutturali degli input, ma devono essere applicabili a qualsiasi input valido.
  • ATTENZIONE: NON LASCIATE ISTRUZIONI DI TEST NEL PROGRAMMA, A MENO CHE NON SIANO DOPO UNA RIGA
    • if __name__ == '__main__':
      • vostre istruzioni di test che in questo modo non vengono eseguite durante l'import del file
  • Per eseguire i test
    • aprite una finestra "Anaconda Prompt" e posizionatevi nella directory HW1opz ottenuta scompattando lo zip
    • eseguite il comando (test senza timeout)
      • pytest test_01.py -v -rA
    • oppure (test con timeout di 1 secondo per ciascun test e con una stampa dei tempi impiegati per eseguire ciascun test)
      • pytest test_01.py -v -rA --timeout 1 --durations 0
    • oppure (test con timeout di 1 secondo per ciascun test e stampa dei tempi spesi dal programma nelle 20 funzioni complessivamente più lente)
      • pytest test_01.py -v -rA --timeout 1 --profile
    • Per far fermare i test al primo errore aggiungete l'opzione -x
    • Per chi usa Spyder:
      • è possibile eseguire i test direttamente da dentro Spyder installando il plugin spyder-unittest (ma senza timeout o parametri aggiuntivi)
      • è possibile ottenere i tempi spesi in ciascuna funzione direttamente da dentro Spyder installando il plugin spyder-line-profiler

NOTA: per aprire i file di testo in formato utf8 NON usate Notepad che non riconosce gli accapi Unix ('\n') ma usate Spyder o Notepad++

Consegna

Dovrete consegnare:

  • program01.py: il programma da voi realizzato
  • algoritmo.txt: una descrizione in italiano (o se necessario in inglese) dell'algoritmo che avete realizzato. La descrizione NON deve contenere codice o pseudocodice troppo dettagliato e deve essere anonima (NON deve contenere il vostro nome/cognome/matricola/nick)
    • ATTENZIONE: l'algoritmo.txt dev'essere un file di testo utf8, usate direttamente spyder per editarlo

La pagina di consegna è https://q2a.di.uniroma1.it/homeworks/delivery?homework=2

Scadenze

  • ore 23.59 del 2/11 entro questa data dovete tutti consegnare i 2 files program01.py e algoritmo.txt
  • Nella serata del 3/11 verrà attivata la fase del peer-assessment formativo (correzione e suggerimento tra pari) e vi verranno assegnati 3 algoritmi anonimi da valutare e per i quali suggerire miglioramenti
  • ore 23.59 del 5/11 entro questa data potete inserire i vostri giudizi e suggerimenti sui 3 algoritmi e ricevere i giudizi dai vostri compagni
    • NOTA: potreste ricevere meno di 3 suggerimenti
  • ore 23.59 del 7/11 scadenza finale per indicare quanto vi sono stati utili i suggerimenti e quindi consegnare una versione migliorata del vostro programma

12 Answers

Rebecca96 (1420 points)
1 4 11
answered Oct 24, 2019 by Rebecca96 (1,420 points)
Salve professore io sono dell'anno scorso ma ho fatto e consegnato solo l'hw 1...questo obbligatorio non lo devo fare? o li devo rifare tutti?
andrea.sterbini (172780 points)
513 935 1789
commented Oct 24, 2019 by andrea.sterbini (172,780 points)
Puoi non rifarlo e fare solo gli altri.
Però ti conviene provarci e fare esercizio (e magari migliorare il voto, si tiene il migliore dei due).
Rebecca96 (1420 points)
1 4 11
commented Oct 24, 2019 by Rebecca96 (1,420 points)
grazie mille, si lo farò per esercizio infatti
m
matia plateroti (1600 points)
0 12 23
commented Oct 24, 2019 by matia plateroti (1,600 points)
quindi professore anche chi ha gia completato gli HW lo scorso anno può comunque consegnare?in quanto non rischia diminuizione del voto dato che sarà scelto il miglior voto,è corretto?
andrea.sterbini (172780 points)
513 935 1789
commented Oct 24, 2019 by andrea.sterbini (172,780 points)
esatto                       .
plm (18850 points)
7 15 118
answered Oct 24, 2019 by plm (18,850 points)
Devo ancora vederlo e ho già paura
E
Edward (25950 points)
2 4 172
answered Oct 25, 2019 by Edward (25,950 points)
Salve Professore,

osservando i tempi con pytest-profiling, ho notato che i tempi di generazione dell'input fanno parte del timer per il timeout.
In particolare nel test test_1_esempio5 la VM impiega quasi mezzo secondo (0,45s) a generare l'input, quindi il timeout effettivo è come se fosse di 1 secondo.

È intenzionale questo comportamento?
1
1886326 (110 points)
0 0 1
commented Oct 25, 2019 by 1886326 (110 points)

Ottima domanda.
Aggiungo anche che nei comandi dati sulla pagina dell'HW2 è impostato il timeout di un secondo
pytest test_01.py -v -rA --timeout 1 --durations 0
pytest test_01.py -v -rA --timeout 1 --profiling

Quando in realtà i test falliscono dopo 1.5 secondi.

andrea.sterbini (172780 points)
513 935 1789
commented Oct 25, 2019 by andrea.sterbini (172,780 points)
È un esempio, *****!
f
fraore (790 points)
2 5 13
answered Oct 25, 2019 by fraore (790 points)
Gentile professore.

le volevo chiedere se per affrontare questo HW è necessario essere arrivato a qualche lezione in particolare.

Infatti sono arrivato alla 6a videolezione e trovo un po' di difficoltà nello svolgere il compito. Forse devo necessariamente andare un po' avanti?

Grazie mille per la risposta.

Francesco Orefice
andrea.sterbini (172780 points)
513 935 1789
commented Oct 25, 2019 by andrea.sterbini (172,780 points)
Penso che devi arrivare alla 10 sui dizionari ed insiemi
Tommaso Sgroi (12990 points)
6 11 91
answered Oct 25, 2019 by Tommaso Sgroi (12,990 points)
Professore, quando faccio i test dal prompt di anaconda oppure eseguo test_01.py su spider mi dice che li ho passati tutti nel tempo prestabilito. Ma quando carico il file e viene testato mi da un test fallito a causa del timeout.

Perché?
andrea.sterbini (172780 points)
513 935 1789
commented Oct 25, 2019 by andrea.sterbini (172,780 points)
VM != laptop
n
n.rossi (650 points)
3 4 9
commented Oct 30, 2019 by n.rossi (650 points)
E' possibile confrontarsi sul tipo di algoritmo scelto? In quanto il Q2A serve proprio a questo.

Nel caso la risposta fosse positiva, rispondete al mio commento.

Saluti
R
Rebs99 (2290 points)
2 4 10
commented Nov 4, 2019 by Rebs99 (2,290 points)
Puoi partecipare al peer assessment per avere un giudizio di 3 colleghi sul tuo algoritmo.
In generale, il forum può essere utilizzato per avere consigli su determinati tipi di implementazione, ma la tua descriizione dell'algoritmo dovrà sempre rimanere su linee generiche in quanto è vietato, dalle regole del forum, lo scambio di codice o pseudocodice troppo dettagliato.
f
fraore (790 points)
2 5 13
answered Oct 28, 2019 by fraore (790 points)
Salve prof,

ho fatto una consegna con una prima versione (ancora da ottimizzare sui tempi). Cosa devo fare ora? Dove riceverò il responso?

Grazie,

Francesco
L
LorenzoLaccone (1020 points)
5 7 10
commented Oct 28, 2019 by LorenzoLaccone (1,020 points)
I risultati della tua consegna non appena saranno eseguiti i test compariranno nella sezione "Corso->Risultati" del tuo profilo su Q2A, se decidi di riconsegnare il codice successivamente, prima della scadenza, dovrai andare alla sezione "Consegne" ed effettuarne una nuova e dopo che saranno rieseguiti i test si aggiornerà la sezione "Risultati" con i nuovi valori.
andrea.sterbini (172780 points)
513 935 1789
commented Oct 28, 2019 by andrea.sterbini (172,780 points)
e naturalmente abbiate un minimo di pazienza, la VM processa le vostre consegne ogni 10 minuti
a
andreasolda (740 points)
12 17 21
commented Oct 28, 2019 by andreasolda (740 points)
Posso anche effettuare una consegna senza algoritmo txt per poi aggiungerlo in seguito per fare un primo giro in VM?
andrea.sterbini (172780 points)
513 935 1789
commented Oct 28, 2019 by andrea.sterbini (172,780 points)
non credo che accetti una consegna di un solo file.

Meglio che incominci a scriverlo e lo consegni
f
fraore (790 points)
2 5 13
commented Oct 28, 2019 by fraore (790 points)

Gentile prof!

il compito di per se non è complicatissimo. Ma i test sui tempi non sono facili da superare... ce lo dà qualche suggerimento?! 

andrea.sterbini (172780 points)
513 935 1789
commented Oct 28, 2019 by andrea.sterbini (172,780 points)
Non io. Chiedi ai colleghi. Q2a serve proprio a discutere assieme di idee ed algoritmi. (senza passare codice)
1
1920721 (330 points)
0 0 2
answered Nov 3, 2019 by 1920721 (330 points)
Salve prof,

volevo chiederle se lei come voto considererà il programma consegnato ieri o la versione finale con suggerimenti.

Saluti
a
a.pietroluongo (11250 points)
15 38 131
commented Nov 3, 2019 by a.pietroluongo (11,250 points)

La versione finale con suggerimenti

fc-dev (16450 points)
12 20 34
commented Nov 3, 2019 by fc-dev (16,450 points)
dopo la fine del PA verranno svolti i test segreti, ed è sulla base di quelli che verrà dato il voto
1
1920721 (330 points)
0 0 2
commented Nov 3, 2019 by 1920721 (330 points)
ok grazie mille
P
PierCalamo (380 points)
0 0 3
answered Nov 5, 2019 by PierCalamo (380 points)
Scusate non sono riuscito ad aggiornare il file dell'algoritmo in quanto stavo finendo di scriverlo, perche adesso non fa piu caricare niente?
P
PierCalamo (380 points)
0 0 3
answered Nov 5, 2019 by PierCalamo (380 points)
Scusate come è possibile che ieri sera (4/11) nella pagina di caricamento dell'homework 2 c'era scritto "Non ci sono consegne aperte" ...dovrei ancora caricare il file dell'algoritmo...
Christian (15220 points)
2 4 77
commented Nov 5, 2019 by Christian (15,220 points)

Ciao, la consegna scadeva alle 23.59 del 02/11/2019. In questi giorni (fino alle 23.59 di stasera) è possibile solamente inviare i feedback per i propri peer e leggere quelli che i peer hanno rilasciato per il tuo algoritmo.

Quindi se non hai consegnato l'algoritmo non potrai partecipare alla fase di PA e il tuo programma rimarrà quello consegnato.

Christian (15220 points)
2 4 77
commented Nov 5, 2019 by Christian (15,220 points)

Ti incollo quanto presente sulle regole del corso:

  • Ogni Homework obbligatorio si svolgerà come segue:
    • D-day pubblicazione dello Homework
    • 10 giorni per consegnare il codice dell'esercizio E la descrizione in italiano/inglese dell'algoritmo implementato (in cui è vietato inserire codice o indicare il proprio nome).
      NOTA: è OBBLIGATORIO consegnare la descrizione dell'algoritmo ed il programma entro i primi 10 giorni (ed è possibile consegnare più volte, vale l'ultima).
    • OPZIONALE: Chi vuole partecipare al peer-assessment ed ha già consegnato programma e algoritmo guadagna 4 giorni in più ed i consigli dei colleghi ed inoltre un possibile bonus a fine corso:
      • 2 giorni di tempo per commentare gli algoritmi di 3 compagni scelti a caso ed anonimi e dare suggerimenti efficaci per migliorare l'algoritmo (e ricevere dritte dagli algoritmi che avete letto)
      • 2 giorni di tempo per consegnare il proprio codice migliorato sulla base delle idee che avete letto e dei suggerimenti ricevuti (solo dopo che avete indicato quali commenti sono stati più utili)
  • NOTA: ripeto che la prima consegna entro 10 gg è necessaria e obbligatoria PER TUTTI anche se non si vuole partecipare al peer-assessment
P
PierCalamo (380 points)
0 0 3
commented Nov 5, 2019 by PierCalamo (380 points)
Si ma io avevo già inviato una versione del programma ed una versione dell'algoritmo

Ed in ogni caso non ho intenzione di modificare il programma, semplicemente il vecchio file dell'algoritmo non era molto esplicativo e pensavo che magari il professore lo avrebbe controllato prima di confermare il voto dato dai test(?)
P
PierCalamo (380 points)
0 0 3
commented Nov 5, 2019 by PierCalamo (380 points)
Anche perche proprio come le versioni del programma il sistema non dovrebbe considerare l'ultimo file algoritmo.txt caricato? Infatti dopo il primo upload di entrambi i file non c'è più il filtro che ti obbliga a caricare un nuovo file algoritmo ogni volta che carichiamo un nuovo programma
andrea.sterbini (172780 points)
513 935 1789
commented Nov 5, 2019 by andrea.sterbini (172,780 points)
Il file algoritmo.txt che viene valutato dai 3 compagni è l'ultimo consegnato entro il 2/11 alle 23.59.

Da stasera si riapre la consegna e potrai aggiornare il program01.py
D
Dario Scafidi (320 points)
0 0 2
answered Nov 6, 2019 by Dario Scafidi (320 points)
Salve professore,

Non so se è il posto adeguato per rivolgere questa domanda, non ho potuto partecipare a questo Homework, ho letto però che si può recuperare in un secondo momento. In merito a questo, come posso procedere? Posso dare gli altri homework (3/4/5/6..) e poi recuperare questo o devo recuperare tutti gli homework in un secondo momento? In più se può anticiparmi delle date sarebbe perfetto!

Grazie mille in anticipo!
AndreaGasparini (18730 points)
6 12 118
commented Nov 6, 2019 by AndreaGasparini (18,730 points)
Ti consiglio di leggere le regole del corso perché trovi risposte dettagliate a tutte le tue domande.

Comunque gli Homework di recupero sono per i singoli, perciò se svolgi i prossimi seguendo le scadenze dovrai farne uno solo di recupero.
a
a.pietroluongo (11250 points)
15 38 131
commented Nov 6, 2019 by a.pietroluongo (11,250 points)
Puoi consegnare gli altri homework e poi recuperare quello mancante.

Qui https://q2a.di.uniroma1.it/regole-fp1920 trovi le date