Academic Year 2020/2021 - 1° Year
Teaching Staff: Alessandro Ortis
Credit Value: 9
Scientific field: INF/01 - Informatica
Taught classes: 60 hours
Term / Semester:

Learning Objectives

Synthetic general description

The course presents the foundation of Computer Scisnce and 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 (lists, tuples, dictionaries), 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

All the material shown (slides and code fragments) is made available to students in the Teams platform. Video projector is used for lectures in the classroom.
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.

Required Prerequisites

No prerequisite required.

Attendance of Lessons

Optional but suggested.

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, 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

1) A.Downey, Think Python, 2nd Ed., Grean Tea Press (online available).
2) M.Lutz, Learning Python, 4th Ed., O'Reilly (online available).
3) D.Pine, Introduction to Python for Science and Engineering, SMTEBooks - CRC Press (online available).

4) Jessen Havill - Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming Chapman and Hall/CRC; 1 edizione (14 settembre 2015)

Course Planning

 SubjectsText References
1Introduction to Computer Science 
2Introduction to Programming 
3Programming Languages 
4Construct of Python Languages 
5Built-in data structures in Python 
6Advanced Topics 

Learning Assessment

Learning Assessment Procedures

Programming exercises.

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 on line, should the conditions require it.

Examples of frequently asked questions and / or exercises

To implement a python program to solve a specific problem about data.