Chevron Left
Back to Programming Languages, Part A

Learner Reviews & Feedback for Programming Languages, Part A by University of Washington

1,722 ratings

About the Course

This course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming. The course uses the languages ML, Racket, and Ruby as vehicles for teaching the concepts, but the real intent is to teach enough about how any language “fits together” to make you more effective programming in any language -- and in learning new ones. This course is neither particularly theoretical nor just about programming specifics -- it will give you a framework for understanding how to use language constructs effectively and how to design correct and elegant programs. By using different languages, you will learn to think more deeply than in terms of the particular syntax of one language. The emphasis on functional programming is essential for learning how to write robust, reusable, composable, and elegant programs. Indeed, many of the most important ideas in modern languages have their roots in functional programming. Get ready to learn a fresh and beautiful way to look at software and how to have fun building it. The course assumes some prior experience with programming, as described in more detail in the first module. The course is divided into three Coursera courses: Part A, Part B, and Part C. As explained in more detail in the first module of Part A, the overall course is a substantial amount of challenging material, so the three-part format provides two intermediate milestones and opportunities for a pause before continuing. The three parts are designed to be completed in order and set up to motivate you to continue through to the end of Part C. The three parts are not quite equal in length: Part A is almost as substantial as Part B and Part C combined. Week 1 of Part A has a more detailed list of topics for all three parts of the course, but it is expected that most course participants will not (yet!) know what all these topics mean....

Top reviews


Mar 14, 2023

Excellent course and teacher. I love that all of it was 100% accessible for free, and that it was both fun and challenging, yet very doable for most people who do their work and had prior experience.


Dec 2, 2016

I'm just a beginner for CS or SE classes, and find this course really concise and challenging. It opens a door for me to get deeper into programming language. No wonder it got so high average score.

Filter by:

1 - 25 of 499 Reviews for Programming Languages, Part A

By Stanislav K

Mar 24, 2017

An excellent course! Make sure you really have enough time to take this course. There are a lot of videos, but they worth watching. I'd recommend this course to everyone involved in programming.

By Yijie Q

Aug 6, 2017

This course (and its subsequent parts) has long been on my MOOC bucket list. However, I have dropped out of previous sessions quite a few times when things got hectic with work and general life chaos.

I had excused myself with (false) statements such as "this course is too theoretical to be immediately useful" and "what's the point of spending time scratching the surface of a not-so-popular language". Looking back, I couldn't believe how wrong i was at the time, and couldn't be more glad that I finally started to pull through this series.

Sure this series is more theoretical and has little of the "cool" projects, but even this first course of the series has already shed new lights on my perspectives on programming languages, familiar or new. I used to see programming languages each in a class of their own (or only with similarities on the syntax-level), but this course has so far taught me, that there are governing principles true to all programming languages, and general rules that apply to types/families of languages.

Granted that I was writing ML the whole time for this course, but throughout the assignments and lectures, I couldn't help (though really not supposed to) but kept on seeing connections to languages that I'm familiar with (Options -> Java Optional, Signature -> header files, map/filter/reduce across the board). It was quite some exciting moments of (re)discovery, finding out about ideas that translate from one language to another.

I highly recommend this course to anyone who aspire to become better programmers. Thank you very much Dan, for sharing this course and your passion for programming languages with people around the world! I can't wait to find out what part B and C have to offer!

By Allison C

Mar 3, 2018

I loved learning the concepts used in the ML language: case statements, tail recursion, signatures, pattern matching. The professor explained things really well. Being provided with the pdf summaries of the sections and the code used in the lectures was much appreciated. Doing the peer reviews was hard, having to parse through other people's code, but doing this made me understand the material much better. Getting peer reviews was also great because I never would have noticed the style mistakes I made. I'm on to Part B!

By Ali K

Dec 29, 2019

The course teaches you some fundamental concepts of programming languages using a functional programming language called SML. Overall it's a challenging course from a reputable American university and the quality is really good.

Some pros:

Good lecturer, good materials, good programming examples, good assignments that complement the material.

Some cons:

The forums are completely dead. I don't think there's any more support since the course is about 5-6 years old and it feels like it's been abandoned by the community TAs and the lecturer. So you're completely on your own if you get stuck. I think it needs a bit of a face-lift.

I think it's a good course for someone who wants to learn from scratch rather than diving into a programming language. So get ready to dig deep into recursion, functions as arguments, data type bindings, polymorphic data types!..

By Maria K

