18-656: Functional Programming in Practice
| Category | Difficulty |
|---|---|
| Assignments | 5 |
| Exams | 5 |
| Project | 7 |
This course is taught in-person in Silicon Valley campus by professor Rafal Wlodarski as of 2024. It's one of the core courses for MS Software Engineering program. This course is an excllent choice if you need a pradigm shift from imperative languages to functional or want to undestand functional programming fundamentals and applications. The language used in the course is F# and since dotnet framework is cross-platform, you won't need Windows OS. It'll be a bit challenging at the start to adapt your problem solving approach from imperative to functional, especially if you don't have any prior functional programming experience.
What to expect
Assignments: There are 3 indivisual assignments which combined are worth 10% of your final grade. The assignments themselves are not that difficult if you adapt your thinking to functional. One major challenge to achieve this, is that you are not allowed at any point during this course to use general conditional statements like if-else statements or loops, but rather you need to use functional constructs. Violating this, has a penalty and causes you to lose points on the assignement.
Exams: The mid-term exam is going to be more difficult than the final, carrying 25% weight of the final grade. The materials after mid-term are excluded for the final exam and preparation for the final shouldn't take you more than half-a-day. The final exam will be worth 15% of your final grade and may contain tricky questions.
Project: By mid-term, you should've mastered the functional programming fundamentals and ready to tackle the proejct. The project is a team effort (3-4 people) and you will be able to choose your team members. The project is about identifying arbitrage opportunities in the context of crypto currency exchange and is done in 4 iterations of two-weeks long. Each iteration deliverable is called a milestone. The milestone 1 is the project's detailed design document using Domain Driven approach. Milestones 2-4 are pure programming and in each iteration, you need to deliver a major functionality of the sytem. As usual, you are not allowed to use imperative control flows such as if-else or loops. The last milestone will be about performance and your team's project is rated in relation to the fastest team. The project will be worth 40% of final grade and also at the end of the course, there will be peer review survey which can afftect your score based on your contribution to the project.
Individual Persentation: Every student will have to do a presentation on a related topic for 4-7 minutes. It'll be worth 5% of your grade.
How to do well
- As usual, start early. However, this course in general won't take too much of your time so would be a good choice to balance your schedule if you have taken heavy courses.
- Be active in the class, the instructor will ask lots of questions during lectures. The course has a maximum of 4% participation bonus, so take advantage of it.
- Setup your environment properly from the start and get familiar with organizing your project in the context of namespaces and modules. For individual assignments, this is easy to neglect but it'll save you valuable time during the final project.