General information:
Name:
Advanced programming in C++
Code:
int.courses-224
Profile of education:
Academic (A)
Lecture language:
English
Semester:
Spring
Responsible teacher:
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: he can
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: he knows and understands
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++
Number of hours for each form of classes:
Sum (hours)
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
56 28 0 28 0 0 0 0 0 0 0 0
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
Prace kontr. przejść.
Lektorat
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++ + - + - - - - - - - -
Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 158 h
Module ECTS credits 6 ECTS
Udział w zajęciach dydaktycznych/praktyka 56 h
Preparation for classes 15 h
przygotowanie projektu, prezentacji, pracy pisemnej, sprawozdania 30 h
Realization of independently performed tasks 45 h
Examination or Final test 2 h
Contact hours 10 h
Module content
Lectures (28h):

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 (28h):

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

Additional information
Teaching methods and techniques:
  • Lectures: Treści prezentowane na wykładzie są przekazywane w formie prezentacji multimedialnej w połączeniu z klasycznym wykładem tablicowym wzbogaconymi o pokazy odnoszące się do prezentowanych zagadnień.
  • Laboratory classes: W trakcie zajęć laboratoryjnych studenci samodzielnie rozwiązują zadany problem praktyczny, dobierając odpowiednie narzędzia. Prowadzący stymuluje grupę do refleksji nad problemem, tak by otrzymane wyniki miały wysoką wartość merytoryczną.
Warunki i sposób zaliczenia poszczególnych form zajęć, w tym zasady zaliczeń poprawkowych, a także warunki dopuszczenia do egzaminu:

Participation rules in classes:
  • Lectures:
    – Attendance is mandatory: No
    – Participation rules in classes: Studenci uczestniczą w zajęciach poznając kolejne treści nauczania zgodnie z syllabusem przedmiotu. Studenci winni na bieżąco zadawać pytania i wyjaśniać wątpliwości. Rejestracja audiowizualna wykładu wymaga zgody prowadzącego.
  • Laboratory classes:
    – Attendance is mandatory: Yes
    – Participation rules in classes: Studenci wykonują ćwiczenia laboratoryjne zgodnie z materiałami udostępnionymi przez prowadzącego. Student jest zobowiązany do przygotowania się w przedmiocie wykonywanego ćwiczenia, co może zostać zweryfikowane kolokwium w formie ustnej lub pisemnej. Zaliczenie zajęć odbywa się na podstawie zaprezentowania rozwiązania postawionego problemu. Zaliczenie modułu jest możliwe po zaliczeniu wszystkich zajęć laboratoryjnych.
Method of calculating the final grade:

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

Sposób i tryb wyrównywania zaległości powstałych wskutek nieobecności studenta na zajęciach:

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