- Docente: Massimiliano Garagnani
- Credits: 6
- SSD: INFO-01/A
- Language: English
- Teaching Mode: In-person learning (entirely or partially)
- Campus: Bologna
- Corso: Second cycle degree programme (LM) in Philosophical Sciences (cod. 6242)
-
from Sep 14, 2026 to Oct 23, 2026
Learning outcomes
The course aims to give students a basic understanding of computer programming. At the end of the Course students will be able to have the necessary skills to be able to design, build and test a small system in a high-level language that supports object oriented programming (e.g. Python).
Course contents
The course aims to provide students with an understanding of fundamental computer science concepts and modern techniques for imperative programming.
Contents:
-
fundamental concepts of digital information processing (including integers and floating-point numbers, strings, assignments, variables, libraries, lists and files);
-
basic programming constructs, such as sequential and selective execution, loops, user-defined functions and classes;
-
The "for", "while", "if-else", "elif" Python constructs; built-in functions (such as "range()", "input()", and type-conversion functions); modules & turtles; lists and objects;
-
fundamental principles and techniques of information processing (including conditional and iterative control, string manipulation).
Students who successfully complete this course will be able to design and implement small (but complete) interactive programs that apply basic control structures and object-oriented programming concepts to solve a problem computationally.
Readings/Bibliography
Allen B. Downey: “Think Python: How to think like a Computer Scientist”, Green Tea Press, 2015 (Second Ed.).
John Zelle: “Python programming: an introduction to Computer Science”. Franklin, Beedle & Associates Inc., 2010 (Second Ed.)
Charles Dierbach: “Introduction to Computer Science Using Python: a computational problem-solving focus”. John Wiley & Sons, 2013Teaching methods
The course consists of two face-to-face lectures a week (2 hours each), complemented by weekly hands-on laboratory sessions (2 hours).
Students are very strongly advised to attend classes and labs regularly.
Assessment methods
The assessment is based on two equally weighted (50% + 50%) components, both to be carried out individually (i.e, without help from a third party):
- an individual, take-home “Mini-project” (a small software system whose requirements are specified during the course), and
- an Oral exam (strictly and exclusively in person).
With regard to the assessment of learning outcomes, the use of AI is prohibited. Any use of AI tools will be considered a breach of academic integrity.
NB: The oral component cannot be taken without prior submission of the Mini-project.
Students with disabilities and Specific Learning Disorders (SLD)
Students with disabilities or SLD are entitled to special accommodations according to their condition, following evaluation by the University Service for Students with Disabilities and SLD.
Please do not contact the course coordinator directly, but get in touch with the Service to schedule an appointment. The Service will determine which accommodations - if any - are appropriate.
More information available at:
https://site.unibo.it/studenti-con-disabilita-e-dsa/it/per-studenti
Teaching tools
Besides the teaching facilities available in the laboratory, the course will make heavy use of the interactive version of Downey's textbook:
Allen B. Downey, Jeffrey Elkner & Chris Meyers, "How to Think Like a Computer Scientist – Interactive Edition", Green Tea Press, 2002
, freely available HERE.
Office hours
See the website of Massimiliano Garagnani