- Docente: Paolo Felli
- Credits: 6
- SSD: INF/01
- Language: Italian
- Teaching Mode: Traditional lectures
- Campus: Bologna
- Corso: First cycle degree programme (L) in Materials Science (cod. 6830)
Learning outcomes
At the end of the course, the student possesses necessary knowledge of computer structure and appropriate familiarity with modern programming languages, particularly Python. Such knowledge is adequate and sufficient to address and solve simple scientific problems through the design and implementation of suitable algorithms and data structures. Laboratory activities introduce them to initial examples of applied methods and models.
Course contents
The course introduces the main concepts of computer science, problem-solving, and abstract machines. It then delves into programming in Python, with particular attention to:
- The Python machine
- Names and their visibility
- Functions
- Modifiable and non-modifiable objects
- Basic data types (numbers, strings, lists, dictionaries, etc.)
- Abstract data types (binary trees)
Furthermore, the course presents some classes of algorithms (e.g., sorting) with an overview of computational complexity. It discusses the limitations of effective procedures and the existence of problems that are unsolvable algorithmically.
Laboratory activity is included, to support students in understanding and applying the concepts learned during the lessons.
Readings/Bibliography
John V. Guttag: Introduzione alla programmazione con python, Egea, 2021 (traduzione italiana ridotta di: Introduction to Computation and Programming Using Python Third Edition: With Application to Computational Modeling and Understanding Data, MIT Press, 2021)
Further readings:
Allen B. Downey: How to Think Like a Computer Scientist: Learning with Python. Online interactive edition: https://runestone.academy/ns/books/published/thinkcspy/index.html
Allen B. Downey: Think Python 2e, O'Reilly Media, 2012. ISBN 978-1449330729. https://greenteapress.com/wp/think-python-2e/
Jessen Havill: Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming. Chapman and Hall/CRC. ISBN 9781482254143
Teaching methods
Lectures and laboratory exercises.
Assessment methods
The course includes the completion of an individual or group project related to the development of a Python application. This project will be discussed, along with the design and implementation choices, during an oral exam session. During the oral session, the instructor will also verify the student's understanding of the discussed concepts through specific questions.
Teaching tools
Slides and teaching material will be made available on virtuale.unibo.it.
Office hours
See the website of Paolo Felli