Information updated until 30/06/2026 CODE 80299 ACADEMIC YEAR 2026/2027 CREDITS 12 cfu anno 1 INFORMATICA 11896 (L-31 R) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR INFO-01/A LANGUAGE Italian TEACHING LOCATION GENOVA SEMESTER 1° Semester TEACHING MATERIALS AULAWEB OVERVIEW The Introduction to Programming course aims to provide the basics of algorithms and programming, with a particular emphasis on scientific reasoning and computational thinking. The course combines classroom teaching activities with guided workshops to deepen and consolidate the topics covered in class. The course has a strong applied focus, and students are encouraged to tackle problems of increasing complexity independently. Guidelines for students with certified Specific Learning Disorders, disabilities, or other special educational needs are available at https://corsi.unige.it/corsi/11896/studenti-disabilita-dsa AIMS AND CONTENT LEARNING OUTCOMES The aim of the course is for participants to become familiar with algorithm development and the methods for designing, implementing, and validating small, easily understandable code based on informal user-provided specifications. The imperative programming approach will be followed using the C++ language, limited to the non-object-oriented portion. AIMS AND LEARNING OUTCOMES Upon completion of the module, the student should: Know the principles of computational thinking Know the fundamental concepts of basic algorithm development and imperative programming Be able to use text-based program development tools (written in C++, limited to the non-object-oriented part), with a text editor, command-line compilation and execution. Know the principles of designing, implementing, and validating a small sequential program starting from informal specifications provided by the user. Be able to produce correct and understandable code; as well as understand, use, and modify code produced by others. PREREQUISITES There are no specific requirements 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 lectures and a substantial amount of practical programming, including laboratory work and homework. The start date of the lab will be announced in class. Topics Covered in Class Introduction to the course, computational thinking, algorithms, and programming. Programming environments and formal languages. Algorithm development in pseudocode: simple data structures and algorithms for homogeneous and heterogeneous data sequences. Imperative programming: variables and constants; assignment; input/output; selection constructs; iteration constructs; basic types; structured data types: sequences and structs; functions and parameter passing mechanisms; pointers; dynamic heap allocation; dynamic arrays; simple lists and operations on simple lists; simple 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 ENRICO PUPPO Ricevimento: Appointment by email: enrico.puppo@unige.it During class period appointments for groups can be set by posting on the course forum on AulaWeb. NICOLETTA NOCETI Ricevimento: Please contact the instructor by email of preferably via Teams. MAURIZIO LEOTTA Ricevimento: Students may contact the professor by e-mail LESSONS LESSONS START According to the calendar approved by the Degree Program Board: https://corsi.unige.it/en/corsi/11896/studenti-orario 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 Guidelines for students with certified Specific Learning Disorders, disabilities, or other special educational needs are available at https://corsi.unige.it/en/corsi/11896/studenti-disabilita-dsa ASSESSMENT METHODS The theory test will allow us to verify the acquisition of: Principles of computational thinking and fundamental concepts of imperative programming with classical programming languages Basics of imperative programming and use of a textual environment for program development (created in C++ language, limited to the non-object-oriented part), with a text editor, compilation and execution from the command line. The laboratory test will allow us to verify: Acquisition of the principles of design, implementation and validation of a small sequential program starting from the informal specifications provided by the user. Ability to produce correct and comprehensible code; ability to understand, use, modify code produced by others FURTHER INFORMATION For further information, please refer to the course’s AulaWeb module or contact the instructor.