INF/01 - 9 CFU - 1° Semester

Teaching Staff

Office: DMI, polo scinetifico di viale A.Doria(via s.Sofia
Phone: 095 7383041
Office Hours: mercoledì 9-12

Learning Objectives

Synthetic general description

The course introduces some fundamentals principles of Computer Scisnce but mostly focuses on an practical introduction to Programming using Python as reference language.
Focusing on the mosto common practices of Scientific computing imperative as well object oriented paradigm of programming will be considered. Some minor reference will be provided toward ad advanced use of spreadsheet computation models.
Elementary data structures (list, string, dataframes) will be introduced. Basic programing structures: conditional and case based control, iteration, recursion.
Functions and code factoring will be considered as well.

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 "mind set" of programming, as well as an operative knowledge of Python and of some spreadsheet utilities.

  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 be able to read documentation of libraries.
    - To use, modify and create efficient and interactive spreadsheets.

  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

The course will include:
a) frontal classes of mostly theoretical content (blackboard and slides) approx 10 hours;
b) interactive laboratory classes with exercise and direct experiencs (laptop projection, internet connection), students will be encouraged to use their own laptops (not mandatory) for approx 50 hours;

The classes will be held in presence (but different decisions of the authorities).

Hands-on learning and reference to typical case studies will be used through the full course.

Detailed Course Content

  1. Introduction to programming

    1. The general structure of a digital computer.

    2. Problems and Algorithms.

    3. Flow chart, Structured linear notation, Böhm-Jacopini theorem.

    4. Representation of information: integers and floating-point numbers, characters, strings.

  2. Computational styles

    1. "Turing-able" programming languages vs spreadsheets;

    2. Basic cycle of computation in a spreadsheet: variables (value, format, dependencies)

    3. Compilation and interpretation for traditional programming languages.

    4. 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 and recursion.

  4. Built-in data structures in Python

    1. Strings.

    2. Lists, Tuples, Dictionaries.

  5. Object oriented programming in Python

    1. General ideas

    2. Basic notation

    3. Examples of simple objects and their usage;

    4. Ereditariety

  6. Advanced topics
    1. Notable algorithms: Searching, Sorting, Merging. Basics of computational complexity.

    2. Modules. Basic Python libraries for scientific computing and data analysis. Basic data visualization.

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