Skip to main content
CODE 94721
ACADEMIC YEAR 2021/2022
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

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

Exam Board

LUCIO MARCENARO (President)

CARLO REGAZZONI

RODOLFO ZUNINO

PAOLO GASTALDO (President Substitute)

LESSONS

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