CODE 94721 ACADEMIC YEAR 2018/2019 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: LABORATORIO DI INFORMATICA E TELEMATICA & ARCHITETTURE DEI SISTEMI ELETTRONICI TEACHING MATERIALS AULAWEB AIMS AND CONTENT AIMS AND LEARNING OUTCOMES During the first part of the course students will learn the theoretical basis of concurrent versioning systems for software development and to properly use the Git system. Students who have followed the course with profit will be able to develop programs and libraries by using the C# programming language and in particular will have the knowledge to: create and use variables, write and read from the console, write and use conditional statements, cycles and arrays, create and use objects and their methods. Through specific exercises, the students will focus on the use of the constructors, variables and static methods, namespaces, exceptions and strings. He/she will also be able to create new classes, structures, enums with the use of generics. The course explains techniques for reading and writing files, linear data structures, trees, graphs, hash sets and maps. The student will learn the basic concepts of object-oriented programming, interfaces, encapsulation, polymorphism. The details of the delegates and events will be described, together with some design patterns (observer, enumerator), extension methods, anonymous types, lambda expressions and LINQ. In the last part of the course, students will learn to implement simple user interfaces with Windows Forms and web services with Windows communication framework. TEACHING METHODS Lessons alternate theoretical explanations with practical exercises. The theoretical explanations are frequently illustrated with the analysis, execution and debugging of code snippets directly on the teacher's PC. All material seen in class (slides and practical examples) is shared through AulaWeb platform. A forum is activated on the same platform where students can interact directly with the teacher asking questions of public interest. During the course, students are offered a number of practical exercises to be delivered according to a precise schedule using the GitHub site. Upon reaching 80% of exercises correctly done and delivered as required, the student is entitled to bonus points on the final grade. 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 Course 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: Tel: 010 3532060 email: lucio.marcenaro@unige.it Exam Board PAOLO GASTALDO (President) LUCIO MARCENARO (President) CARLO REGAZZONI RODOLFO ZUNINO LESSONS LESSONS START The start of classes is scheduled as the official calendar of the Polytechnic School 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 course some exercises are presented, divided into blocks whose themes are aligned with the topics of the theoretical part. Students attending the course 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 of the course. 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 08/01/2019 09:00 GENOVA Scritto 09/01/2019 10:30 GENOVA Scritto 22/01/2019 09:00 GENOVA Scritto 05/02/2019 09:00 GENOVA Scritto 18/02/2019 10:30 GENOVA Scritto 19/02/2019 09:00 GENOVA Scritto 11/06/2019 09:00 GENOVA Scritto 18/06/2019 09:00 GENOVA Scritto 18/06/2019 10:30 GENOVA Scritto 25/06/2019 09:00 GENOVA Scritto 09/07/2019 09:00 GENOVA Scritto 16/07/2019 10:30 GENOVA Scritto 25/07/2019 09:00 GENOVA Scritto 04/09/2019 10:30 GENOVA Scritto 10/09/2019 09:00 GENOVA Scritto