CODE 66054 ACADEMIC YEAR 2019/2020 CREDITS 9 cfu anno 1 INGEGNERIA INFORMATICA 8719 (L-8) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR ING-INF/05 LANGUAGE Italian TEACHING LOCATION GENOVA SEMESTER Annual TEACHING MATERIALS AULAWEB OVERVIEW Software design and development is one of the cornerstones of today's engineering and development of complex systems. Fondamenti di Informatica is an introductory course that describes several basic concepts in a simple and organic way. The course deals with both theoretical topics and practical aspects, the latter related to the development of C/C ++ code. AIMS AND CONTENT LEARNING OUTCOMES The aim of the course is to provide students with skills related to the design and development of software, using C/C ++ as a reference language. AIMS AND LEARNING OUTCOMES The specific training objectives are articulated along three lines: 1. Understanding aspects of basic theoretical computer science, related to discrete mathematics. 2. Conceptualization of aspects related to the foundations of programming. 3. Extension of these concepts to the case of modular programming and abstract data types. At the end of the course the students will be able to translate specifications into a program written in C/C ++ language, structuring it following a series of guidelines defined in the course. PREREQUISITES None TEACHING METHODS The course includes lectures and practical lessons. Practical lessons imply a series of exercises that students have to do independently, and if they have doubts and observations, ask the tutors for assistance, on a weekly basis. SYLLABUS/CONTENT The program of the course develops along three topics: 1. Elements of discrete mathematics: set theory, relations and functions, basic algebraic structures, introduction to combinatorics. 2. Foundations of programming: introduction to computer science (architecture of computers, information coding), introduction to programming (algorithms, programs and programming languages), structured programming in C++ language (variables, constants, types, operators, expressions, conditions, cycles, functions, mono-dimensional arrays, character strings, multi-dimensional arrays, flows and files, structures, arrays of structures), advanced programming in C ++ language (pointers and references, dynamic memory allocation, recursive functions, function templates). 3. 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 overloads, class templates), abstraction on data (information hiding, types of abstract data, principle of independence from representation), application of abstract data types for the creation of data structures (lists, stacks, queues). RECOMMENDED READING/BIBLIOGRAPHY The educational material includes: - The transparencies presented in classes, available in three different formats: 2 transparencies per page, 4 transparencies per page, 6 transparencies per page; - The material related to the exercises, which will be made available together with each exercise. For those wishing to follow a textbook we recommend: For discrete mathematics related topics: C. Delizia, P. Longobardi, M. Maj, C. Nicotera. Discrete Mathematics, McGraw-Hill (any edition). For the programming part: L. J. Aguilar. Fundamentals of Programming in C ++. McGraw-Hill (any edition). TEACHERS AND EXAM BOARD GUALTIERO VOLPE Ricevimento: Students can make an appointment to meet with the teacher. To set up a meeting with the teacher please make an appointment by sending an email to gualtiero.volpe@unige.it or by calling one of the following telephone numbers: 0103536542 (office), 0102758252 (lab at Casa Paganini). FULVIO MASTROGIOVANNI Ricevimento: The teacher is available as per meeting request by email at: his office on the second floor of the "E" building, Via Opera Pia 13, 16145, Genoa, the EMAROlab, Via Causa 18, 16145, Genoa. Exam Board FULVIO MASTROGIOVANNI (President) GUALTIERO VOLPE (President) PIERPAOLO BAGLIETTO TULLIO VERNAZZA RENATO UGO RAFFAELE ZACCARIA LESSONS Class schedule INFORMATION TECHNOLOGY EXAMS EXAM DESCRIPTION The exam consists of a practical test and an oral exam. The practical test can be taken, according to the student's choice, in two different ways: a single practical test at the end of the second semester or two intermediate tests, one after the end of the first semester, and one after the end of the second semester. ASSESSMENT METHODS The practical test consists of a computer exam, and can give up to 20 points. For those who choose partial tests, each test can give up to 10 points. Only students who pass the practical test (or the two partial tests) are admitted to the oral exam, in particular according to a threshold that can be defined from time to time and on the basis of the exam. The oral exam provides up to 10 points. Exam schedule Data appello Orario Luogo Degree type Note 15/01/2020 09:00 GENOVA Prova pratica 15/01/2020 09:00 GENOVA Compitino 04/02/2020 09:00 GENOVA Prova pratica 04/02/2020 09:00 GENOVA Compitino 12/06/2020 09:00 GENOVA Prova pratica 03/07/2020 09:00 GENOVA Prova pratica 20/07/2020 09:00 GENOVA Prova pratica 07/09/2020 09:00 GENOVA Prova pratica FURTHER INFORMATION None