General information:
Code:
UBPJO-224
Name:
Advanced programming in C++
Profile of education:
Academic (A)
Lecture language:
English
Semester:
Spring
Course homepage:
 
Responsible teacher:
Macioł Piotr (pmaciol@agh.edu.pl)
Academic teachers:
Macioł Piotr (pmaciol@agh.edu.pl)
Module summary

The course is focused on features of the newest standard of C++. The programming style and choice of programming techniques are discussed. Students design own projects.

Description of learning outcomes for module
MLO code Student after module completion has the knowledge/ knows how to/is able to Connections with FLO Method of learning outcomes verification (form of completion)
Skills
M_U001 Potrafi zaprojektować strukturę programu Knows how to design a code's structure -
M_U002 Potrafi stosować zaawansowane techniki C++ Is able to use advanced techniques of C++ language -
Knowledge
M_W001 Zna bibliotekę standardową i Boost Knows STL and Boost library -
M_W002 Zna podstawy metaprogramowania Knows the basis of metaprogramming - Test
M_W003 Potrafi zaimplementować program w zaawansowanym języku C++ Knows how to implement a program with modern C++ -
FLO matrix in relation to forms of classes
MLO code Student after module completion has the knowledge/ knows how to/is able to Form of classes
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Others
E-learning
Skills
M_U001 Potrafi zaprojektować strukturę programu Knows how to design a code's structure + - + - - - - - - - -
M_U002 Potrafi stosować zaawansowane techniki C++ Is able to use advanced techniques of C++ language + - + - - - - - - - -
Knowledge
M_W001 Zna bibliotekę standardową i Boost Knows STL and Boost library + - + - - - - - - - -
M_W002 Zna podstawy metaprogramowania Knows the basis of metaprogramming + - + - - - - - - - -
M_W003 Potrafi zaimplementować program w zaawansowanym języku C++ Knows how to implement a program with modern C++ + - + - - - - - - - -
Module content
Lectures:

C++ history and development (C++ Committee)
Present and close future C++ standard (C++11/14/17)
Valid C++ code organization
Memory management in C++
Exceptions
Namespaces
(Advanced) templates
Generic programming
Design Patterns
The Standard Library (STL)

  1. C Standard Library
  2. Containers
  3. Threads
  4. IO
  5. Algorithms
  6. Etc.
    Metaprogramming
    Boost library

Laboratory classes:

Valid C++ code organization
Memory management in C++
Exceptions
Namespaces
(Advanced) templates
Generic programming
Design Patterns
The Standard Library (STL)
Git

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 158 h
Module ECTS credits 6 ECTS
Participation in project classes 28 h
Participation in lectures 28 h
Examination or Final test 2 h
Completion of a project 30 h
Preparation for classes 15 h
Realization of independently performed tasks 45 h
Contact hours 10 h
Additional information
Method of calculating the final grade:

OK = 0,51 * egzamin + 0,49 * zaliczenie
Final mark = 0.51*exam + 0.49*laboratory

Prerequisites and additional requirements:

Basic knowledge of C++ programming

Recommended literature and teaching resources:

Jerzy Grębosz, Symfonia & Pasja C++
Andrei Alexandrescu and Herb Sutter C++ coding standards (2004)
Robert C. Martin, Clean Code
Scott Meyers, Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
A. Alexandrescu, Modern C++ Design
The C++ Programming Language Fourth Edition; Bjarne Stroustrup

Scientific publications of module course instructors related to the topic of the module:

Macioł, Piotr; Buerau, Romain; Poletti, Cecilia; Sommitsch, Christof; Warczok, Piotr; Kozeschnik, Ernst; Agile multiscale modelling of the thermo-mechanical processing of an aluminium alloy (Inproceeding); Esaform 2015, 2015.
Macioł, Piotr; Bureau, Romain; Sommitsch, Christof; An Object-Oriented Analysis of Complex Numerical Models (Journal Article); Key Engineering Materials, 611-612 , pp. 1356–1363, 2014, ISSN: 1662-9795.
Macioł, Piotr; Gawąd, Jerzy; Kuziak, Roman; Pietrzyk, Maciej; Internal Variable and Cellular Automata-Finite Element Models of Heat Treatment (Journal Article); International Journal for Multiscale Computational Engineering, 8 (3), pp. 267–285, 2010.

Additional information:

None