Academic year
2021/2022 Syllabus of previous years
Official course title
Course code
CT0569 (AF:355374 AR:186676)
On campus classes
ECTS credits
6 out of 12 of COMPUTER SCIENCE I
Degree level
Bachelor's Degree Programme
Educational sector code
1st Semester
Course year
Go to Moodle page
The course aims at introducing the basic elements of imperative programming to devise algorithmic solutions.
The student will learn and understand the foundations of computer science for what concerns imperative languages and basic algorithms.
Moreover, the student will understand problem solvability and the ability to select suitable methods for problem analysis and modeling.
At the end of the course the student must be able to use programming tools (such as IDEs, integrated development environment, or code editors) to develop and debug programs. In particular, he/she must know how to:
1. formalize a problem in order to be solved with a computational approach;
2. designing one or more algorithmic solutions;
3. implement these solutions using imperative programming languages;
4. verify the execution of the proposed programs and judge their efficiency.

The programming language adopted throughout this course will be the Python Language.
Basic elements of logic.
Foundations of computers: numerical representation, Boolean algebra, von Neumann Architecture, computational thinking.
Variables and elementary types in Python. Assignment and expressions.
Conditional branching and loops.
Single and multi-dimensional lists.
Functions and variable scoping.
Problem solving: decomposition of problems, divide and conquer.
Abstract data types: lists, dictionaries, and strings, sets.
Classes and modules.
Development and debug with editors or IDE.
"Think Python" 2nd Edition, Allen B. Downey.
Available in the paper or pdf version:

The professor will also provide study material during the classes, in English.
The exam consists of a written test and in bi-weekly assignments, plus an optional oral.
The written test aims to evaluate the student's problem solving skills, the knowledge of Python and the ability to code the algorithm devised as solution. The written exams is split into an initial test with multiple choice questions to assess the student's theoretical knowledge, and a second part focused on the evaluation of the applied knowledge of the student through the development of some algorithmic solutions and their Python implementation.
The oral test can taken to improve the written grade, but it can also reduce it.
Depending on the conditions (lessons in presence or remote) the evaluations methods may change.
Lectures and hands-on sessions. Lectures will be used to introduce the theoretical aspects of the Python language, and will use on-line editors to show code samples. Hands-on lessons will be carried on using students' laptops and developing tools (local or on-line).
The structure and contents of the course could be modified due to the contingencies related to COVID-19 pandemic.
Definitive programme.
Last update of the programme: 11/03/2021