ALGORITHMS

ALGORITHMS

Irene Finocchi

Instructional goals

The course aims at providing the students with a wide knowledge of fundamental algorithms and data structures, with emphasis on applications and performance analysis of real implementations. It will develop algorithmic design skills, exposing the students to complex problems that require significant problem solving efforts and that can be exploited in a variety of contexts.

Intended learning outcomes

Knowledge and understanding: At the end of the course the students will have a deep knowledge of fundamental algorithmic techniques for solving efficiently a variety of computational problems. They will also acquire a clear understanding of the impact of algorithms in today’s and tomorrow’s business and society. Applying knowledge and understanding: The students will be able to: - understand and define clear requirements to a problem, decompose it into manageable pieces, assess alternative problem solving strategies, and employ algorithmic techniques to design efficient solutions - implement and engineer their algorithmic solutions using the programming skills obtained in previous courses Making judgements: We expect students to be able to analyze and compare different solutions to computational problems, critically choosing the most efficient one on a rigorous methodological basis. Communication skills: The course will give the students the ability to communicate effectively - in English - their ideas, proposals, and critical reasoning in the field of algorithm design, analysis, and implementation. Learning skills: This course will provide the students with the ability to learn a series of design and analytical tools and to apply them to real problems. The method of study will make the students able to break down complex problems arising in specific applications into manageable pieces and to apply algorithmic patterns in order to design rigorous and documentable solutions.

Course Contents

The course focuses on the design and analysis of algorithms and data structures. In particular, it will cover the following topics: - Fundamental algorithms: searching and sorting - Advanced data types: priority queues and dictionaries - Graph algorithms: breadth-first and depth-first search, minimum spanning trees, and shortest paths. - Algorithmic techniques: divide and conquer, greedy, dynamic programming

Reference Books

Lecture notes and other course material provided by the teacher and made available on the Luiss Learn platform. Two useful textbooks: - Jeff Erickson. Algorithms. Available online at: http://jeffe.cs.illinois.edu/teaching/algorithms/ - Thomas H. Cormen. Charles E. Leiserson. Ronald L. Rivest. Clifford Stein. Introduction to Algorithms. Third Edition. The MIT Press. Cambridge, Massachusetts.

Teaching Methods

Lectures, lab sessions and group project work. Students’ participation during lectures is strongly encouraged.

Assessment Method

Competences will be assessed via a written theory exam (75% of the final grade) and a group project work (25% of the final grade). We will adopt a continuous assessment model of evaluation, with three intermediate theory tests that contribute up to 26 points to the final grade (8 points per test + a 2-point bonus for active participation). If the results of the intermediate tests are not sufficient, students will be required to take a written exam (up to 24 points) on the full program in one of the normal sessions. The software project will be introduced since the very beginning of the course (week 1), with intermediate milestones and feedback. The project should be completed by the first exam session. There will be a penalty for late submissions. Additional details are available on Luiss Learn.

Thesis assignment criteria

A thesis will be assigned (upon specific request to the instructor) to students who have average grade > 27/30 and who demonstrate a serious and motivated interest to the course topics.

Does the syllabus cover sustainability topics?

No

Week 1 Contenuto sessioni on line e on campus

On campus lectures Course overview and organization. Syllabus discussion. Algorithmic thinking. A toy example: Fibonacci numbers. Correctness, running time, memory usage. Online lecture Project part 1 released. Software lab.

Week 2 Contenuto sessioni on line e on campus

On campus lectures More on Fibonacci numbers. Recursion trees, recurrence relations. Analysis of recursive vs iterative algorithms. Asymptotic analysis. Online lecture Theory lab.

Week 3 Contenuto sessioni on line e on campus

On campus lectures Input size. Worst case, best case, average case analysis. Searching algorithms: sequential and binary search. Solving recurrences by iteration. Quadratic sorting algorithms. First test preparation. Online lecture Bubblesort and theory lab.

Week 4 Contenuto sessioni on line e on campus

On campus lectures First intermediate test. Efficient comparison-based sorting algorithms. Master theorem. Divide and conquer sorting algorithms: mergesort. Online lecture Software lab.

Week 5 Contenuto sessioni on line e on campus

On campus lectures Quicksort. Solving recurrences by substitution. Priority queues and heapsort. Online lecture Project part 2 released. Discussion of part 1.

Week 6 Contenuto sessioni on line e on campus

On campus lectures Upper and lower bounds. Lower bound on sorting. Counting sort. Dictionaries. Binary search trees: introduction. Online lecture Software lab.

Week 7 Contenuto sessioni on line e on campus

On campus lectures More on binary search trees. Balanced search trees: AVL trees. Online lecture Theory lab.

Week 8 Contenuto sessioni on line e on campus

On campus lectures Graphs. Data structures for graphs. Second test preparation. Online lecture Theory lab. The second intermediate test will take place during the midterm week that will follow week 8.

Week 9 Contenuto sessioni on line e on campus

On campus lectures Depth-first search. Breadth-first search. Applications. Online lecture Project part 3 released. Software lab.

Week 10 Contenuto sessioni on line e on campus

On campus lectures Algorithmic techniques: greedy algorithms. Minimum spanning trees. Online lecture Theory lab.

Week 11 Contenuto sessioni on line e on campus

On campus lectures Single-source shortest paths. Algorithmic techniques: dynamic programming. All-pairs shortest paths. Online lecture Theory lab.

Week 12 Contenuto sessioni on line e on campus

On campus lectures Course recap. Third intermediate test preparation. Third intermediate test during the last class. Online lecture Theory lab.