[HOMEWORK] Homework 1 opzionale

andrea.sterbini (172680 points)
511 927 1776
asked Oct 20, 2021 in Avvisi by andrea.sterbini (172,680 points)
edited Oct 21, 2021 by andrea.sterbini

ATTENZIONE

  • eventuali correzioni verranno inserite qui, tenete d'occhio questa pagina
  • NOTA: quest'anno la funzione da implementare si chiama ex1 invece che es1
  • NOTA: il programma test_01.py DISATTIVA la funzione print, quindi non vedrete stampe. per riattivare le commentate/cancellate le righe

        with    self.ignored_function('builtins.print'), \
                self.ignored_function('pprint.pprint'), \

                self.forbidden_function('builtins.input'), \
                self.timeout(1), \
                self.timer(1):
            result = program.ex1(test_int_seq, test_subtotal)

in modo che diventino

        with self.forbidden_function('builtins.input'), \
                self.timeout(1), \
                self.timer(1):
            result = program.ex1(test_int_seq, test_subtotal)

Allo stesso modo potete eliminare il timeout commentando self.timeout e self.timer

Istruzioni

Per svolgere l'homework:

  • Installate le librerie necessarie
  • Scaricate il file HW1opz.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 HW1opz creata unzippando l'archivio ed editate il file program01.py
  • 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: 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 che viene fatto dai test
  • Per eseguire i test
    • aprite una finestra "Anaconda Prompt" e posizionatevi nella directory HW1opz ottenuta scompattando lo zip
    • eseguite il comando
      • pytest test_01.py -v -rA
    • oppure (test con una stampa dei tempi impiegati per eseguire ciascun test)
      • pytest test_01.py -v -rA --durations 0
    • oppure (test con stampa dei tempi spesi dal programma nelle 20 funzioni complessivamente più lente)
      • pytest test_01.py -v -rA --profile
    • Per far fermare i test al primo errore aggiungete l'opzione -x
    • Per chi usa Spyder 4:
      • è 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

Per la consegna dovrete consegnare solo il file program0X.py

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

Consegnando potete controllare come si posiziona il vostro programma nella graduatoria complessiva.

Potete consegnare più volte, vale l'ultima.

Scadenze

  • Questo homework non ha scadenza, non richiede il peer-assessment e non dà bonus.
2,838 views

2 Answers

federico_fiorelli (9940 points)
2 4 14
answered Oct 20, 2021 by federico_fiorelli (9,940 points)
Prof scusi, ma la consegna dà qualche punto qui sul forum?
D
Davide_Giannetti (720 points)
0 0 1
commented Oct 20, 2021 by Davide_Giannetti (720 points)
per la consegna di un qualsiasi homework basta andare sulla sezione Course del forum, da li andare su Submission per poi scegliere quale homework consegnare.
Burno (2690 points)
0 0 5
commented Oct 20, 2021 by Burno (2,690 points)
Credo che Federico abbia chiesto se la consegna dell'homework conferisca punti sul forum o meno.

Rispondendo alla domanda, penso di no. In caso contrario sarei contento di essere smentito :D
andrea.sterbini (172680 points)
511 927 1776
commented Oct 20, 2021 by andrea.sterbini (172,680 points)
No, i punti di Q2A si ricevono per aver aiutato gli altri rispondendo alle loro domande (senza spammare, plis).

Gli HW (anche opzionali) vi fanno fare esercizio (fondamentale a passare l'esame in laboratorio) e la consegna vi permette di vedere come ve la siete cavata rispetto ai timeout e rispetto ai colleghi
S
S3b4stian82 (2250 points)
3 6 27
answered Oct 20, 2021 by S3b4stian82 (2,250 points)
Una volta effettuata la submission, quanto tempo è richiesto per visualizzare le metriche sul codice ed i risultati dei test più leaderborad?

Grazie!
andrea.sterbini (172680 points)
511 927 1776
commented Oct 20, 2021 by andrea.sterbini (172,680 points)

Una quindicina di minuti (a meno che Murphy non ci metta lo zampino).

andrea.sterbini (172680 points)
511 927 1776
commented Oct 21, 2021 by andrea.sterbini (172,680 points)
Data altra spintina