Think Python: How to Think Like a Computer Scientist by Allen B. Downey
Beijing: O'reilly Media
Problem Solving With Algorithims and Data Structures Using Python, 2nd edition, By Brad Miller and David Ranum
Franklin Beedle & Assoc
Piattaforma Interattiva (libera traduzione dei libri sopra con materiale e esercizi addizionali):
- http://www.andreamarino.it/python/thinkcspy/toc.html#t-o-c
- Capitoli "Analisi degli algoritmi", "Ricerca e Sorting" e "Tecniche Algoritmiche" in http://www.andreamarino.it/python/pythonds/
Obiettivi Formativi
Gli studenti impareranno a utilizzare il calcolatore per risolvere problemi e impareranno ad applicare il pensiero computazionale per inquadrare problemi e per gestire il processo di estrazione dell'informazione dai dati in modo computazionale.
Prerequisiti
Il corso è rivolto a studenti con nessuna esperienza di programmazione.
Metodi Didattici
- Lezione frontale
- Brainstorming: discussione finalizzata alla ricerca di soluzioni non scontate a problemi complessi. Esposizione del problema e i relativi obiettivi che si vogliono raggiungere, sollecitando la classe a comunicare idee di risoluzione.
- Esercitazione: agli studenti sarà richiesto di risolvere esercizi al computer in classe per mettere in pratica le tecniche apprese.
- Problem solving: l’apprendimento sarà il risultato di un attività di scoperta e per soluzione di problemi. Il metodo sarà utilizzato per individuare, pianificare ed attuare le azioni necessarie alla risoluzione di un problema.
- La piattaforma Moodle verrà utilizzata come ambiente integrato di apprendimento, tramite il caricamento di contributi fruibili in modalità asincrona.
Altre Informazioni
Software - Spyder all'interno di Anaconda, PythonTutor o repl.it.
Modalità di verifica apprendimento
Consegna di un progetto con relativa discussione più orale. La consegna di un progetto che rispetti la specifica è condizione necessaria per essere ammessi all'orale. Lo scopo del progetto è verificare la capacità di sviluppare in autonomia algoritmi e applicarli in pratica su un dataset dato in modo asincrono. Durante l'orale verrà valutata l'abilità di problem solving, risolvendo esercizi. Gli esercizi saranno varianti di quelli presenti sui libri interattivi, opportunamente alterati per verificare, piuttosto che la capacità mnemonica dei candidati, l'abilità nella comprensione della specifica formale dell'esercizio e la capacità di sviluppo di soluzioni efficienti per il problema dato.
Programma del corso
Introduzione ai linguaggi di programmazione e Python
Dati Semplici
Iterazione
Moduli Python
Le funzioni
La selezione
Ricorsione
Stringhe
Liste
Dizionari
File
Classi e Oggetti
Analisi degli algoritmi e delle performance delle strutture dati
Ricerca
Ordinamento
Tecniche algoritmiche: algoritmi greedy, divide et impera, programmazione dinamica