This is the (old) web page of too many courses. Starting from 2019/2020, the course will be assigned to Dr. Luca Bianco.
- 145540 Scientific Programming (12 credits), listed in the Manifesto of the Master Degree in QCB (Biotechnological track). Composed of Part A + Part B
- 145685 Scientific Programming (12 credits), listed in the Manifesto of the Master Degree in Data Science. Composed of Part A + Part B
- 145912 Scientific Programming (6 credits), listed in the Manifesto of the Master Degree in Mathematics. Composed of Part A only.
- 145741 Algorithms and Data Structures (6 credits), listed in the Manifesto of the Master Degree in QCB (Physics track). Composed of Part B only.
- 145742 Algorithms and Data Structures (6 credits), listed in the Manifesto of the Master Degree in QCB (Physics track). Composed of Part A only.
Part A — Python programming and scientific libraries
Computer processing is a key component of modern data analysis pipelines, and plays an increasingly important role in many fields of science. The goal of the first part is to introduce the Python programming language, one of the most widely used scientific computing languages, and to a collection of libraries that can be used to analyze data.
At the end of the module, students are expected to:
- Remember the syntax and semantics of the Python language;
- Understand programs written by others individuals;
- Analyze a simple data analysis task and reformulate it as a programming problem;
- Evaluate which features of the language (and related scientific libraries) can be used to solve the task;
- Construct a Python program that appropriately solves the task;
- Evaluate the results of the program.
Part B — Algorithms and data structures
Algorithmics is the science of algorithms. It includes algorithm design, the art of building a procedure which can solve correctly and efficiently a problem; and algorithm analysis, the science of quantifying the amount of resources needed by an algorithm to solve a problem.
The goal of this part is to introduce students to the design and analysis of algorithmic solutions, through the presentation of the most important class of algorithms and the evaluation of their performance.
At the end of the module, students are expected to:
- evaluate algorithmic choices and select the ones that best suit their problems;
- analyze the complexity of existing algorithms and algorithms created on their own;
- design simple algorithmic solutions to solve basic problems.