CODE 66054 ACADEMIC YEAR 2024/2025 CREDITS 9 cfu anno 1 INGEGNERIA INFORMATICA 8719 (L-8) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR ING-INF/05 LANGUAGE Italian (English on demand) TEACHING LOCATION GENOVA SEMESTER Annual TEACHING MATERIALS AULAWEB OVERVIEW Fondamenti di Informatica is an introductory course describing the basic concepts of computer engineering in a simple and organic way. Lectures focus on the foundational knowledge software development grounds on, by addressing both theoretical topics and practical aspects, the latter related to development of C++ programs. Fondamenti di Informatica is the first step of a three-years educational path, which makes the student know and apply methodologies for software design and development. AIMS AND CONTENT LEARNING OUTCOMES This teaching unit provides the basic concepts of computer science and the foundational knowledge for software development, by addressing the analysis of problems and their algorithmic resolution through the development of programs in C++ language, according to the paradigms of structured and modular programming. AIMS AND LEARNING OUTCOMES The course guides the students: In understanding topics of discrete mathematics, related to the basis of theoretical computer science. In conceptualizing aspects related to the foundations of programming. In extending such concepts to modular programming and abstract data types. At the end of the course, students will be able: To face simple discrete mathematics problems and link them to the aspects of computer science where such mathematical concepts are applied. To describe and apply the basic principle of procedural programming. To describe and apply the basic principle of modular programming and abstract data types. To solve simple problems automatically by means of programs written in C++ language. To translate a collection of specifications into a program written in C ++ language. PREREQUISITES None. We assume that participants do not have any previous experience with computer engineering and programming, and the course guides them step by step in the understanding of the basic principles of such disciplines. TEACHING METHODS The course includes lectures and practical lessons. Lectures consist of the presentation of the concepts by projecting slides in the lecture room, and by making examples and simple exercises aiming at explaining these concepts. Practical lessons imply both exercises done by teachers and exercises that students have to do, partially in the classroom and partially autonomously. Students can ask tutors for assistance. Working students and students with certified DSA, disability or other special educational needs are advised to contact the lecturer at the beginning of the course to agree on teaching and examination arrangements that, while respecting the teaching objectives, take into account individual learning patterns. SYLLABUS/CONTENT The content of the course develops along three major topics: Elements of discrete mathematics: set theory, relations and functions, basic algebraic structures, and introduction to combinatorics. Foundations of programming: introduction to computer engineering (computers architecture), introduction to programming (algorithms, programs, and programming languages), structured programming in C++ language (variables, constants, types, operators, expressions, conditional constructs, iterative constructs, functions, mono-dimensional arrays, strings, multi-dimensional arrays, streams and files, structures, arrays of structures), advanced programming in C++ language (pointers and references, dynamic memory allocation, recursive functions, function templates). Modular programming and abstract data types: classes and objects (methods and attributes, access control to members, types of methods: constructors, destructors, selectors, modifiers, operators, and operator overloading, class templates), abstraction on data (information hiding, abstract data types, independence from representation), application of abstract data types for creating data structures (lists, stacks, queues). RECOMMENDED READING/BIBLIOGRAPHY Educational material includes: The slides presented during classes. Material related to the exercises, which is made available together with each exercise. Material can be downloaded from AulaWeb. In principle, the notes taken during the lectures and the material available on AulaWeb are sufficient for preparing for the final exam. For students wishing to read a textbook, we recommend: For topics related to discrete mathematics: C. Delizia, P. Longobardi, M. Maj, C. Nicotera. Matematica Discreta, McGraw-Hill (any edition). For programming L. J. Aguilar. Fondamenti di Programmazione in C++. McGraw-Hill (any edition). Students that cannot attend lectures as well as students with disabilities or learning disorders can contact the teacher to get further indication about the educational material. TEACHERS AND EXAM BOARD RADOSLAW NIEWIADOMSKI Ricevimento: The professor is available by appointment at their office on the top floor of Villa Bonino, Viale Causa 13, 16145, Genoa, or remotely. To make an appointment, please send an email. GUALTIERO VOLPE Ricevimento: The lecturer is available by appointment at his office on the top floor of Villa Bonino, Viale Causa 13, 16145, Genoa, or at Casa Paganini, Piazza S. Maria in Passione 34, 16123, Genoa, or remotely on the Microsoft Teams platform. To make an appointment, send an e-mail to gualtiero.volpe@unige.it Exam Board GUALTIERO VOLPE (President) PIERPAOLO BAGLIETTO RADOSLAW NIEWIADOMSKI (President Substitute) CARMINE TOMMASO RECCHIUTO (Substitute) LUCA VERDERAME (Substitute) LESSONS LESSONS START https://easyacademy.unige.it/portalestudenti/index.php?view=easycourse&_lang=it&include=corso Class schedule The timetable for this course is available here: Portale EasyAcademy EXAMS EXAM DESCRIPTION The exam consists of a test composed by two parts. The first part involves a quiz related to theoretical topics. The second part consists of a practical programming test. Each student will have a computer at disposal to perform the test. The test can be taken, at the student's choice, in two different ways: a single test at the end of the second semester (full test) or two intermediate tests, one after the end of the first semester and one after the end of the second semester. As a rule, two appeals are held for the first semester (in January and February) and two appeals for the second semester (in June and July). Students who have taken the first intermediate test at the end of the first semester must complete the exam in the two appeals scheduled for the second intermediate test at the end of the second semester. Thereafter, only the full test may be taken and any scores obtained in the first intermediate test will be lost. Students who retake a test (intermediate or full) and deliver the test will lose the score previously earned. To take the test (intermediate or full), it is mandatory to register within five days prior to the date of the test. Registration is done through the University’s student services portal. The full test scores between 0 and 32 points. For students who choose the intermediate tests, each test scores between 0 and 16 points, and the intermediate test scores are added together to form the overall exam score. Specifically: For each intermediate test: the theory portion scores between 0 and 6 points and is considered passed if at least 3 points are obtained. The programming part scores between 0 and 10 points and is considered passed if at least 6 points are obtained. In case the theory part is not passed, the programming part is not corrected. For the full test: the theory part scores between 0 and 12 points and is considered passed if at least 6 points are obtained. The programming part scores between 0 and 20 points and is considered passed if at least 12 points are obtained. In case the theory part is not passed, the programming part is not corrected. Teachers may award additional points to students who distinguish themselves by being particularly active during class. A final mark of 30 cum laude is awarded if the final score on the examination test is 31 or 32 points. The final score obtained on the examination test remains valid until the end of the next winter session. The student may choose to accept it as long as the score remains valid or take the exam again. 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 The examination test is usually conducted in a computer room. Each student has a computer at disposal to perform the test. The test contains theoretical questions designed to ascertain the student's knowledge of discrete mathematics concepts and the principles of procedural and modular programming, as well as to assess the student's ability to address and solve simple problems related to the concepts presented in the theoretical lectures. Questions may be of different types, such as open-ended questions, multiple choice questions, text understanding and completion, error detection and correction, and analysis of simple portions of code. The exam also contains practice questions that require code development in the C++ language and are designed to ascertain the student's ability to solve simple problems by means of a computer program, and translate a collection of specifications into a program. The correctness of the implementation and adherence to the specifications are evaluated. Exam schedule Data appello Orario Luogo Degree type Note 14/01/2025 09:00 GENOVA Compitino 14/01/2025 09:00 GENOVA Prova pratica 03/02/2025 09:00 GENOVA Compitino 03/02/2025 09:00 GENOVA Prova pratica 09/06/2025 09:00 GENOVA Prova pratica 09/06/2025 09:00 GENOVA Compitino 04/07/2025 09:00 GENOVA Prova pratica 04/07/2025 09:00 GENOVA Compitino 21/07/2025 09:00 GENOVA Prova pratica 01/09/2025 09:00 GENOVA Prova pratica FURTHER INFORMATION None Agenda 2030 - Sustainable Development Goals Quality education Decent work and economic growth Industry, innovation and infrastructure