INF/01 - 9 CFU - 1° Semester

Teaching Staff

Office: Dipartimento di Matematica e Informatica - Viale Andrea Doria 6
Phone: +390957383206
Office Hours: Consultare il sito web del docente (See personal home page)

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 Studium website. 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:

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)

Open in PDF format Versione in italiano