CODE 86755 ACADEMIC YEAR 2024/2025 CREDITS 6 cfu anno 2 INGEGNERIA INFORMATICA 8719 (L-8) - GENOVA 6 cfu anno 1 METODOLOGIE FILOSOFICHE 8465 (LM-78) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR ING-INF/05 LANGUAGE Italian TEACHING LOCATION GENOVA SEMESTER 2° Semester TEACHING MATERIALS AULAWEB OVERVIEW The course studies the main theoretical models of computer science (grammars and automata) and provides elements of object-oriented design and programming in C++ language aimed at creating a project that exploits the themes introduced in the theoretical part. AIMS AND CONTENT LEARNING OUTCOMES The student will be able to understand and apply the basic formal models of computer science AIMS AND LEARNING OUTCOMES Specifically, te student will be able to: - given a formal language, understand from which type of grammar it can be generated and which automaton will be able to recognize the strings of the language - design and implement object oriented applications in C++ - create an interpreter for a simple programming language PREREQUISITES Set up and solve problems algorithmically using a programming language. Basic knowledge of algebra and combinatorics. TEACHING METHODS The course consists of theory lessons, for a total of approximately 24 hours, and a practical part, of approximately 24 hours. All lessons will be held by the teachers in charge of teaching. SYLLABUS/CONTENT The course program includes the presentation and discussion of the following topics: - Regular expressions and finite state automata - Context-free grammars and push. automata - Object-oriented design: UML class diagram and Design Pattern - Programming in C++ language: use of strings and dynamic vectors, inheritance and polymorphism, generic programming, exception management, use of the Standard Template Library, advanced C++ 20 concepts (views, streams, iterators, anonymous functions), use of smart pointers RECOMMENDED READING/BIBLIOGRAPHY All the slides used during the lessons and other teaching material (e.g. exercises) will be available on aulaweb. In general, the notes taken during the lessons and the material on aul@web are sufficient for exam preparation. The books indicated below are suggested as supporting texts: (Theory) Hopcroft, Motwani, Ullman - Introduction to Automata Theory, Languages, and Computation (3rd edition) - Pearson (Practical) Ray Lischner - Exploring C++ 20 (3rd edition) - Apress TEACHERS AND EXAM BOARD ARMANDO TACCHELLA Ricevimento: Please make an appointment with the teacher via email ENRICO GHIORZI Exam Board ARMANDO TACCHELLA (President) LUCA ONETO ENRICO GHIORZI (President Substitute) LESSONS LESSONS START Calendario accademico | Corsi di Studio UniGe Class schedule The timetable for this course is available here: Portale EasyAcademy EXAMS EXAM DESCRIPTION The exam consists of a written test and a project, both compulsory. The test requires solving two exercises on the theoretical topics of the course (accessory material NOT available for consultation) The project requires the design and development of an interpreter in C++ language. Students with certification of Specific Learning Disabilities (SLD), disabilities, or other special educational needs must contact the instructor at the beginning of the course to agree on teaching and examination methods that, while respecting the course objectives, take into account individual learning styles and provide appropriate compensatory tools. It is reminded that the request for compensatory/dispensatory measures for exams must be sent to the course instructor, the School representative, and the “Settore servizi per l'inclusione degli studenti con disabilità e con DSA” office (dsa@unige.it) at least 10 working days before the test, as per the guidelines available at the link: https://unige.it/disabilita-dsa ASSESSMENT METHODS Details n how to prepare for the exam and the required level of depth for each topic will be given during the lessons. The written exam will verify the actual acquisition of knowledge, skills and abilities by carrying out exercises on the theoretical topics of the course. The project will verify the effective acquisition of knowledge, skills and abilities on a broader spectrum including theory, programming and their interaction. Exam schedule Data appello Orario Luogo Degree type Note 10/01/2025 10:00 GENOVA Scritto 12/02/2025 10:00 GENOVA Scritto 12/06/2025 10:00 GENOVA Scritto 16/07/2025 10:00 GENOVA Scritto 11/09/2025 10:00 GENOVA Scritto Agenda 2030 - Sustainable Development Goals Quality education Gender equality Decent work and economic growth Industry, innovation and infrastructure