Jun 17, 2017

Good fundaments for learning new programming languages. Well prepared and challenging homeworks. I learned a lot of functional programming concepts fom this course and I am sure I will use them.

By Jack

Apr 23, 2020

Part A is a great course overall. There are minor things like I disliked like a few of the problems being worded unclearly and some lectures topics that weren't explained in the best manner. But for the majority of the course content the delivery was excellent.

The course teaches programming languages in the functional paradigm using SML. The material is at a level you'd find in third year at a top-tier university computer science program, so in that way it is a bargain, but it also means you will need to invest serious time in order to complete it. You will likely need the full month and 8-16 weekly hours as advertised, this isn't one of those MOOCs where you finish a week's module in a day (especially if you've never done functional programming before).

In terms of difficult, I'd rate it at about the level of the common algorithms MOOCS (maybe a bit lower?). It's doable, but it takes time, so don't be intimidated. Before commencing I highly recommend you can program in one of Java/C#/C++/C (JS/Python alone are not enough imo) and understand basics of data structures up to using recursion on binary trees (no need for graphs and beyond). You'll also need some basic command line knowledge like compiling from a terminal or running VIM from it. If you have that down, I highly recommend enrolling. Such a course is a required core course in most top comp sci programs and there is a reason for that.

By Yiang Z

Dec 2, 2016

I'm just a beginner for CS or SE classes, and find this course really concise and challenging. It opens a door for me to get deeper into programming language. No wonder it got so high average score.

By Vaidas A

Mar 5, 2018

Very interesting course! Superb teaching and homework assignments. If you are interested in functional programming or in programming languages in general, this should be one of the must take MOOCs

By Srikanth C

Feb 9, 2020

I'm very pleased with this gem of a course! I'd been meaning to learn formally about Functional Programming for a while now, and began this course as it sounded relevant to my interests. Although the focus of the course was not exclusively Functional Programming, it was a brilliant refresher of the various programming concepts I'd studied as an undergraduate student and more advanced concepts that build upon those basics, a good part of which overlaps with what one comes across in Functional Programming. The assignments were challenging, and demanded close attention and . Dan's lecture notes in this course are gold, and I benefited each time I read them.

Having finished this course, I'll take a few weeks to redo some of the assignments and the challenge problems that I could not attend during the course and take a shot at some of the community material as well. I'm glad that there is still so much of optional content for me to now dive deep into despite having completed the course. Plus, I code in Python most of the time these days and I'm very eager to learn about how the things I've learned during this course translate to that language.

I will definitely do the next two courses from Dan, who is an excellent lecturer! Looking forward to those too.

By Mike S

Aug 12, 2016

A brilliant first part to this 3 part programming language course.

Part A focuses on teaching Functional Programming concepts using ML, a programming language that is becoming more relevant today with the popularity increase in the Haskell and F# languages, both based on ML.

Dan is excellent on the videos, explaining the core concepts extremely well, while also doing a great job with the live coding (a really hard thing to do, even for a software engineer with 10 years of experience).

Everyone on the discussion forums, the TA's, the Admins and Dan, are really great, and compliment the video lectures well.

Overall really happy with the course and can't wait to get started on Parts B and C.

By Roman H

May 24, 2021

Dangerous combination of dry presentation of abstract concepts, and demonstration rather than explanation. The class left me with lots of open questions, most beginning with "why", many followed by "would you", and may not be well suited for an online environment without teacher interaction.

I get the impression you have to really like math, rather than computers and programming, to find this class interesting.

The horrid sound quality from the terrible microphone the teacher used doesn't help make the lessons more enjoyable. Or maybe that's coursera's compression, I'm not sure as I haven't taken many classes here yet.

PS: Something about this comment form is buggy, making proper formatting of my review impossible.

By Huong M L

Feb 15, 2020

