ADVANCED ALGORITHMS AND PROGRAMMING METHODS - 2

Academic year
2019/2020 Syllabus of previous years
Official course title
ADVANCED ALGORITHMS AND PROGRAMMING METHODS - 2
Course code
CM0470 (AF:306565 AR:166131)
Modality
On campus classes
ECTS credits
6 out of 12 of ADVANCED ALGORITHMS AND PROGRAMMING METHODS
Degree level
Master's Degree Programme (DM270)
Educational sector code
INF/01
Period
1st Semester
Course year
1
Where
VENEZIA
Moodle
Go to Moodle page
The goal of the course is to improve the skills of the student in the translation of general algorithms to structured code through an object-oriented language. Specifically, it will address the advanced programming paradigms made available by most modern programming languages, including advanced design patterns and data manipulation through functional approaches.
1. Knowledge and understanding
1.1. knowledge of the C ++ language
1.2. knowledge of static polymorphism techniques and template meta-programming

2. Ability to apply knowledge and understanding
2.1. know how to apply multiparadigm techniques and patterns;
2.2. know how to document design choices and understand their consequences;

3. Judgement
3.1. know how to understand the design tradeoff between simplicity and generality of use, performance, scalability and maintainability;
3.2. know how to analyze the performance of a program and link bottlenecks to design choices.
Object oriented programming.
Intro to C++
classes
operators
inheritance
polymorphism
generic programming

Semantics and policies
type semantics
value and reference
lifetime and ownership policies
policy-based design

Functors and lambdas
stateful functors
overloading/overriding and double dispatching functors
lambdas
higher order functions
separation of operation and transversal
generalized associativity/commutativity
optimization of reduction
Closures
Continuations

Event programming patterns
command
listener/callback
future and promises
Asynchronous Completion Token pattern
Reactor pattern
Acceptor-Connector pattern
Proactor pattern
Bjarne Stroustrup, Programming Principles and Practice Using C++, 2nd Ed. Addison Wesley, 2014
The teaching is aimed at allowing the student to gain practical competences in the design and development of complex computer programs using object oriented methodologies.

Testing is performed through a project to be developed during the class with in itinere assignments, or a project and an oral exam.

The project allows the student to acquire and demonstrate practical competences in the design and development of multi-paradigm programs.

During the oral exam the student must demonstrate knowledge of the arguments presented during the course and competence in the formal exposition of the concepts.
Class lectures, project with in itinere assignments and evaluation
English
The teaching is aimed at allowing the student to gain practical competences in the design and development of complex computer programs using object oriented methodologies.

Testing is performed through a project and/or written and an oral exam.

The project, to be developed during the class with in itinere assignments, allows the student to acquire and demonstrate practical competences in the design and development of multi-paradigm programs.

The written test consists of exercises aimed at evaluating the skills acquired in solving design problems and representation of complex realities. The written test can be replaced by the project or the in-itinere assignments. During the written test the use of books, notes, or electronic media is not allowed.

During the oral exam the student must demonstrate knowledge of the arguments presented during the course and competence in the formal exposition of the concepts.
oral
Definitive programme.
Last update of the programme: 07/06/2019