SubjectsSubjects(version: 945)
Course, academic year 2023/2024
   Login via CAS
Write your own tiny programming system(s)! - NPRG077
Title: Napište si vlastní programovací mini-systém(y)!
Guaranteed by: Department of Distributed and Dependable Systems (32-KDSS)
Faculty: Faculty of Mathematics and Physics
Actual: from 2023 to 2023
Semester: winter
E-Credits: 2
Hours per week, examination: winter s.:0/2, C [HT]
Capacity: unlimited
Min. number of students: unlimited
4EU+: no
Virtual mobility / capacity: no
State of the course: taught
Language: English
Teaching methods: full-time
Teaching methods: full-time
Guarantor: Mgr. Tomáš Petříček, Ph.D.
Class: Informatika Mgr. - Softwarové systémy
Classification: Informatics > Informatics, Software Applications, Computer Graphics and Geometry, Database Systems, Didactics of Informatics, Discrete Mathematics, External Subjects, General Subjects, Computer and Formal Linguistics, Optimalization, Programming, Software Engineering, Theoretical Computer Science
Annotation -
Last update: doc. RNDr. Petr Hnětynka, Ph.D. (02.05.2023)
The goal of this course is to teach how fundamental programming language techniques, algorithms and systems work by writing their miniature versions. The course covers multiple paradigms including functional, object-oriented, imperative and logic, as well as end-user programming environments like spreadsheets. Examples will be given using the F# programming language, which will be briefly introduced. The course is taught once every two years and its teaching alternates with the course NPRG075.
Course completion requirements -
Last update: doc. RNDr. Petr Hnětynka, Ph.D. (26.04.2023)

The credits will be awarded for active participation in the course. Students will complete a number of exercises throughout the course such as adding new features to the discussed miniature implementations.

Literature -
Last update: 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.

Syllabus -
Last update: Mgr. Tomáš Petříček, Ph.D. (10.05.2023)

The course will cover a range of techniques, algorithms and systems relevant to imperative, functional, object-oriented as well as other programming paradigms. The content will be adapted based on the interests of the students. A typical syllabus would include topics such as the following:

Imperative programming
  • Emulating prehistoric computer system (EDSAC)
  • Programming with GOTO, PEEK and POKE (BASIC)

Functional programming

  • Implementing a small LISP interpreter (LISP)
  • Different ways of interpreting functional languages (ML)
  • Writing a Hindley-Milner type inference algorithm (ML)

Object-oriented programming

  • Writing a minimal pure object-oriented system (Smalltalk)
  • Adding reflective programming capabilities (Smalltalk)
  • Class-based vs. prototype-based OO programming

Other programming techniques

  • Implementing a unification algorithm (Prolog)
  • Spreadsheet implementation techniques (Excel)
  • Functional reactive programming techniques (Elm)

 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html