91256 - Introduction to Algorithms and Programming

Course Unit Page



Quality education

Academic Year 2020/2021

Learning outcomes

At the end of the course, the student is able to analyze a problem, formulate an algorithm for solving it, and code such an algorithm into an executable program. The student understands some basic algorithms and a general-purpose programming language.

Course contents

Computer science and problem solving. Abstract machines. Python machine. Programming in Python: names and visibility, functions, immutable and mutable objects, basic data structures (strings, tuples, lists, dictionaries) and their use in the solution of problems. Classes and objects. Methods and inheritance. Introduction to the library NumPy  and its N-dimensional array objects.

Some lab work will propose experiments and homework.

Prerequisites: some programming experience. In its 40 hours, the course shall only introduce one programming language, and cannot treat programming techniques, which are largely independent from the specific language.


Allen B. Downey
Think Python 2e.
O'Reilly Media, 2012. ISBN 978-1449330729.
On-line manuscript: see http://www.cs.unibo.it/~martini/MATH/index.html

Jessen Havill
Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming
Chapman and Hall/CRC. ISBN 9781482254143

Teaching methods

Lectures---all students will have the opportunity to attend from remote (also to lab classes).

Guided lab experimentations using the students' laptop in class (BYOD: Bring Your Own Device).


Lectures and lab (for a total of 40 hours) will be concentrated at the beginning of the semester (from Sep 16 to Oct 16). On October 21st we will take an informal pre-exam---A passed, sufficient pre-exam will be registered in January as a full exam for the course.

Assessment methods

Written test, part of which will be the production of Python programs

Office hours

See the website of Simone Martini