Follow us


Academic Year 2023/2024 - Teacher: Gianluca CINCOTTI

Expected Learning Outcomes

Synthetic general description

The course presents the basics of computer programming by adopting Python as reference language.
The basic concepts of imperative programming are presented without neglecting the use of specific libraries for scientific computing. In particular, the learner is led towards the acquisition of the classical conceptual tools of structured programming through the description and use of built-in structures for data processing, the coding of remarkable algorithms and the use of the technique of recursion. Throughout the course we will use a professional development environment for the Python language.

General educational objectives of teaching in terms of expected learning

  1. Knowledge and understanding:  the primary objective of the course is the students' acquisition of the "philosophy" of structured programming, as well as the detailed knowledge of syntax and semantics of the Python programming language.  The course pays particular attention to the development of well-written and well-structured code using the basic techniques for software development in the imperative paradigm.

  2. Applying knowledge and understanding: it intends to provide the tools to achieve the following practical and professional skills:
    - To analyze computational problems and to code algorithmic ideas for their resolution;
    - To design, to describe, to implement and debug Python programs with professional tools;
    - To use built-in data structures for data management in scientific computing;
    - Understanding simple recursive algorithms;
    - To use specific libraries for scientific calculation;
    - To read, to understand and analyze third-party Python code also in terms of efficiency;
    - To be able to read documentation of libraries.

  3. Making judgements: through the examination of code examples and numerous practice exercises, the learner will be able, both independently and in a cooperative manner, to analyze problems and design and implement related software solutions.

  4. Communication skills:  the student will acquire the necessary communication skills and expressive appropriateness in the use of technical verbal language in the context of computer programming.

  5. Learning skills:  the course aims to provide the learner with the necessary theoretical and practical methodologies to be used in professional contexts and, in particular, the ability to formulate and implement ad-hoc algorithms for solving new computational problems as well as the possibility of easily and quickly acquiring other programming languages.


Course Structure

Informatica 1 - 6 CFU - 47 total hours of which: 

  • 35 hours of lectures,
  • 12 hours of exercises.

Video projector is used for lectures in the classroom.

All the material shown (slides and code fragments) is made available to students in the Studium website.
The slides are not intended to replace the reference texts but represent a precise guide to the course topics.

In order to pursue the educational objectives of the course set out in the descriptors 2) Applying knowledge and understanding and 3) Making judgments:

  • many lessons will be carried out in an interactive teacher-learners mode;
  • practical classroom exercises are planned to familiarize the learners with the drafting of Python code;
  • some case studies in the field of small software design will be discussed.

Should teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, in line with the programme planned and outlined in the syllabus.

Learning assessment may also be carried out online, should the conditions require it.

NOTE: Information for students with disabilities and/or SLD

To guarantee equal opportunities and in compliance with the laws in force, students can ask for a personal interview in order to plan any compensatory and/or dispensatory measures, based on the didactic objectives and specific needs. It is also possible to contact the referent teacher CInAP (Center for Active and Participated Integration - Services for Disabilities and/or SLD) of our Department, prof. Filippo Stanco.

Required Prerequisites

No prerequisites.

Attendance of Lessons

The lectures are delivered in a highly interactive teacher-learner mode therefore attendance is recommended. The calendar of lessons is published on

Detailed Course Content

  1. Introduction to programming
    1. Problems and Algorithms. Variables, Expressions and Assignments.
    2. Flow chart, Structured linear notation, Böhm-Jacopini theorem.
    3. Representation of information: integers and floating-point numbers, characters, strings, images and sounds (outline).
  2. Programming languages
    1. Programming languages: machine, assembly and high level.
    2. Translation problem: compilation and interpretation.
    3. Installation of the development environment for the Python language. First program: Editing, Running, Debugging.
  3. Constructs of Python language
    1. Basic syntax, data types, predefined operators, I/O management.
    2. Numbers and mathematical functions.
    3. Flow control: consructs of selection and iterative.
    4. Functions.
  4. Built-in data structures in Python
    1. Strings.
    2. Lists,  Tuples, 
    3. Sets,  Dictionaries.
  5. Advanced topics
    1. Notable algorithms: Searching, Sorting, Merging.  Basics of computational complexity.
    2. Recursive functions.
    3. Modules. Basics on the mathematical libraries NumPy and SciPy  and the graphic library PlotPy

Textbook Information

C.Horstmann - R.NecaiseConcetti di Informatica e fondamenti di PythonMaggioli Editore20238891663979

Course Planning

 SubjectsText References
1Introduction to programming and representation of  information2
2Development environment for Python1, 2 ,3, 4
3Python language constructs1, 2, 3, 4
4Built-in data structures in Python1, 2, 3, 4
5Remarkable algorithms (search, sort, natural merge)2
7Libraries NumPy, SciPy, PlotPy4

Learning Assessment

Learning Assessment Procedures

The exam consists in verifying the target objectives for the course, namely:

       a. the ability to describe and implement simple algorithmic procedures,
       b. detailed knowledge of the Python programming language,
       c. the ability to apply the imperative paradigm to the development of scientific computing software.

   The exam consists of two independent tests designed to verify the learning objectives and it is passed when both tests are sufficiently assessed:
      (1) written test (two coding exercises, it tests goals (a) and (b)),
      (2) oral exam (discussion of an assigned software project, it verifies goals (a), (b) and (c)).

   Test (1) is a written test assigned in the classroom which consists of two simple exercises in writing Python code. The time provided for this test is one hour. The evaluation
V1 of this test is expressed in thirtieths.
   Test (2) consists of an oral interview during which a software  project presented by the learner will be discussed. The project can be carried out by a group of students (from one to three) and must be agreed in advance with the teacher. At the time of the interview the learner will have to present the Python code, the user manual and the project documentation. In the case of group of students, the evaluation must take place at the same time. The average duration of the interview is half an hour.  The evaluation
V2 of this test is expressed in thirtieths.

   The overall evaluation of the exam is given, in general, by the average of
V1 and V2.

   Test (1) is to be considered preparatory to (2). The two tests can be passed at different times, therefore students can take one or both tests at each session. The sufficiency achieved in a certain test will be considered valid for the whole calendar year (until December following the reference course).

   To access test (1) the student must be booked in the student portal, test (2) does not require any reservation.

   The following criteria will normally be followed to assign the grade:
  •  not approved: the student is deficient in logical reasoning (a). 
  • 18-23: the student demonstrates minimal logical reasoning skills (a) and technical knowledge (b), with modest presentation skills.
  • 24-27: the student demonstrates good logical reasoning skills (a) and technical knowledge (b) and (c), and converses easily.
  • 28-30 cum laude: the student demonstrates excellent logical reasoning skills (a) and technical knowledge (b) and (c), and interacts appropriately with critical sense.   
Learning assessment may also be carried out online, should the conditions require it.

Examples of frequently asked questions and / or exercises

Some typical questions for the written test (1) are as follows:

  • Describe the InsertionSort algorithm.
  • Search within a list without using predefined functions. 
  • Implement a bidimensional array and perform a certain operation in a column of it.

Some typical questions for the oral exam (2) are as follows: 

  • What data structures were used in the project?
  • What is the most important numerical algorithm present in the project?
  • What is the least computationally efficient algorithm in the project?