SubjectsSubjects(version: 964)
Course, academic year 2024/2025
   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 2024
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: not taught
Language: English
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 -
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.
Last update: Hnětynka Petr, doc. RNDr., Ph.D. (02.05.2023)
Course completion requirements -

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.

Last update: Hnětynka Petr, doc. RNDr., Ph.D. (26.04.2023)
Literature -
  • 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.

Last update: Hnětynka Petr, doc. RNDr., Ph.D. (26.04.2023)
Syllabus -

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)

Last update: Petříček Tomáš, Mgr., Ph.D. (10.05.2023)
 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html