Introduction to algorithms

Course objectives

General goals Introduction to basic algorithm design and analysis, iterative and recursive algorithms, and the computation of their computational efficiency. Specific goals: Knowledge and understanding: At the end of the course students will know the basic methodologies for the design and analysis of iterative and recursive algorithms, elementary data structures, some ways to explore such structures, the main sorting algorithms and the most basic implementations of the dictionaries. Applying knowledge and understanding: At the end of the course students will have become familiar with the main basic data structures, in particular those implementing dictionaries. They will be able to explain the algorithms and analyze their time complexity, highlighting how their performances depend on the used data structure. They will be able to design new data structures and related algorithms, on the basis of the existing ones; they will be able to explain the main sorting algorithms, illustrating the underlying design strategies and their time complexity analysis; they will be able to compare the asymptotic behavior of the execution times of the studied algorithms, to design recursive solutions to problems and to analyze their asymptotic time complexity. Critiquing and judgmental skills: Students will be able to analyze the quality of an algorithm and related data structures, both from the effective resolution of the problem and from the time complexity point of views. Communication skills: Students will acquire the ability to expose their knowledge in a clear and organized way, which will be verified both through the written tests and during the oral examination. Students will be able to express an algorithmic idea rigorously at high level, in pseudocode. Learning ability: The acquired knowledge will allow students to face the study of other algorithmic methodologies and of more advanced data structures within a master's degree course.

Channel 1
TIZIANA CALAMONERI Lecturers' profile

Program - Frequency - Exams

Course program
This course includes the following teaching units: Course introduction [2 hours] Asymptotic notation [10 hours] The research problem [8 hours] Introduction to recursion [10 hours] The sorting problem [10 hours] Fundamental data structures [20 hours]
Prerequisites
Indispensable prerequisites for attending the lessons of the Introduction to Algorithms course are the basic notions of calculus and the foundations of any modern high-level programming language, for example, those that are provided in the courses of Differential Calculus and the first course of Programming, compulsory for everyone and placed in the first semester of the first year of the course.
Books
T. H. Cormen, Charles E. Leiserson, Ronald L. Rivest: Introduction to algorithms, The MIT Press It will be the teachers' responsibility to distribute didactic material, related to the lessons and exercises (in the form of teacher's notes). The material for this year can be found here: https://twiki.di.uniroma1.it/twiki/view/Intro_algo/AD/Dispense
Teaching mode
Remote teaching mode. Beside the recorded lectures, there is a support activity by the teacher and a "tutoring" activity in which exercises are proposed to students, in agreement with them about the topics. Attending lectures is not compulsory.
Frequency
attending lessons is not compulsory but strongly encouraged.
Exam mode
The exam aims to evaluate learning through a compulsory written test (consisting of answering theoretical questions and solving problems of the same type as those developed in the exercises) and an optional oral test (consisting of discussing the most relevant topics illustrated in the course). The written test has a duration of two hours. To pass the exam it is necessary to achieve a grade of not less than 18/30. The student must demonstrate that he has acquired sufficient knowledge of the topics of all parts of the program. To achieve a score of 30/30 cum laude, the student must instead demonstrate that he has acquired an excellent knowledge of all the topics covered during the course and be able to connect them in a logical and coherent way.
Lesson mode
Remote teaching mode. Beside the recorded lectures, there is a support activity by the teacher and a "tutoring" activity in which exercises are proposed to students, in agreement with them about the topics. Attending lectures is not compulsory.
Channel 2
ANGELO MONTI Lecturers' profile

Program - Frequency - Exams

Course program
Description and design of efficient algorithms: Introduction to the concepts of algorithm, data structure, efficiency, computational complexity. Asymptotic notation. Introduction to recursion. The problem of sorting. Basic data structures (arrays, lists, stacks, queues, priority queues, trees). Dictionaries.
Prerequisites
The prerequisites of the course consist in the foundations of any modern high-level programming language, which are for instance provided in the course of programming, compulsory for all students and placed at the first semester of the first year of the degree in Computer Science.
Books
T. H. Cormen, Charles E. Leiserson, Ronald L. Rivest: Introduction to algorithms, The MIT Press It will be the teachers' responsibility to distribute didactic material, related to the lessons and exercises (in the form of teacher's notes).
Teaching mode
Traditional teaching mode. Beside the frontal teaching, there is a "tutoring" activity in which exercises are proposed to students, in agreement with them about the topics.
Exam mode
The exam aims at evaluating what students have learned through a *compulsory written test * (consisting in answering to theoretical questions and in solving problems of the same type as those carried out in the exercises) and an *optional oral exam* (consisting in the discussion of the most relevant topics illustrated in the course). The written test will last about two hours and can be replaced by two intermediate tests, both lasting two hours, the first of which will take place at about mid-course and the second one immediately after the end of the course. The first intermediate test will focus mainly on the topics illustrated in the first half of the course (simple recursive algorithms, resolution of recurrence equations, naif sorting algorithms), the second one on the topics explained in the second half of the course (algorithms for the solution of problems on sorting, linked lists and trees). To pass the exam, students need to achieve a grade of not less than 18/30. Students must demonstrate that they have acquired sufficient knowledge of the topics of both parts of the program. To achieve a score of 30/30 cum laude, students must instead demonstrate that they have acquired excellent knowledge of all the topics covered during the course and be able to link them in a logical and coherent manner.
Lesson mode
Traditional teaching mode. Beside the frontal teaching, there is a "tutoring" activity in which exercises are proposed to students, in agreement with them about the topics.
  • Lesson code1015885
  • Academic year2024/2025
  • CourseInformatics
  • CurriculumTecnologico
  • Year1st year
  • Semester2nd semester
  • SSDINF/01
  • CFU6
  • Subject areaFormazione informatica di base