CODE 94721 ACADEMIC YEAR 2021/2022 CREDITS 6 cfu anno 2 INGEGNERIA ELETTRONICA E TECNOLOGIE DELL'INFORMAZIONE 9273 (L-8) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR ING-INF/03 LANGUAGE Italian TEACHING LOCATION GENOVA SEMESTER 2° Semester MODULES Questo insegnamento è un modulo di: LABORATORY OF INFORMATICS AND TELEMATICS & ARCHITECTURES OF ELECTRONIC SYSTEMS TEACHING MATERIALS AULAWEB AIMS AND CONTENT LEARNING OUTCOMES The student who has successfully followed the teaching of "Computer Science and Telematics Laboratory" will be able to design, create and verify the operation of a complex software system, using UML methodologies and object-oriented programming techniques. AIMS AND LEARNING OUTCOMES During this teaching module the student will learn to: Use versioning systems with a focus on git Develop programs and libraries using the C# programming language. In particular, the student will be able to: create and use variables write and read from the console write and use conditional statements, loops and vectors create and use objects and their methods use constructors, static variables and methods, namespaces, exceptions and strings create new classes, structures, enums also with the use of generics read and write files model linear data structures, trees, graphs, sets and hash maps Verify the correct functioning of the software developed using the unit tests Write C # programs using an object-oriented approach. In particular, the student will be able to: use interfaces, encapsulation, polymorphism, delegates and events apply some design patterns (in particular observer, enumerator) create extension methods, anonymous types use lambda expressions and LINQ Implement simple graphical interfaces with windows forms Implement web services with the windows communication framework Design complex software systems with the UML methodology TEACHING METHODS The lessons alternate theoretical explanations with practical exercises. Theoretical explanations are frequently exemplified with the analysis, execution, and debugging of code fragments directly on the teacher's PC. All the material used in class (slides and practical examples) is shared through the AulaWeb and Teams platforms. Students can interact directly with the teacher during lessons or through the Teams platform. During the lectures, students are offered a certain number of practical exercises that must be delivered according to a specific time schedule using the GitHub site. Upon reaching 60% -80% of exercises correctly completed and delivered in the manner required, the student is entitled to 1 to 5 bonus points on the final grade of the exam. SYLLABUS/CONTENT Introduction Versioning Git as a tool for version control Git: use of remote repository, branching and merging Local and distributed workflow, remote branch, rebasing and stashing Introduction to the Object Oriented Programming and C# - .NET framework Primitive types and variables in C# Console I/O, conditional statements Loops and arrays in C# Unit testing Methods, creation and use of objects in C# Builders, variables and static methods, namespaces Exceptions and strings in C# Defining classes in C#: member variables, methods, constructors, properties, structures, enum, generic classes Reading and writing files, linear data structures Trees, graphs, hash sets and maps Basic Concepts Object Oriented Programming with applications to C# Interfaces Encapsulation, polymorphism, cohesion and coupling Destructors, overloaded operators, enumerators Delegates, events and observer design pattern; extension methods, anonymous types Lambda expressions, LINQ, GUI development with Windows Forms Web services and WCF RECOMMENDED READING/BIBLIOGRAPHY Slides Robert C. Martin and Micah Martin. 2006. Agile Principles, Patterns, and Practices in C# (Robert C. Martin). Prentice-Hall PTR, Upper Saddle River, NJ, USA. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA. Joseph Albahari and Ben Albahari. C# 5.0 in a Nutshell: The Definitive Reference. O'Reilly Media; Fifth Edition edition (June 26, 2012) Jennifer Greene and Andrew Stellman. Head First C#. O'Reilly Media; 3 edition (September 16, 2013) TEACHERS AND EXAM BOARD LUCIO MARCENARO Ricevimento: on request Exam Board LUCIO MARCENARO (President) CARLO REGAZZONI RODOLFO ZUNINO PAOLO GASTALDO (President Substitute) LESSONS LESSONS START https://corsi.unige.it/9273/p/studenti-orario Class schedule The timetable for this course is available here: Portale EasyAcademy EXAMS EXAM DESCRIPTION The exam is held on the dates in the official calendar from 9 AM to 1 PM. Students who take a final exam will have to answer a test with 62 multiple-choice questions (1h30m time limit) and set up a complex software project with a test-driven approach. This second part of the exam can be made in pairs. ASSESSMENT METHODS Through the lectures, some exercises are presented, divided into blocks whose themes are aligned with the topics of the theoretical part. Students attending the lectures can do the exercises and load the corresponding source code in a specific repository on GitHub, following a schedule table that is communicated during the first lesson. The teacher evaluates the exercises completed on time suggesting possible fixes and code improvements. Students who at the end of the year have carried out correctly at least 80% of the proposed exercises are entitled to a bonus on the final grade. Exam schedule Data appello Orario Luogo Degree type Note 11/01/2022 09:00 GENOVA Scritto + Orale 11/01/2022 10:30 GENOVA Scritto 25/01/2022 09:00 GENOVA Scritto + Orale 08/02/2022 10:30 GENOVA Scritto 09/02/2022 09:00 GENOVA Scritto + Orale 10/06/2022 09:00 GENOVA Scritto + Orale 14/06/2022 10:30 GENOVA Scritto 17/06/2022 09:00 GENOVA Scritto + Orale 28/06/2022 09:00 GENOVA Scritto + Orale 08/07/2022 09:00 GENOVA Scritto + Orale 13/07/2022 10:30 GENOVA Scritto 03/08/2022 09:00 GENOVA Scritto + Orale 06/09/2022 10:30 GENOVA Scritto 07/09/2022 09:00 GENOVA Scritto + Orale