B8905 - Foundations of Programming (1) (LM)

Academic Year 2025/2026

  • Teaching Mode: In-person learning (entirely or partially)
  • Campus: Bologna
  • Corso: Second cycle degree programme (LM) in Semiotics (cod. 6824)

Learning outcomes

Students who successfully complete this module will be able to: 1. Understand basic programming concepts and constructs such as strings numbers, assignments, sequential and selective executions, loops and functions; 2. Write short programs that use the fundamental program constructs including standard conditional and iterative control structures; 3. Write simple programs involving the drawing of basic geometric shapes; 4. Write basic animation programs; 5. Understand and explain the basic ideas of programming, including variables, basic types and control structures; 6. Design and implement small programs that use simple control structures, including conditionals and loops; 7. Implement basic, but complete interactive programs

Course contents

The course aims to provide students with a basic understanding of computer programming. Upon completion, students will have the skills necessary to design, develop, and test a small software system using a high-level, object-oriented programming language (i.e., Python).

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 statements; 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, 2013

Teaching methods

The course will consist of two face-to-face lectures a week (2 hours each), complemented by weekly hands-on laboratory sessions (2 hours).

Assessment methods

The assessment will be based on two (equally weighted) components:

  • an individual take-home “Mini-project” (a small software system whose requirements will be specified during the course), and
  • an Oral exam (in person).

NB: The oral part of the exam cannot be taken without prior submission of the Mini-project.

Students with disabilities or specific learning disorders (DSA) are entitled to special accommodations according to their condition, following evaluation by the University Service for Students with Disabilities and DSA.
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