CODE 80298 ACADEMIC YEAR 2023/2024 CREDITS 12 cfu anno 1 INFORMATICA 8759 (L-31) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR INF/01 LANGUAGE Italian TEACHING LOCATION GENOVA SEMESTER 2° Semester PREREQUISITES Propedeuticità in uscita Questo insegnamento è propedeutico per gli insegnamenti: Computer Science 8759 (coorte 2023/2024) ALGORITHM ANALYSIS AND DESIGN 80306 TEACHING MATERIALS AULAWEB OVERVIEW The course of Algorithms and Data Structures aims at expanding the students' knowledge and skills related to programming in the small with imperative languages; it provides the basis for designing efficient algorithms and for developing data structures that enable effective information organization. AIMS AND CONTENT LEARNING OUTCOMES The course aims at improving knowledge and skills of programming in the small, through imperative languages, providing the basics for designing correct and efficient algorithms, and for developing data structures that enable effective and efficient organization of data. AIMS AND LEARNING OUTCOMES At the end of the course, the student will be able to: - compute the complexity of known algorithms (sorting, adding, searching and modifying elements in a data structure) in order to identify the most efficient one - design the interface of a data type - implement the data type with different data structures that include indexed and linked structures - understand the difference in the efficiency of the functions supported by the data type, when different data structures are employed TEACHING METHODS Traditional, with frontal lessons and laboratory sessions SYLLABUS/CONTENT Methods for algorithm analysis: cost criteria, asymptotic notation, complexity analysis of recursive algorithms. Examples of development and analysis of algorithms. Sorting algorithms: insertion sort, selection sort, bubble sort, mergesort, quicksort Basic data structures: arrays and lists; stacks and queues; dictionaries implemented with lists. Dictionaries: implementation with binary search trees and hash tables. Trees: indexed and linked representations for binary trees and general trees; depth-first search and breadth-first search of trees. Search Trees: Binary search trees, search trees as a data structure for implementing dictionaries, balanced trees. Hash tables: collision lists and open addressing. Priority queues: implementation with lists and heaps. Graphs: definitions, data structures, primitives for querying and updating graphs; graph visits in depth and in width; examples of application of a graph visit algorithms. Laboratory: C++ laboratories related to course topics RECOMMENDED READING/BIBLIOGRAPHY All topics covered by the program are faced during the frontal lessons. The teaching material provided by the teachers via AulaWeb (including the fragments of C++ code implementing the algorithms and data structures addressed during the course) and notes taken during classroom lessons are essential for preparing the exam. TEACHERS AND EXAM BOARD VIVIANA MASCARDI Ricevimento: Appointment by email Office: Valle Puggia – third floor MAURIZIO LEOTTA Ricevimento: On appointment ARNAUD HENRI PAUL SANGNIER Exam Board VIVIANA MASCARDI (President) ARNAUD HENRI PAUL SANGNIER MAURIZIO LEOTTA (President Substitute) LESSONS Class schedule The timetable for this course is available here: Portale EasyAcademy EXAMS EXAM DESCRIPTION Exam description The exam consists of a written part and a laboratory part. The two parts are independent of each other: students can book and perform only the written test in one exam session and book and perform the lab test in another session, and vice versa. It is not necessary to pass one of the two tests to be admitted to the other. The written part consists of an initial quiz that represents a "barrier": if the student does not reach a threshold on the questions in that initial part, the student can face neither the written part, not the laboratory session. The "barrier" quiz can be faced in any of the five available appeals. Computation of the final mark The final mark is obtained as the sum of the written mark + the lab mark + the mark of the exercises evaluated during the year. This sum is rounded to the nearest integer. ASSESSMENT METHODS The various parts of the exam have been carefully designed by the teachers to verify whether the student is able to - compute the complexity of known algorithms (sorting, adding, searching and modifying elements in a data structure) in order to identify the most efficient one - design the interface of a data type - implement the data type with different data structures that include indexed and linked structures - understand the difference in the efficiency of the functions supported by the data type, when different data structures are employed Details on how to prepare for the exam and the degree of understanding of each topic delat with during the course will be given during the lessons. Examples of previous exam texts will be made available to allow students to understand how the acquisition of the required skills is assessed. Exam schedule Data appello Orario Luogo Degree type Note 10/01/2024 09:00 GENOVA Scritto 08/02/2024 09:00 GENOVA Scritto 11/06/2024 09:00 GENOVA Scritto 12/06/2024 09:00 GENOVA Laboratorio 15/07/2024 09:00 GENOVA Scritto 16/07/2024 09:00 GENOVA Laboratorio 03/09/2024 09:00 GENOVA Scritto 04/09/2024 09:00 GENOVA Laboratorio 08/01/2025 09:00 GENOVA Scritto 06/02/2025 09:00 GENOVA Scritto OpenBadge PRO3 - Soft skills - Creazione progettuale base 1 - A PRO3 - Soft skills - Imparare a imparare avanzato 1 - A PRO3 - Soft skills - Alfabetica avanzato 1 - A