|
|
Main menu for Browse IS/STAG
Course info
KIV / CPP
:
Course description
Department/Unit / Abbreviation
|
KIV
/
CPP
|
Academic Year
|
2023/2024
|
Academic Year
|
2023/2024
|
Title
|
Programming in C++
|
Form of course completion
|
Exam
|
Form of course completion
|
Exam
|
Accredited / Credits
|
Yes,
4
Cred.
|
Type of completion
|
Combined
|
Type of completion
|
Combined
|
Time requirements
|
Lecture
2
[Hours/Week]
Tutorial
1
[Hours/Week]
|
Course credit prior to examination
|
Yes
|
Course credit prior to examination
|
Yes
|
Automatic acceptance of credit before examination
|
No
|
Included in study average
|
YES
|
Language of instruction
|
Czech
|
Occ/max
|
|
|
|
Automatic acceptance of credit before examination
|
No
|
Summer semester
|
0 / -
|
0 / -
|
0 / -
|
Included in study average
|
YES
|
Winter semester
|
0 / -
|
2 / -
|
12 / -
|
Repeated registration
|
NO
|
Repeated registration
|
NO
|
Timetable
|
Yes
|
Semester taught
|
Winter semester
|
Semester taught
|
Winter semester
|
Minimum (B + C) students
|
10
|
Optional course |
Yes
|
Optional course
|
Yes
|
Language of instruction
|
Czech
|
Internship duration
|
0
|
No. of hours of on-premise lessons |
0
|
Evaluation scale |
1|2|3|4 |
Periodicity |
každý rok
|
Evaluation scale for credit before examination |
S|N |
Periodicita upřesnění |
|
Fundamental theoretical course |
No
|
Fundamental course |
Yes
|
Fundamental theoretical course |
No
|
Evaluation scale |
1|2|3|4 |
Evaluation scale for credit before examination |
S|N |
Substituted course
|
None
|
Preclusive courses
|
N/A
|
Prerequisite courses
|
N/A
|
Informally recommended courses
|
KIV/PC and KIV/PPA and KIV/ADT
|
Courses depending on this Course
|
N/A
|
Histogram of students' grades over the years:
Graphic PNG
,
XLS
|
Course objectives:
|
The goal of this course is to introduce students to modern C++ and its practical applications. The course focuses on writing safe, effective code, which still remains clean and easy to maintain.
|
Requirements on student
|
To receive accreditation, the student needs to be present on at least 70 % of seminars, to hand in 2 seminar works assigned during the semester and to gain at least 10 points from each of them. Maximum possible points per seminar work is 25. In case of exceptional performance, the student may be rewarded with up to 10 additional points during seminars.
The exam is practical and is held in a computer lab. The student is assigned a task of creating or enhancing a program in C++ programming language. The student is required to gain at least 20 points out of 40 possible. The resulting mark is determined according to sum of points gained during semester and exam.
Function, use of correct C++ language features, readability, safety and effectivity of code and its documentation is judged.
|
Content
|
1. Basic concepts of modern C++, coding standard, std::array, std::vector
2. Memory representation of data types, STL, iterators, RAII, smart pointers
3. Objects, virtual methods, const, constexpr and final, function and operator overloading
4. Lambda functions, exceptions, std:: algorithms, random number generators
5. Multiple inheritance, working with types, streams (files and other)
6. Copy and move semantics, templates
7. Variadic templates, dynamic vs. static polymorphism, CRTP
8. Threads in C++ and basic synchronization primitives, parallel algorithms
9. Concepts, coroutines, modules
10. Debugging the code
11. Program profiling, memory leaks
12. Compiling selected high-level constructs (e.g.; devirtualization), optimalization, clean abstraction
13. Selected support libraries and tools of C++ (Boost, Qt, CMake)
|
Activities
|
|
Fields of study
|
|
Guarantors and lecturers
|
|
Literature
|
-
Basic:
Stroustrup Bjarne. A Tour of C++ (C++ In-Depth). Addison Wesley, 2013.
-
Recommended:
Meyers Scott. Effective Modern C++ 42 Specific Ways to Improve Your Use of C++11 and C++14. O'Reilly Media, 2015. ISBN 978-1491903995.
-
On-line library catalogues
|
Time requirements
|
All forms of study
|
Activities
|
Time requirements for activity [h]
|
Preparation for an examination (30-60)
|
30
|
Total
|
30
|
Full-time form of study
|
Activities
|
Time requirements for activity [h]
|
Contact hours
|
39
|
Individual project (40)
|
38
|
Total
|
77
|
|
Prerequisites
|
Knowledge - students are expected to possess the following knowledge before the course commences to finish it successfully: |
To know the C programming language and how to use it, and at least one object-oriented programming language. |
To understand and be able to use theoretical informatics knowledge (e.g.; computational complexity) |
To know the basic principles of CPU operation and division of address space (memory allocation, stack, heap) |
Skills - students are expected to possess the following skills before the course commences to finish it successfully: |
To be able to analyze and decompose a given problem, propose algorithmic solution and implement it. |
Competences - students are expected to possess the following competences before the course commences to finish it successfully: |
N/A |
N/A |
N/A |
N/A |
|
Learning outcomes
|
Knowledge - knowledge resulting from the course: |
To know basic and advanced C++ language features including the ones from modern standards. |
To know the principles of modern compiled programming languages and their relation to effectivity and safety. |
To know how C++ relates to other programming languages. |
Skills - skills resulting from the course: |
To be able to use C++ to implement small and medium-sized software projects with maximum utilization of language features to increase code safety and effectivity of a resulting program. |
To know how to analyze and evaluate quality of own program using available tools. |
To be able to decide, whether to use C++ programming language to solve given problem or not. |
Competences - competences resulting from the course: |
N/A |
|
Assessment methods
|
Knowledge - knowledge achieved by taking this course are verified by the following means: |
Practical exam |
Skills demonstration during practicum |
Continuous assessment |
Skills - skills achieved by taking this course are verified by the following means: |
Practical exam |
Skills demonstration during practicum |
Continuous assessment |
Competences - competence achieved by taking this course are verified by the following means: |
Continuous assessment |
|
Teaching methods
|
Knowledge - the following training methods are used to achieve the required knowledge: |
Lecture with visual aids |
Lecture supplemented with a discussion |
Practicum |
Task-based study method |
Collaborative instruction |
Self-study of literature |
Individual study |
Discussion |
Skills - the following training methods are used to achieve the required skills: |
Lecture |
Lecture supplemented with a discussion |
Practicum |
Lecture with visual aids |
Task-based study method |
Collaborative instruction |
Self-study of literature |
Discussion |
Competences - the following training methods are used to achieve the required competences: |
Self-study of literature |
|
|
|
|