Commit ae6aeeeb authored by Bednárek David RNDr. Ph.D.'s avatar Bednárek David RNDr. Ph.D.
Browse files

Initial fill from...

Initial fill from svn+sshpara://data.ksi.ms.mff.cuni.cz/home/subversion/repository/NPRG041pub/ revision 402.
Limited to public html and slides, flattened.
parent c73223f2
File added
<html xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>NPRG041 - Programování v C++</title>
</head>
<body>
<table border="0" cellspacing="8" cellpadding="2" width="100%">
<tr>
<td width="49%">
<h2 align=right>Programming in C++</h2>
</td>
<td width="2" bgcolor="gray"/>
<td width="49%">
<h2>Programování v C++</h2>
</td>
</tr>
</table>
<h2 align="center">NPRG041</h2>
<h3 align="center">2019/2020</h3>
<h3 align="center"><a href="http://www.ksi.mff.cuni.cz/~bednarek/">David Bednárek</a></h3>
<h3 align="center">2/2</h3>
<!--hr size=2 width="100%" align=center/-->
<table border="0" cellspacing="8" cellpadding="2" width="100%">
<tr>
<td width="49%">
<h3 align="right">Warning (particularly to Erasmus students)</h3>
<p style="text-align: justify">This course assumes that all participants already acquired some experience in programming, understanding of object-oriented programming, and basic knowledge of C# or Java.
If you are a beginner in programming, you shall not enroll.
If your experience covers only python, PHP, JavaScript, Pascal, FORTRAN, or similar languages, you may expect problems understanding some parts of the lecture.
</p>
<p style="text-align: justify">For regular students of Computer Science, this assumption is covered by the prerequisities of the subject.
</p>
</td>
<td width="2" bgcolor="gray"/>
<td width="49%">
<h3>Varování</h3>
<p style="text-align: justify">Předmět předpokládá u všech účastníků zkušenosti s programováním, porozumění objektově-orientovanému programování a základní znalost jazyka C# nebo Java.
Pokud jste v programování začátečník, nezapisujte se.
Pokud máte zkušenosti pouze s jazyky jako python, PHP, JavaScript, Pascal nebo FORTRAN, můžete očekávat problém s porozuměním některým částem přednášky.
</p>
<p style="text-align: justify">Pro pravidelné studenty programu Informatika je tento předpoklad zajištěn prerekvizitami předmětu.
</p>
</td>
</tr>
<tr>
<td width="49%" valign="top">
<h3 align=right>Rules governing lectures, exams, labs and credits</h3>
<p style="text-align: justify">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.</p>
<p style="text-align: justify">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.</p>
<p>The final score is based on the total number of points earned as follows:</p>
<table border="0" cellspacing="2" cellpadding="2">
<tr><td>Homework #1</td><td>0..15 points</td><td>Delay penalty: -5 points per each week (even if partial)</td></tr>
<tr><td>Homework #2</td><td>0..25 points</td><td>Delay penalty: -10 points per each week (even if partial)</td></tr>
<tr><td>Practical part</td><td>0..60 points</td><td>50 points for a completely functional solution, +/- 10 points for the quality of source code</td></tr>
<tr><td>Optional oral part</td><td>-10..+10 points</td><td>At least 50 points from the previous parts required for admission.</td></tr>
</table>
<p>Final grading:</p>
<table border="0" cellspacing="2" cellpadding="2">
<tr><td>60 points</td><td>3</td></tr>
<tr><td>75 points</td><td>2</td></tr>
<tr><td>90 points</td><td>1</td></tr>
</table>
<p style="text-align: justify">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.</p>
</td>
<td width="2" bgcolor="gray"/>
<td width="49%" valign="top">
<h3>Pravidla pro přednášky, zkoušky, cvičení a zápočty</h3>
<p style="text-align: justify">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.</p>
<p style="text-align: justify">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.</p>
<p>Výsledné hodnocení je určeno na základě celkového počtu bodů získaných takto:</p>
<table border="0" cellspacing="2" cellpadding="2">
<tr><td>Domácí úkol č. 1</td><td>0..15 bodů</td><td>-5 bodů za každý započatý týden zpoždění</td></tr>
<tr><td>Domácí úkol č. 2</td><td>0..25 bodů</td><td>-10 bodů za každý započatý týden zpoždění</td></tr>
<tr><td>Praktická část zkoušky</td><td>0..60 bodů</td><td>50 bodů za plně funkční řešení, +/- 10 bodů za kvalitu zdrojových textů</td></tr>
<tr><td>Nepovinná ústní část zkoušky</td><td>-10..+10 bodů</td><td>Podmínkou pro připuštění k ústní části je získání alespoň 50 bodů z předchozích částí hodnocení.</td></tr>
</table>
<p>Výsledné hodnocení zkoušky:</p>
<table border="0" cellspacing="2" cellpadding="2">
<tr><td>60 bodů</td><td>Dobře</td></tr>
<tr><td>75 bodů</td><td>Velmi dobře</td></tr>
<tr><td>90 bodů</td><td>Výborně</td></tr>
</table>
<p style="text-align: justify">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.</p>
<h4><a href="../nprg041-zavoral-web/repetenti.html">Pravidla pro repetenty</a></h4>
</td>
</tr>
<tr>
<td width="49%">
<h3 align="right">Slides</h3>
<h4 align="right"><a href="nprg041.en.pptx">PowerPoint</a></h4>
<h4 align="right"><a href="nprg041.en.pdf">PDF</a></h4>
<h4 align="right"><a href="NPRG041-C.pptx">Part C</a></h4>
<p align="right">The slides may be updated during the semester.</p>
</td>
<td width="2" bgcolor="gray"/>
<td width="49%">
<h3>Obrázky z přednášek</h3>
<h4><a href="nprg041.cz.pptx">PowerPoint</a></h4>
<h4><a href="nprg041.cz.pdf">PDF</a></h4>
<h4><a href="NPRG041-C.pptx">Část C</a></h4>
<p>Obrázky z přednášek se mohou během celého semestru mírně aktualizovat.</p>
</td>
</tr>
<tr>
<td width="49%">
<h3 align="right">Timetable</h3>
<table border="0" cellspacing="2" cellpadding="2">
<tr><td>2019/10/2</td><td align="right">1</td><td align="right">16</td><td>Pros and cons of C++.</td></tr>
<tr><td>2019/10/9</td><td align="right">19</td><td align="right">42</td><td>Compilation and header files. Hello, world.</td></tr>
<tr><td>2019/10/16</td><td align="right">43</td><td align="right">50</td><td>Passing arguments by value and by reference.</td></tr>
<tr><td>2019/10/23</td><td align="right">51</td><td align="right">62</td><td>Passing arguments and returning by value and by reference, copy/move semantics, copy/move elision.</td></tr>
<tr bgcolor=lightgray><td>2019/10/30</td><td align="right"></td><td align="right"></td><td>Memory layout of simple containers. Copy/move semantics, the Rule of Five. String, vector. Relevant principles of computers. Numeric types, physical representation of arrays and structures. Number, enumeration and character types. C-style strings, std::string, std::string_view. Storage classes, stack frames, address space.</td></tr>
<tr bgcolor=lightgray><td>2019/11/6</td><td align="right"></td><td align="right"></td><td>Storage classes, dynamic allocation. Pointers, smart pointers, observers. References. Move semantics.</td></tr>
<tr bgcolor=lightgray><td>2019/11/13</td><td align="right"></td><td align="right"></td><td></td></tr>
<tr bgcolor=lightgray><td>2019/11/20</td><td align="right"></td><td align="right"></td><td>References vs. pointers, conventions.</td></tr>
<tr bgcolor=lightgray><td>2019/11/27</td><td align="right"></td><td align="right"></td><td>Conventions. Class, inheritance, virtual functions.</td></tr>
<tr bgcolor=lightgray><td>2019/12/04</td><td align="right"></td><td align="right"></td><td>Inheritance.</td></tr>
<tr bgcolor=lightgray><td>2019/12/11</td><td align="right"></td><td align="right"></td><td>Special methods, conversions, casts. Containers.</td></tr>
<tr bgcolor=lightgray><td>2019/12/18</td><td align="right"></td><td align="right"></td><td>Iterators, algorithms. Functors, lambda</td></tr>
<tr bgcolor=lightgray><td>2020/1/8</td><td align="right"></td><td align="right"></td><td>Templates, variadic templates.</td></tr>
</table>
<p>Note: Gray background indicates previous-year contents mapped to this year.</p>
</td>
<td width="2" bgcolor="gray"/>
<td width="49%">
<h3>Průběh přednášky</h3>
<table border="0" cellspacing="2" cellpadding="2">
<tr><td align="right">7.10.2019</td><td align="right">1</td><td align="right">23</td><td>Výhody a nevýhody C/C++. Hodnotové a referenční typy.</td></tr>
<tr><td align="right">14.10.2019</td><td align="right">24</td><td align="right">34</td><td>Předávání hodnotou a odkazem, lvalue a rvalue reference.</td></tr>
<tr><td align="right">21.10.2019</td><td align="right">35</td><td align="right">47</td><td>Předávání parametrů a vracení hodnotou a odkazem, obvyklé chyby, copy/move-elision, lvalue/rvalue, copy/move metody.</td></tr>
<tr><td align="right">4.11.2019</td><td align="right">48</td><td align="right">58</td><td>Rule-of-Five. Dynamic allocation, smart pointers, observers. Konvence používání ukazatelů a referencí.</td></tr>
<tr bgcolor=lightgray><td align="right">11.11.2019</td><td align="right"></td><td align="right"></td><td>Kompilace. Hlavičkové soubory, dělení do modulů, statické a dynamické knihovny. Storage classes, stack frames, code/data segments, heap.</td></tr>
<tr bgcolor=lightgray><td align="right">18.11.2019</td><td align="right"></td><td align="right"></td><td>Relevantní principy počítačů. Paměťová reprezentace elementárních typů, polí a struktur. Číselné typy. Enum, bool. Char a string, string_view. Paměťová reprezentace základních kontejnerů.</td></tr>
<tr bgcolor=lightgray><td align="right">25.11.2019</td><td align="right"></td><td align="right"></td><td>Class. Class vs. namespace. Dědičnost.</td></tr>
<tr bgcolor=lightgray><td align="right">2.12.2019</td><td align="right"></td><td align="right"></td><td>Dědičnost.</td></tr>
<tr bgcolor=lightgray><td align="right">9.12.2019</td><td align="right"></td><td align="right"></td><td>Speciální metody, konverze, přetypování.</td></tr>
<tr bgcolor=lightgray><td align="right">16.12.2019</td><td align="right"></td><td align="right"></td><td>Kontejnery. Algoritmy, funktory, lambda.</td></tr>
<tr bgcolor=lightgray><td align="right">6.1.2020</td><td align="right"></td><td align="right"></td><td>Lambda. Šablony, variadické šablony.</td></tr>
</table>
<p>Poznámka: Šedé pozadí označuje průběh z minulého roku namapovaný na letošní data.</p>
</td>
</tr>
</table>
<!--hr size=2 width="100%" align=center/-->
</body>
</html>
File added
File added
File added
File added
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment