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
Interactive website (free translation of the above books with more exercises and other material):
- http://www.andreamarino.it/python/thinkcspy/toc.html#t-o-c
- Chapters "Analisi degli algoritmi", "Ricerca e Sorting" e "Tecniche Algoritmiche" in http://www.andreamarino.it/python/pythonds/
Learning Objectives
Students will learn how to use the computer in order to solve problems, learning how to apply computational thinking, understanding problems and managing the process of extracting information from data in a computational way.
Prerequisites
The course is for students without any previous programming experience.
Teaching Methods
- Frontal lectures
- Brainstorming: discussions in order to find non-trivial solutions to complex problems, exposing objectives and soliciting students to give ideas.
- Hands-on lab: design of algorithms during the lectures using the computer in order to apply the tools just learned.
- Problem solving: learning as the result of a discovering process, converging to the efficient solutions via trial and error. The method will be used to understand and plan the actions required to solve a problem.
- Moodle Platform will be used as a virtual environment to provide support and references.
Further information
Software - Spyder all'interno di Anaconda, PythonTutor o repl.it.
Type of Assessment
Project assignment with discussion and oral. Developing a solution for the project respecting the specification is necessary in order to give the oral exam. The aim of the project is to verify the ability of developing algorithms in autonomy and to apply them in a given dataset in asynchronous way. The aim of the oral examination is to evaluate the problem solving ability, designing algorithms for exercises on-the-fly.
Course program
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