Skip to content

Latest commit

 

History

History
106 lines (81 loc) · 4.78 KB

organization.md

File metadata and controls

106 lines (81 loc) · 4.78 KB
outline
deep

Organization

This course introduces students to the techniques of functional programming, the advantages and disadvantages of this programming paradigm, and its use in practice. This approach is declarative in the sense that the programmer symbolically describes the problem to be solved rather than specifying the exact sequence of operations required to solve it. It allows focusing on the essence of the solved problem and implementing even more complex algorithms compactly. Functional programming has notable advantages for parallelization and automated verification of algorithms, and the most useful functional programming concepts are increasingly often introduced to standard programming languages. Because of the focus of functional programming on symbols rather than numbers, functional programming has been heavily used in artificial intelligence fields, such as agent systems or symbolic machine learning.

The course consists of weekly lectures and labs which will be published as we go along the course.

Course outline

  • Lisp/Scheme/Racket
    • simple syntax (directly matches $\lambda$-calculus)
    • dynamically typed
    • code-as-data (easy to write interpreters, ...)
    • allows mutable data
  • $\lambda$-calculus
  • Haskell
    • pure functional language
    • statically typed
    • rich type system
    • strictly separates the pure core from the mutable shell

Homework

You will have to solve four homework assignments (for 50 points in total):

  • 2 assignments in Racket
  • 2 assignments in Haskell More on the details of the homework here.

Exam

The final programming exam has 30 points. Final, optional oral exam for 20 points. More on the details of the exam here.

Grading

The grading is the standard grading scale:

A B C D E F
91-100 81-90 71-80 61-70 51-60 0-50

Teachers

Name Consulting hours E-mail Room Role
Rostislav Horčík appointment by email [email protected] KN:E-322 Lecturer
Niklas Heim appointment by email [email protected] KN:E-406 Lecturer & Instructor
Tomáš Votroubek appointment by email [email protected] Instructor
Matěj Zorek appointment by email [email protected] Instructor
Jiří Němeček appointment by email [email protected] Instructor

Other resources