Skip to main content
CODE 94721
ACADEMIC YEAR 2018/2019
CREDITS
SCIENTIFIC DISCIPLINARY SECTOR ING-INF/03
LANGUAGE Italian
TEACHING LOCATION
  • GENOVA
SEMESTER 2° Semester
MODULES Questo insegnamento è un modulo di:
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

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