CODE 80299 ACADEMIC YEAR 2024/2025 CREDITS 12 cfu anno 1 INFORMATICA 8759 (L-31) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR INF/01 TEACHING LOCATION GENOVA SEMESTER 1° Semester SECTIONING Questo insegnamento è diviso nelle seguenti frazioni: A B TEACHING MATERIALS AULAWEB OVERVIEW The course aims to provide the earliest programming bases, giving particular emphasis to scientific reasoning and computational thinking. The course includes classes as well as practical labs whose purpose is to deepen and consolidate the topics seen in the classroom. The course has a strong applicative connotation, where the student is encouraged to face problems of increasing complexity in autonomy. AIMS AND CONTENT LEARNING OUTCOMES Computational Thinking principles Basic knowledge of the fundamental concepts of imperative programming Introduction to an imperative programming language ( C++ limited to non-object oriented concepts ), with a text editor, compiling, and command-line execution. Principles of designing, implementing, and validating a small sequential program based on the informal specifications provided by the user. Ability to produce correct and comprehensible code; Ability to understand, use, modify code. TEACHING METHODS Classroom lessons Guided Laboratories Homework delivered through aulaweb Given the cultural importance of this course (at the core of all undergraduate computer science courses) attending classes and labs is strongly encouraged and suggested SYLLABUS/CONTENT The course consists of a part of theoretical lessons that take place in the classroom and a substantial practical part of programming activities that takes place in the lab. Main topics: Introduction to the course, computational thinking, and programming. Programming environments and formal languages. Imperative programming: variables and instructions; assignment; input / output; if-then-else; loops; types; structured types: 1-dim or multi-dim arrays, strings, struct; functions and parameters passing; pointers; dynamically allocating memory (heap); dynamic vectors; linked lists ; recursion RECOMMENDED READING/BIBLIOGRAPHY Slides will be available but are not sufficient getting ready for the exam. Reference book: D.S. Malik Programmazione in C++ Apogeo, 2011, ISBN 978-88-503-2967-0 (or english version) Alternatively B. Stroustrup, Programming: Principles and Practice Using C++, Addison-Westley, 2009, ISBN 978-0321543721. TEACHERS AND EXAM BOARD STEFANO ROVETTA Ricevimento: All lecture days after class (approx. 20 min). Upon prior agreement, at any other time. Since the teacher is in charge of several courses, if you are getting in touch with means other than in person (email, Teams messaging, Aulaweb mesaging...) please specify which degree and which course you are referring to. EUGENIO MOGGI Ricevimento: See the aulaweb module and as second alternative the web page https://person.dibris.unige.it/moggi-eugenio/ ARNAUD HENRI PAUL SANGNIER Ricevimento: Reception through appointment via mail. Exam Board STEFANO ROVETTA (President) EUGENIO MOGGI ENRICO PUPPO (President Substitute) MAURIZIO LEOTTA (Substitute) ARNAUD HENRI PAUL SANGNIER (Substitute) LESSONS Class schedule The timetable for this course is available here: Portale EasyAcademy EXAMS EXAM DESCRIPTION The exam is made of 2 parts a written examination on theory a laboratory exam, accessible after theory exam has been positively evaluated More details on AULAWEB ASSESSMENT METHODS The theoretical test will verify that the student has a full grasp of: computational thinking principles and foundational concepts of imperative programming with classical programming languages foundations of imperative programming and use of text-based program development environment (using the C++ language, limited to the non-object-oriented parts) using text editor and compile-execution-run cycle based on command line instruction interaction. The lab test will veify that the student has: Acquired the design, coding and testing basics of small-sized sequential programs starting from user-provided informal specifications. Ability of producing correct and understandable code; ability to understand, use, modify code from other programmers. Exam schedule Data appello Orario Luogo Degree type Note 07/01/2025 09:00 GENOVA Scritto 16/01/2025 09:00 GENOVA Laboratorio 05/02/2025 09:00 GENOVA Scritto 17/02/2025 09:00 GENOVA Laboratorio 03/06/2025 09:00 GENOVA Scritto 12/06/2025 09:00 GENOVA Laboratorio 01/07/2025 09:00 GENOVA Scritto 10/07/2025 09:00 GENOVA Laboratorio 04/09/2025 09:00 GENOVA Scritto 17/09/2025 09:00 GENOVA Laboratorio Agenda 2030 - Sustainable Development Goals Gender equality Decent work and economic growth Industry, innovation and infrastructure