CODE 52473 ACADEMIC YEAR 2024/2025 CREDITS 8 cfu anno 1 MATEMATICA 8760 (L-35) - GENOVA 8 cfu anno 1 STATISTICA MATEM. E TRATTAM. INFORMATICO DEI DATI 8766 (L-35) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR INF/01 LANGUAGE Italian TEACHING LOCATION GENOVA SEMESTER 2° Semester TEACHING MATERIALS AULAWEB OVERVIEW The purpose of the course "Programmazione 1" is to provide the notions for imperative programming in high-level languages. In particular, we will introduce a subset of the C++ programming language. "Programmazione 1" is a practical course, where the objective is learning how to program. Most of the teaching hours will be spent in laboratory. Even the classroom lessons will be aimed at providing the necessary basic notions, models and tools, to enable the student learn how to program with an imperative language, here C/C++. AIMS AND CONTENT LEARNING OUTCOMES Introduction to programming, in particular to the imperative paradigm, throught the C++ language. After attending the classes, the student will be able to write simple programs in the C++ programming language, and will know models and structures useful for learning other imperative programming languages in the future. AIMS AND LEARNING OUTCOMES This course will provide some necessary basic notions about computer architecture, data representation, operating system. It will introduce the notions of algorithm and program, high-level programming languages and execution models (compiled or interpreted languages). It will present the basic concepts and features of programming in a high-level imperative language (variables, statements, instructions for controlling the execution flow, functions), using the C/C++ language as a case study. It will provide the guide lines for the design of small-size programs solving a simple problem and for testing them. The considered example of high-level languages will be (the impeative subset of) the C++ programming language. The course will be practical. Every lesson will be immediately followed with activities in laboratory, where the introduced notions will be applied to the development of C++ programs. After attending this course, the student will: know the features of a high-level imperative programming language. be able to develop an algorithm and to translate it into a C++ program (for simple algorithms / small programs). be able to recognize the typical concepts and features of imperative languages in other languages similar to C++, and will therefore be able to learn new languages of the same family. PREREQUISITES None. TEACHING METHODS "Programmazione 1" takes place in the second semester. There will be 3 classroom hours and 4 laboratory hour per week. Every week some laboratory assignments will be given. The students will have the opportunity to deliver some of such exercises (not evaluated for the exam) and obtain useful feedback. In some weeks, recap exercises will be assigned. If delivered and positively evaluated, such recap exercises will gain up to 2 bonus marks for the final exam (see section on Assessment methods). SYLLABUS/CONTENT Basics about computers: data representation and arithmetic processors; hints about computer architecture and operating systems, limited to the basic notions for understanding how programs are executed. Introduction to Programming: high-level programming languages; state and change of state; xpressions, variables, declarations; basic instructions (assignment, conditional, cycles, input/output); functions; basic and structured types (array, struct); some useful predefined types (string, vector); simple algorithms and their implementation; structured and modular programming. Programming: design of small sequential programs starting from the informal specification of the problem; program compilation; code execution; basic ideas of testing. The considered example of high-level language will be the imperative subset of the C++ programming language. RECOMMENDED READING/BIBLIOGRAPHY Course notes published on aulaweb. Online resources about the C++ programming language (links provided on aulaweb). Other useful books: Programming Principles and Practice using C++. B. Stroustrup. Addison-Wesley Professional, 2008 C++. Fondamenti di programmazione. H. M. Deitel, P. J. Deitel; Editore: Apogeo 2009 Che C serve? Per iniziare a programmare. Burattini, Chianese, Picariello, Moscato, Sansone. Maggioli editore 2016. TEACHERS AND EXAM BOARD PAOLA MAGILLO Ricevimento: On request. Appointment by email (paola.magillo@unige.it) MATTEO DELL'AMICO Ricevimento: By appointment (in person or online), taken via email (matteo.dellamico@unige.it). NICOLETTA NOCETI Ricevimento: Please contact the instructor by email of preferably via Teams. Exam Board PAOLA MAGILLO (President) NICOLETTA NOCETI MATTEO DELL'AMICO (President Substitute) LESSONS LESSONS START The class will start according to the academic calendar. Class schedule The timetable for this course is available here: Portale EasyAcademy EXAMS EXAM DESCRIPTION The final exam consists of: a quiz test (delivered using Aulaweb) about the contents of the course a laboratory test, consisting in writing a C ++ program It is not necessary that the two tests are passed in the same session. The exam is passed when the quiz test (with outcome> = 18) and laboratory (with outcome> = 18) are passed. The final grade will be the average of the two outcomes, possibly summed up with the (at most 2) bonus marks obtained by delivering the recup exercises during the semester (see section on Teaching methods). ASSESSMENT METHODS The quiz test will evaluate the acquisition of basic concepts presented during the course. The questions will be about the C++ instructions, their properties, understanding C++ code, and may require to write small fragments of C++ code. The laboratory test will evaluate the ability to develop correct C ++ code to solve small problems, and consists of completing a "template" program that will be provided. The evaluation will take into account the following aspects in order of decreasing importance: the code runs and gives correct results (minimum requirement) style and readability of the code calculation efficient Exam schedule Data appello Orario Luogo Degree type Note 15/01/2025 09:00 GENOVA Scritto 16/01/2025 09:00 GENOVA Laboratorio 06/02/2025 09:00 GENOVA Scritto 07/02/2025 09:00 GENOVA Laboratorio 18/06/2025 09:00 GENOVA Scritto 20/06/2025 09:00 GENOVA Laboratorio 10/07/2025 09:00 GENOVA Scritto 11/07/2025 09:00 GENOVA Laboratorio 05/09/2025 09:00 GENOVA Scritto 08/09/2025 09:00 GENOVA Laboratorio FURTHER INFORMATION No prerequisite is required. Basics of logic and mathematics normally provided by the high school are still useful. Students who have valid certification of physical or learning disabilities on file with the University and who wish to discuss possible accommodations or other circumstances regarding lectures, coursework and exams, should speak both with the instructor and with Professor Sergio Di Domizio (sergio.didomizio@unige.it), the Department’s disability liaison. Agenda 2030 - Sustainable Development Goals Quality education Gender equality