Logo ČVUT
CZECH TECHNICAL UNIVERSITY IN PRAGUE
STUDY PLANS
2023/2024
UPOZORNĚNÍ: Jsou dostupné studijní plány pro následující akademický rok.

Practical C/C++ programming

Login to KOS for course enrollment Display time-table
Code Completion Credits Range Language
B2B99PPC KZ 6 2P+2C Czech

In order to register for the course B2B99PPC, the student must have registered for the required number of courses in the group BEZBM no later than in the same semester.

Garant předmětu:
Stanislav Vítek
Lecturer:
Stanislav Vítek
Tutor:
Lukáš Liebzeit, Václav Navrátil, Ondřej Nentvich, Stanislav Vítek
Supervisor:
Department of Radioelectronics
Synopsis:

The course introduces students to the C ++ and develops their practical skills in programming in C/C++ with an emphasis on solving computational tasks and multi-threaded applications using parallel programming. The first part of the course is devoted to the object-oriented programming in C++ and provides students with basic data containers of standard library STL. Students learn the principles of parallel programming, multi-threaded applications, synchronization mechanisms and models of multi-threaded applications. The second part is dedicated to develop an algorithmic thinking to solve computational problems by searching the problem state space. Two main approaches are considered: the deterministic search of a graph representation of the state space; and local optimization techniques. Additionally, students will be familiarized with models of arbitrary precision data representations, representation of matrices, and matrix calculations.

Requirements:

The subject assumes a basic knowledge of procedural programming, which can be obtained in the course „Procedural programming“.

Syllabus of lectures:

1. Principles of object-oriented programming: classes, objects, encapsulation

2. Inheritance and Polymorphism

3. Generic types

4. Exceptions and debugging

5. Containers (STL)

6. Data streams and operators

7. Parallel programming - threads, synchronization

8. Parallel Programming - multi-threaded applications, parallelization (eg. OpenMP)

9. Graph structures and search techniques

10. Dynamic Programming

11. Floating point arithmetic, libraries for arbitrary precision arithmetic

12. Matrices and matrix computations

13. C/C++ numerical libraries, optimization algorithms (hill climbing, simulated annealing)

14. Evolution of C/C++, versions and standards (C++11/C++14), portability and compilers

Syllabus of tutorials:

Practical labs are focused on acquiring and practicing programming habits so that students will be able to independently develop readable codes using existing standard libraries and data containers. During the semester, students have to submit a series of assignments to address a particular programming tasks. The score of the assignment consists of correct solution, efficiency of the code, and also points reflecting the quality of the source code regarding its readability and reusability. A particular lab consists of practical mastery of the topics discussed at the lectures and assignment of the related programming task.

Study Objective:

The main goal of the course is to introduce students to the practical aspects of C/C++ programming. Students will learn how to effective implement algorithms and numerical methods that are commonly used in electronic systems.

Study materials:

[1] Stroustrup: Programming: Principles and Practice Using C++ (2nd Edition), 2014, ISBN 978-0321992789

[2] Stroustrup: The C++ Programming Language (4th Edition), 2013, ISBN 978-0321563842

[3] Sedgewick, Wayne: Algorithms (4th Edition), 2011, ISBN 978-0321573513

Note:
Further information:
https://cw.fel.cvut.cz/wiki/courses/b2b99ppc
Time-table for winter semester 2023/2024:
Time-table is not available yet
Time-table for summer semester 2023/2024:
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Mon
Tue
roomT2:D3-209
Vítek S.
11:00–12:30
(lecture parallel1)
Dejvice
T2:D3-209
roomT2:A4-402

12:45–14:15
(lecture parallel1
parallel nr.101)

Dejvice
Laborator
roomT2:A4-402
Vítek S.
14:30–16:00
(lecture parallel1
parallel nr.106)

Dejvice
Laborator
roomT2:A4-402
Liebzeit L.
16:15–17:45
(lecture parallel1
parallel nr.107)

Dejvice
Laborator
Wed
Thu
roomT2:A4-405

07:30–09:00
(lecture parallel1
parallel nr.105)

Dejvice
Laborator
roomT2:A4-405
Nentvich O.
09:15–10:45
(lecture parallel1
parallel nr.102)

Dejvice
Laborator
roomT2:A4-405
Navrátil V.
Nentvich O.

11:00–12:30
(lecture parallel1
parallel nr.103)

Dejvice
Laborator
roomT2:A4-405
Navrátil V.
Nentvich O.

12:45–14:15
(lecture parallel1
parallel nr.104)

Dejvice
Laborator
roomT2:A4-405
Liebzeit L.
14:30–16:00
(lecture parallel1
parallel nr.108)

Dejvice
Laborator
Fri
The course is a part of the following study plans:
Data valid to 2024-03-27
Aktualizace výše uvedených informací naleznete na adrese https://bilakniha.cvut.cz/en/predmet4665206.html