In case you're wondering why professor Dan Grossman decides to teach SML and Racket instead of more fashionable functional languages like Haskell, rest assure that right after taking part A, I was able to learn Haskell very quickly, as SML & Haskell have quite a large common subset (and in fact, SML syntax is actually more beginner-friendly than Haskell!) I believe I would have been able to learn Haskell even faster had I taken part B first (which includes thunk and stream, idioms that are essential to Haskell). Of course, there's no mention of monads (which is quite , but hey, baby steps!

PS: In case you are still searching for the n-th tutorial on Javascript ES6 features (scoping, closure, currying, destructuring, iterator, promises, async/await, etc.), then give these courses a try! Dan would make everything finally click, and you'll come out forever changed!

By Dina M

Feb 13, 2021

It's indeed one of the best courses at Coursera. I like the way Dan breaks down complex concepts, like pattern matching or type interference, and aims at teaching the principles underlying software design.

This course is challenging and is for those who are truly interested in learning those principles. If you haven't done anything familiar before, like me, It'll take lots of time to watch the videos, do homework, read documentaton, watch videos again, review homeworks ... but all of these will only make you really understand how things work in SML and functional languages in general.

One downside is that homework assignments are reviewed very slowly - may take weeks - at least, this winter it's so.

By nikofeyn

Aug 11, 2018

Take this course. Many modern languages are still slowly stealing features from Standard ML, even decades later. Dan Grossman is passionate about this material. This course is arranged in such a way that it slowly builds you up in skill and knowledge, and the pacing is quite good. The homework assignments are very useful in reiterating the material, and the peer-grading really works if you commit and put work into it.

Learning functional programming is a great way to expand your skills as a software developer and programmer. The thinking required is much more principled than in something like Python, and so you begin to understand how this approach could be useful in the real world.

By Michael W

Jul 2, 2018

Thank you so much Professor Grossman! This course made me believe in the value of MOOCs. Even though I'm a Computer Science student at a University already, the rigor in this course surprised me, and comparing it with the course webpage on UWashington's offering (also by Professor Grossman) makes me think this MOOC was not watered down from the CS major, real-life version, as promised. Huge points go to Professor Grossman again for putting this course together, and all the course contributors as well. I would gladly take any other UWashington CS major courses in MOOC form on Coursera that are of a similar depth and challenge (or greater).

By Youlian S

Nov 13, 2016

I can't say enough good things about this sequence of courses. I've been a professional software developer for 5 years, and was looking to shore up some of the electives that I didn't get to take in college. I am very glad that I chose this course to flesh out my knowledge of programming languages. I learned a lot of design patterns and principles that I can now apply to my day-to-day coding, and my ability to quickly learn and parse foreign programming languages has shot through the roof.

Thanks, Dan and your team, for all of your hard work in putting this course together!

By Saatchi B

Oct 7, 2016

Really great course! Professor Grossman's lectures are engaging and you can tell he's really excited about the material. I had no experience with functional programming or ML prior to this course, and it was very manageable after the first week and a half or so. The only downside was that I felt the discussion boards weren't really active, or mainly used by people who had a much stronger grasp of the material already. So i ended up struggling through certain parts-- but I can definitely say that helped me master the material! Thanks for a great session :)

By Eric T

Jan 26, 2019

I just finished Programming Languages Part A, and I can confidently say that it has been one of the most challenging and rewarding classes that I've taken in the MOOC format. Functional Programming is new to me, but this class gives a great overview of the language paradigm. The assignments are difficult and rewarding. I encourage you to take this class if you've taken an introductory computer science class using a language such as Python, Java, or C++. It is definitely worth the time investment and it will turn you into a more competent programmer.

By Huang-Hsiang C

Jun 7, 2020

Dan is a great teacher and the course material is very well organized and informative. Highly recommend this course to people who'd like to understand the principles of programming language.

By Akos L

Mar 22, 2017

Great course!

I think this course has just the right balance of theoretical background, formal definitions, and actual examples to make "just right".

Thanks Dan, and everybody else involved!

By 张弛

Apr 30, 2019

can learn fast

By Lincoln K

Nov 18, 2017

Committed Tutor, interesting and impact full content, good community and well, finishing needed that extra nudge.... Well worth it :)

By Stepan K

Apr 9, 2017

Not very applicable for the real world. Recursion over lists can be a nice mind exercise but please don't use it in real world, there are way too many stack overflows, unneeded context switches and cryptic code already, don't add to it.

By Andrei S

Sep 8, 2022

Be ready to spend about 10+ hours watching videos (weeks 1&2) and setting up an outdated programming environment just to get familiar with SML language, which is useless in the real world. The majority of the concepts from further weeks are explained with less time and with practical gain in most courses for any modern language which applies OOP and FP. Rest ideas from this course you could find in Algorithms & Data Structures courses.

By Deleted A

Jan 14, 2021

Я очень хотел пройти данный курс, но из-за того, что в последний раз информация по пользованию программами обновлялась в 2016 году, как тут сказано, не смог выполнить даже создание файла.

И сейчас не могу найти как отписаться от этого курса.