
Course unit
ALGORITHMIC METHODS AND MACHINE LEARNING
SCP7079257, A.A. 2019/20
Information concerning the students who enrolled in A.Y. 2019/20
ECTS: details
Type 
ScientificDisciplinary Sector 
Credits allocated 
Core courses 
INF/01 
Computer Science 
6.0 
Core courses 
INGINF/05 
Data Processing Systems 
6.0 
Course unit organization
Period 
Second semester 
Year 
1st Year 
Teaching method 
frontal 
Type of hours 
Credits 
Teaching hours 
Hours of Individual study 
Shifts 
Lecture 
12.0 
96 
204.0 
No turn 
Prerequisites:

The student should have basic knowledge of programming. 
Target skills and knowledge:

This class teaches the basics in algorithmic methods and machine learning.
The part of the course covering algorithmic methods will first concentrate on the main data structures and their efficient implementation. Attention will then shift to the fundamental algorithmic paradigms for problem solving and their applicability through the discussion of relevant case studies. The other part will focus on machine learning techniques typically used in a data science scenario. First of all, general concepts concerning machine learning will be introduced. Then, the theory underpinning each presented technique will be explained and subsequently followed by practical demonstrations using Python and ScikitLearn. 
Examination methods:

Written exam and (individual) project. The project is due by the end of the course. 
Assessment criteria:

The project work, and the written exam, will be evaluated on the basis of the following criteria: i) student’s knowledge of the concepts, methods, and technologies; ii) ability of the student to master the implementation technology; iii) student’s capacity for synthesis, clarity, and abstraction, as demonstrated by the written exam and project presentation. The final grade is obtained as the weighted sum of the grades of the written exam (80%) and the project (20%). 
Course unit contents:

The course will cover the topics listed below:
 Algorithmic Methods:
Preliminaries: definition of problem, instance, solution, algorithm. Models of computation. Analysis of algorithms: correctness and running time,. Asymptotic analysis.
Basic data structures: lists, stacks, queues. Trees and their properties. Dictionaries and their implementation. Priority queues.
Graphs: representation of graphs. Basic properties. Graph searches and applications.
Divide and Conquer paradigm: the use of recursion. Recurrence relations. Case study: sorting.
Dynamic programming: coping with repeating subproblems. Memoization of recursive code. Case study: optimization algorithms on sequences.
Greedy paradigm: solving by successive choices. Applicability of the paradigm. Case study: data compression.
 Machine Learning
Introduction to Machine Learning: why machine learning is useful; when to use it.; where to use it; Machine Learning paradigms; basic ingredients of Machine Learning; complexity of the hypothesis space; complexity measures; examples of supervised learning algorithms.
Application Issues: classification pipeline, representation and selection of categorical variables; model selection, evaluation measures.
in Depth (theory and practice using Python and ScikitLearn): Support Vector Machines; Decision Trees and Random Forest; Neural Networks and Deep Learning; Manifold Learning; Kernel Density Estimation. 
Planned learning activities and teaching methods:

The course consists of lectures. 
Additional notes about suggested reading:

Log of the lessons, didactic material (slides) and the detailed exam modalities will be available in the Website accessible from the MOODLE platform. 
Textbooks (and optional supplementary readings) 


