PředmětyPředměty(verze: 945)
Předmět, akademický rok 2023/2024
   Přihlásit přes CAS
Napište si vlastní programovací mini-systém(y)! - NPRG077
Anglický název: Write your own tiny programming system(s)!
Zajišťuje: Katedra distribuovaných a spolehlivých systémů (32-KDSS)
Fakulta: Matematicko-fyzikální fakulta
Platnost: od 2023 do 2023
Semestr: zimní
E-Kredity: 2
Rozsah, examinace: zimní s.:0/2, Z [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: angličtina
Způsob výuky: prezenční
Způsob výuky: prezenční
Garant: Mgr. Tomáš Petříček, Ph.D.
Třída: Informatika Mgr. - Softwarové systémy
Kategorizace předmětu: Informatika > Informatika, Aplikační software, Počítačová grafika a geometrie, Databázové systémy, Didaktika informatiky, Diskrétní matematika, Předměty širšího základu, Předměty obecného základu, Počítačová a formální lingvistika, Optimalizace, Programování, Softwarové inženýrství, Teoretická informatika
Anotace -
Poslední úprava: doc. RNDr. Petr Hnětynka, Ph.D. (02.05.2023)
Cílem předmětu je naučit, jak fungují základní techniky, algoritmy a systémy na kterých stojí různé programovací jazyky tím, že od základu implementujeme jejich miniaturní verze. Předmět pokrývá různá programovacích paradigmata včetně funkcionálního, objektově orientovaného, imperativního a logického až po systémy pro koncové uživatele jako jsou tabulkové procesory. Příklady budou používat programovací jazyk F#, který bude krátce představen. Předmět je vyučován jednou za dva roky a jeho výuka alternuje s předmětem NPRG075.
Podmínky zakončení předmětu -
Poslední úprava: Mgr. Tomáš Petříček, Ph.D. (10.05.2023)

Zápocet bude udelen za aktivní úcast. Studenti budou behem kurzu rešit nekolik ruzných cvicení zahrnující napríklad pridávání nových vlastností do miniaturních implementací vytvorených v prubehu kruzu.

Literatura -
Poslední úprava: doc. RNDr. Petr Hnětynka, Ph.D. (26.04.2023)
  • Syme, D., Granicz, A., Cisternino, A. (2012). Expert F# 3.0. Apress.
  • Nystrom, R. (2021). Crafting Interpreters. Genever Benning.
  • Sestoft, P. (2014). Spreadsheet Implementation Technology: Basics and Extensions. MIT Press.
  • Goldberg, A., & Robson, D. (1983). Smalltalk-80: The Language and its Implementation. Addison-Wesley
  • Abelson, H., Sussman, G. J. (1996). Structure and Interpretation of Computer Programs. MIT Press.
  • Appel, A. W. (2004). Modern Compiler Implementation in C. Cambridge University Press.
  • Abadi, M., & Cardelli, L. (2012). A theory of objects. Springer Science & Business Media.

Sylabus -
Poslední úprava: Mgr. Tomáš Petříček, Ph.D. (10.05.2023)

Kurz bude zahrnovat radu technik, algoritmu a systému relevantních pro imperativní, funkcionální, objektove orientované a další programovací paradigmata. Obsah kurzu bude prizpusoben zájmum studentu. Typická osnova bude zahrnovat témata jako např.:

Imperativní programování
  • Emulace prehistorického pocítacového systému (EDSAC)
  • Programování s GOTO, PEEK a POKE (BASIC)

Funkcionální programování

  • Implementace malého interpretru jazyka LISP (LISP)
  • Ruzné zpusoby interpretace funkcionálních jazyku (ML)
  • Implementace Hindley-Milner algoritmu pro inferenci typu (ML)

Objektově orientované programování

  • Vytvorení minimálního ciste objektove orientovaného systému (Smalltalk)
  • Pridávání schopnosti reflexivního programování (Smalltalk)
  • OO programování založené na trídách vs. prototypech

Další programovací techniky

  • Implementace unifikacního algoritmu (Prolog)
  • Techniky implementace tabulkových procesoru (Excel)
  • Funkcionálně reaktivní programování (Elm)

 
Univerzita Karlova | Informační systém UK