- Docente: Paolo Felli
- Credits: 6
- SSD: INFO-01/A
- Language: Italian
- Teaching Mode: In-person learning (entirely or partially)
- 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
- Classes and hierarchies
- Basic data types (numbers, strings, lists, dictionaries, etc.)
- Abstract data types (e.g. binary trees)
- Elements of algorithms and complexity
- Introduction to NumPy
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 written exam (laboratory practical exam) will assess whether the student has attained an adequate understanding of the course content and acquired programming skills, in particular the ability to write programs in the Python programming language.
The use of AI is prohibited and constitutes a violation of academic integrity.
Teaching tools
Slides and teaching material will be made available on virtuale.unibo.it.
Office hours
See the website of Paolo Felli