Skip to content

Latest commit

 

History

History
52 lines (36 loc) · 3.46 KB

organization.md

File metadata and controls

52 lines (36 loc) · 3.46 KB
outline
deep

Organization

This course introduces students to the techniques of functional programming, exploring their advantages, and practical applications. Functional programming takes a declarative approach, where the programmer describes the problem symbolically rather than through explicit step-by-step instructions. This paradigm focuses on the essence of problems, and enables compact implementations of complex algorithms. Functional programming has notable advantages for parallelization and automated verification of algorithms. Useful functional programming concepts are increasingly often introduced to standard programming languages. Due to its symbolic nature, functional programming has been heavily used in artificial intelligence, particularly in agent systems and symbolic machine learning.

The course consists of weekly lectures and labs.

Course Outline

This course explores:

  • Racket which features a simple syntax that aligns with λ-calculus, is dynamically typed, supports mutable data, and can treat code as data, which makes it easy to write interpreters;
  • $\lambda$-calculus as the theoretical foundation of functional programming;
  • and Haskell a pure functional language with static typing, a rich type system, and a design that strictly separates its pure core from its mutable shell.

Grading

You will receive points for solving Homework Assignments and the final Practical and Oral Exams.

Part Points
Homework Assignments 50
Practical Exam 30
(optional) Oral Exam 20

Our grading scale is as follows:

F E D C B A
0-49 50-59 60-69 70-79 80-89 90-100

Teachers

Name E-mail Room Role
Rostislav Horčík xhorcik@fel.cvut.cz KN:E-322 Lecturer
Tomáš Votroubek votroto1@fel.cvut.cz Lecturer & Instructor
Jiří Němeček nemecj38@fel.cvut.cz Instructor
Matěj Zorek zorekmat@fel.cvut.cz Instructor
Shenyuan Ma ma.shenyuan@fel.cvut.cz Instructor

Consulting hours are not explicitly scheduled; please contact us via email to make an appointment.

Where to get Help

If you struggle with an exercise or an assignment, feel free to contact your tutor via email. For questions which could help others, we recommend posting in the course discussion forum, where we will prioritize responses. There are also online communities where you can get in touch with your peers:

  • The Faculty Discord is primarily in Czech. You can select which course's channels you want to see in #volba-předmětů (check #fup) after authenticating with a faculty account.
  • The Functional Programming Discord is primarily in English, and includes channels not only for Racket (#racket) and Haskell (#haskell-beginners, #haskell-beginners-more, #haskell, #haskell-tooling), but also for all kinds of FP and math topics.

If you prefer to self-study, have a look at our list of extra resources.