Programování 2 - NPRG031
Anglický název: Programming 2
Zajišťuje: Katedra softwaru a výuky informatiky (32-KSVI)
Fakulta: Matematicko-fyzikální fakulta
Platnost: od 2022
Semestr: letní
E-Kredity: 5
Rozsah, examinace: letní s.:2/2, Z+Zk [HT]
Počet míst: neomezen
Minimální obsazenost: neomezen
4EU+: ne
Virtuální mobilita / počet míst pro virtuální mobilitu: ne
Stav předmětu: vyučován
Jazyk výuky: čeština, angličtina
Způsob výuky: prezenční
Způsob výuky: prezenční
Garant: RNDr. Tomáš Holan, Ph.D.
RNDr. Martin Pergel, Ph.D.
Adam Dingle, M.Sc.
Třída: Informatika Bc.
Kategorizace předmětu: Informatika > Programování
Korekvizity : NPRG030
Je korekvizitou pro: NPRX013, NPRX035, NPRG065, NPRG048
Je neslučitelnost pro: NPRM001, NMUG104, NMUG103, NPRM049, NPRM045, NMIN162, NMIN161, NPRG047, NPRM048, NPRM047
Je prerekvizitou pro: NPRG074, NPGR038, NPRG045, NPRG013, NPRG035, NSWI105, NPRG073
Je záměnnost pro: NPRM045, NPRM001, NPRM049
Ve slož. prerekvizitě: NPRG041, NPRG041, NPRX041
Výsledky anket   Termíny zkoušek   Rozvrh LS   Nástěnka   
Anotace -
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)
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)
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)
Sylabus -

Základy objektově orientovaného programování.

Třídy, objekty, ochrana přístupu. Principy zapouzdření, dědičnosti, rozhraní, polymorfismu.

Atributy a metody třídy / instance, statické a virtuální metody, abstraktní třídy a metody.

Funkce jako parametry a hodnoty proměnných.

Objektový návrh programu ­- obecné principy (SOLID), příklady (diskrétní simulace).

Programování řízené událostmi - základní myšlenky a postupy.

Práce ve vývojovém prostředí, vytváření programů s GUI.

Řešení větších úloh - hygiena programování, správa verzí, tvorba dokumentace.

Jazykový labyrint - srovnání významných objektově orientovaných jazyků (C#, C++, Java, Python)

Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (02.02.2018)