Course 2017-2018 a.y.



Department of Decision Sciences

Course taught in English

Go to class group/s: 25
BEMACS (8 credits - II sem. - OB  |  INF/01)
Course Director:

Classes: 25 (II sem.)

Course Objectives

Quantitative data analysis of complex systems in economics and social sciences require a multidisciplinary methodological training. Computer science, especially its algorithmic aspects, constitutes one of the fundamental building blocks of such preparation.
The aim of the course is to provide students with the essential mathematical tools that are the basis of the theory of algorithms, along with a general introduction to the different classes of algorithms and data structures, and to the theory of computational complexity.
As part of the course, students are introduced to programming, starting from the basics and leading up to the implementation of data structures and algorithms discussed in the theoretical part of the course. The programming language used is Python, especially suited for a general understanding of programming techniques.

Intended Learning Outcomes
Click here to see the ILOs of the course

Course Content Summary

  • Introduction to the notion of algorithms in Computing.
  • Analyzing algorithms, growth functions and asymptotic notation.
  • Recurrences and generating functions. Case study: Divide-and-Conquer algorithms.
  • Probabilistic Analysis and Randomized Algorithms. Case study: Quicksort.
  • Elementary Data Structures and Hash tables.
  • Introduction to graph theory and Elementary Graph Algorithms (Minimum Spanning Trees, Single-Source Shortest Paths, Dijkstra’s algorithm and Karger’s randomized algorithm for the Minimum Cut problem).
  • Introduction to computational complexity and NP-completeness.
  • Introduction to programming. Python language.
  • Implementation of data structures and algorithms.

Teaching methods
Click here to see the teaching methods

Assessment methods
Click here to see the assessment methods

Detailed Description of Assessment Methods

The final mark is the sum of partial marks, obtained through:
  • 2 written partial exams (max 15 points + max 16 points).
  • a general written exam (max 31 points).
30 cum laude is obtained with 31 points.


  • T.H. Cormen, C.E. Leiserson, R.L. Rivest, et al., Introduction to Algorithms, MIT, 3rd edition.
  • A.B. Downey, Think Python, O'Reilly Media.
  • C. Moore, S. Mertens, The Nature of Computation, Oxford (optional).
  • Handouts.
Exam textbooks & Online Articles (check availability at the Library)


  • Elementary differential calculus.
  • Basic probability theory.
Last change 13/06/2017 12:02