Programming in C++

Programování v C++

NPRG041

2017/2018

David Bednárek

2/2

Rules governing lectures, exams, labs and credits

There will be two homework assignments; your lab teacher is responsible for the assignment, deadline, and evaluation. Late submission without serious cause will be penalized.

The exam consists of two parts: a compulsory practical part in the laboratory and an optional oral part. The practical part will be held in the examination period in terms listed in the SIS. The practical part can be repeated three times in accordance with study regulations, the last result is counted. The oral part is held at request of the student on the date agreed with the examiner.

The final score is based on the total number of points earned as follows:

Homework #10..15 pointsDelay penalty: -5 points per each week (even if partial)
Homework #20..25 pointsDelay penalty: -10 points per each week (even if partial)
Practical part0..60 points50 points for a completely functional solution, +/- 10 points for the quality of source code
Optional oral part-10..+10 pointsAt least 50 points from the previous parts required for admission.

Final grading:

60 points3
75 points2
90 points1

Lab credit: at least 50 points and a software project on a theme previously agreed with the lab teacher. Lab credit is not required for admission to the exam.

Pravidla pro přednášky, zkoušky, cvičení a zápočty

V rámci cvičení budou zadány dva domácí úkoly; jejich zadání a vyhodnocení je v kompetenci příslušného cvičícího. Pozdní odevzdání bez závažného důvodu bude penalizováno.

Zkouška má dvě části: Povinnou praktickou část v laboratoři a nepovinnou ústní část. Praktická část bude konána ve zkouškovém období v termínech vypsaných v SIS. Praktickou část lze v souladu se studijními předpisy opakovat třikrát, počítá se poslední výsledek. Ústní část se koná na žádost studenta v termínu určeném dohodou se zkoušejícím.

Výsledné hodnocení je určeno na základě celkového počtu bodů získaných takto:

Domácí úkol č. 10..15 bodů-5 bodů za každý započatý týden zpoždění
Domácí úkol č. 20..25 bodů-10 bodů za každý započatý týden zpoždění
Praktická část zkoušky0..60 bodů50 bodů za plně funkční řešení, +/- 10 bodů za kvalitu zdrojových textů
Nepovinná ústní část zkoušky-10..+10 bodůPodmínkou pro připuštění k ústní části je získání alespoň 50 bodů z předchozích částí hodnocení.

Výsledné hodnocení zkoušky:

60 bodůDobře
75 bodůVelmi dobře
90 bodůVýborně

Podmínkou udělení zápočtu je získání alespoň 50 bodů a odevzdání zápočtového programu na téma předem dohodnuté s cvičícím. Udělení zápočtu není podmínkou k připuštění ke zkoušce.

Pravidla pro repetenty

Slides

PowerPoint

PDF

Part C

The slides may be updated during the semester.

Obrázky z přednášek

PowerPoint

PDF

Část C

Obrázky z přednášek se mohou během celého semestru mírně aktualizovat.

Timetable

2017/10/3119Pros and cons of C++. Relevant principles of computers.
2017/10/102029Numeric types, physical representation of arrays and structures.
2017/10/1730,46,54Enumeration and boolean types. auto, value vs. pointer, dynamic allocation.
2017/10/244353Storage classes, stack frames, address space.
2017/10/315460Pointers, smart pointers, observers.
2017/11/76269Memory layout of simple containers. Copy/move semantics, the Rule of Five.
2017/11/1470References. Formal argument and return value types.
2017/11/21Returning by reference/value. Class.
2017/11/28Class vs. namespace. Inheritance.
2017/12/05143156Inheritance. Special methods, conversions, casts.

Průběh přednášky

2.10.2017127Výhody a nevýhody C/C++. Relevantní principy počítačů.
9.10.20172839Paměťová reprezentace elementárních typů, polí a struktur. Číselné typy, enum, bool.
16.10.20174051Char a string. Registry, adresace, virtuální paměť. Storage classes.
23.10.20175161Storage classes, stack frames, code/data segments, heap.
30.10.20176370Dynamic allocation, smart pointers, observers.
6.11.20177182Paměťová reprezentace základních kontejnerů. Copy/Move, Rule-of-Five. Reference.
13.11.20178290Reference. Konvence používání ukazatelů a referencí. Předávání parametrů a vracení hodnotou a referencí.
20.11.20179195,146-148Getter/setter. Class.
27.11.2017149155Class vs. namespace. Dědičnost.
4.12.2017156181Dědičnost. Speciální metody, konverze, přetypování. Kontejnery.