Carnegie Mellon Principles of Functional Programming
Written by Nikos Vaggalis   
Tuesday, 09 January 2024

The recorded sessions and material of Carnegie Mellon's introductory course to FP taught in premises in summer 2023, are now freely available online.

This course tackles a Computer Science concept that usually is not taught in depth or is just included as part of a wider module on programming. On the contrary 15-150: Principles of Functional Programming is dedicated to that.

And for good reason. Brandon Wu , the instructor of the course who is now a program analysis engineer working at Semgrep, was teaching assistant during his undergraduate education at CMU, explains his rationale:

This course typically serves as the second or third course in the traditional computer science undergraduate sequence, a privilege which not many other universities get to enjoy, as functional programming is often considered a niche topic.

Despite this, I (and CMU) believe this to be of the utmost importance. A disciplined, type-oriented, safety-first view of programming can be of utmost benefit to burgeoning computer science scholars, and I have often heard feedback from students that it is has a transformative view on their perspective of computer science in general.

The course is comprised of 22 Lectures, spanning over an hour each:

1. Prologue
2. Equivalence, Binding, and Scope
3. Induction and Recursion
4. Structural Induction and Tail Recursion
5. Trees
6. Asymptotic Analysis
7. Sorting and Parallelism
8. Polymorphism
9. Higher-Order Functions
10. Combinators and Staging
11. Continuation-Passing Style
12. Exceptions
13. Regular Expressions
14. Structures and Signatures
15. Functors
16. Red-Black Trees
17. Sequences
18. Lazy Programming
19. Imperative Programming
20. Compilers
21. Program Analysis
22. Finale

They're up on youtube as a playlist (find link below) or they can be watched individually through Brandon's main course web site
where each lecture comes with a description of the concepts laid out. They come accompanied with very detailed slides too, but unfortunately not so with the relevant code.

Throughout the class, the functional programming language Standard ML (SML) is used. A peculiar choice if you ask me
when there's Haskell or Oclam, but the point is that the course does not teach programming languages but the concepts behind them, something that SML makes easier to explain because it disregards the intricacies and idioms brought forward by the rest of programming languages hence distracting from the original purpose.

However if you prefer the Haskell way, you can watch another excellent introductory course, taught by Professor Graham Hutton of the University of Nottingham which I looked into in Free Course On Functional Programming in Haskell.

Saying that, 15-150 is excellent too. By going through this excellently presented class you'll understand how Functional Programming helps in improving our ability to communicate as programmers through descriptive, modular, and maintainable code.

This wouldn't be possible without teachers like Brandon who generously make such high quality material taught at prestigious Colleges, available to the wider public too. A must watch.

 

More Information

15-150: Principles of Functional Programming
Youtube playlist

 

Related Articles

Free Course On Functional Programming in Haskell

 

 

 

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

Banner


JetBrains Announces TeamCity Pipelines
19/03/2024

JetBrains has released a public beta of TeamCity Pipelines, a cloud-based Continuous Integration/Continuous Deployment (CI/CD) service for small and medium-sized engineering teams.



Visual Studio 17.9 Now Generally Available
18/03/2024

Visual Studio 17.9 is now fully available with AI assistance and better extensibility. The first preview of 17.10 has also been made available in preview.


More News

raspberry pi books

 

Comments




or email your comment to: comments@i-programmer.info