FLYNT251 ABOUT BLOG RESOURCES PROJECTS

CS141 - Functional Programming

This module will change the way you look at programming. I know this sounds kind of cliché, but I genuinely mean it.

You'll be taught Haskell, one of if not the most well-known functional programming language. It's nothing like procedural languages, where you assign variables, and run through a program from top-to-bottom. Learning Haskell will be a bit tough but I found it genuinely rewarding!

Hoogle []

You'll be told about this website in lectures anyway, so let this reinforce the fact that this is very useful! You can look up functions, libraries, type classes, and just about anything Haskell-related. You will end up using this website (and probably StackOverflow) very frequently!

Personal Tips

There are fortunately a lot of resources available to help reinforce your understanding where needed, including lecture slides, lecture notes and lab sheets. I would highly recommend that you do the lab sheets as they are set, as they allow you to get hands-on with the different features that Haskell offers, which will be very useful where it comes to assessment. If you're hungry for more work, the lecture notes have additional exercises you can try.

Also, I would absolutely recommend going to the lectures, and if, like me, you prefer hand-writing notes, you should consider switching to using a laptop with your code editor of choice open in a GHC project, so you can copy code as you go. After you've installed GHCi and Stack, you can use the following command to create a new project:

stack new project-name-here

By the way, some of your work may involve writing parsers. If this is the case, you may be tempted to use many space to consume whitespace. Don't do this, otherwise this will happen to you.

My Thoughts

This was my favourite module this year. For one, the teaching is excellent. The module organiser makes a clear effort to engage with students, and present information in a palatable and entertaining manner. Attending lectures for this module was an absolute pleasure.

The coursework was challenging, yet fun. Both of the courseworks contained unit tests which provide a good metric of your progress, and had room for additional creative work at the end, if desired. It was one of very few opportunities to go above and beyond and create something unique.

The exam was of similar difficulty to previous years. This was my best examined module (CS133 was my best overall, but has no exam).

I would definitely recommend this module, even if you're just the slightest bit interested. It is not free credit by any means, but it is a rare example of a module that is well-designed and well-taught.