Pokračování základního kurzu programování – procvičení a doplnění učiva z předcházejícího předmětu NPRG030
Programování 1 při řešení náročnějších a rozsáhlejších úloh.
Programovací jazyk C#, překladač, statické typování, abstraktní typy, interface.
Objektový návrh programů a objektové programování, privátní a veřejné členy, generické funkce a třídy.
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (23.10.2023)
A continuation of the basic programming course for students in the first year of Computer Science program. This
course expands on the material from NPRG030 Programming I by discussing additional algorithms and their
implementation, as well as methods and techniques used in constructing programs. Students will become
acquainted with the basics of object-oriented programming, with the programming language C# and with working
in modern programming environments. The course presupposes knowledge of material covered in NPRG030
Programming I, and this knowledge is necessary for the exam.
Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (21.02.2018)
Podmínky zakončení předmětu -
Předmět je zakončen zápočtem a zkouškou.
K získání zápočtu se požaduje:
aktivní účast na cvičení spočívající obvykle v řešení úkolů (programů) v termínech stanovených cvičícím (ať už na cvičení nebo doma),
vypracování zápočtového programu a jeho odevzdání do termínu stanoveného cvičícím,
úspěšné absolvování zápočtového testu.
Povaha prvních dvou požadavků neumožňuje vypsat opravné termíny. Vyučující může stanovit podmínky, za nichž student může nahradit chybějící domácí úkoly nebo opakovaně odevzdat zápočtový program po odstranění nalezených závad.
Na složení zápočtového testu má student tři pokusy.
Zkouška má písemnou a ústní část.
Písemná část vyžaduje vypracování návrhu řešení složitější úlohy, konkrétně zdůvodněnou volbu algoritmu, volbu representace dat, popis rozkladu programu na části a diskusi.
Ústní část sestává z obhajoby návrhu z písemné části a zodpovězení jedné nebo více otázek týkajících se následujících témat:
----------------------------------
z jiných předmětů, jako je Algoritmizace, ADS apod., potřebných pro programování:
složitost algoritmu, složitost úlohy/problému
fronta, zásobník, BFS, DFS
halda
rekurze
základní grafové algoritmy
hledání nejkratších cest a minimálních koster,
například Dijkstrův, Kruskalův, Bellman-Fordův, Jarníkův, Borůvkův
stromové datové struktury a algoritmy na nich
BVS
AVL-strom
A-B-strom
o programování
memoizace a dynamické programování a typické problémy takto řešené
(závorkování násobení matic, celočíselný problém batohu)
OOP
princip/idea
dědičnost
zapouzdření
virtuální metody, abstraktní metody a třídy
dekompozice
funkční
objektová (SOLID a spol.)
modulární
diskrétní simulace
programování řízené událostmi
o jazyku C#
generické funkce a třídy
delegáty
----------------------------------
Na zkoušku je jeden řádný a dva opravné termíny.
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (05.04.2023)
The subject is finished by credit and the exam.
Students will receive a credit for this course by successfully completing the following requirements:
Active participation in the practice sessions in the computer lab. Generally this means that students must complete the assigned programming exercises, either during the lab session or later on at home.
Completion of a semester programming project by the deadline fixed by the instructor.
Passing a test at the end of the semester.
Due to the nature of the first two requirements, a failed attempt cannot be repeated as is possible for exams. The instructor may establish conditions whereby a student can make up for missing homework assignments or resubmit their semester project after improving deficiencies that were found the first time around.
A student has three chances to pass the test.
Exam has a written and a oral parts.
Written part requires to design a solution of a difficult programming task, spefically reasoned choice of algorithm, representation of data, decomposition and discussion.
Oral part consists of defence of designed solution and answering the question from the syllabus.
A student has three chances to pass the exam.
Cheating on an exam or a homework assignment may result in automatically failing the course.
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (20.10.2022)
Literatura -
Matt Weisfeld, The Object-Oriented Thought Process, 4th ed., Addison-Wesley, Boston, MA 2013
Andrew Hunt, David Thomas, Programátor pragmatik: Jak se stát lepším programátorem a vytvářet kvalitní software, Computer Press, Brno 2007
Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (25.05.2022)
Matt Weisfeld, The Object-Oriented Thought Process, 4th ed., Addison-Wesley, Boston, MA 2013
Andrew Hunt, David Thomas, Programátor pragmatik: Jak se stát lepším programátorem a vytvářet kvalitní software, Computer Press, Brno 2007
Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (25.05.2022)