Chevron Left
返回到 Programming Languages, Part A

學生對 华盛顿大学 提供的 Programming Languages, Part A 的評價和反饋

1,554 個評分
457 條評論


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....



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.


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


1 - Programming Languages, Part A 的 25 個評論(共 455 個)

創建者 Allison C


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!

創建者 Stanislav K


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.

創建者 Maria K


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.

創建者 Yijie Q


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!

創建者 Ali K


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!..

創建者 Yiang Z


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.

創建者 Jack


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.

創建者 Vaidas A


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

創建者 Huong M L


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!

創建者 Mike S


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.

創建者 Saatchi B


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 :)

創建者 Huang-Hsiang C


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.

創建者 Akos L


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!

創建者 张弛


can learn fast

創建者 Lincoln K


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

創建者 Srikanth C


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.

創建者 Igor P S


This course is fun. I recommend it. I had a great time learning about many topics I was somewhat familiar but never had the chance to study them deeply. I was introduced to a new programming language, which l learned to respect and enjoy. After finishing the course I feel confident about what functional programming is and also about many other aspects programming languages have. I definitely will take part B and C of the course. Thanks a lot for providing this course!

I would like to politely and respectfully suggest as an improvement for the next version of this course the usage of examples more connected to the real world instead of those purely didactical. It is not a big deal, the examples used in the course work fine to grasp the announced idea, but the knowledge would consolidate more firmly this other way.

創建者 Juliano P


Loved it! This material focus on the Standard ML language (which you probably won't use for any practical purpose later) but is a very good foundation to understand other languages in the ML family, like F# and it has influenced Haskel and Elm (check the Wiki for "ML (programming language)").

I looked at the documentation for F# and what before would be a black-box was mostly clear (specially pattern-matching, that may have looked confusing when reading F# docs).

I am a self-taught web developer, don't have any regular background on computer science and have been working in the field for almost 5 years. This was my first interaction with a functional language and the time spent was totally worth it.

創建者 Dina M


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.

創建者 nikofeyn


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.

創建者 Michael w


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).

創建者 Guo F


Thanks a lot, Dan! Prior to this course, I've been using Python for some casual projects for a few years, but some concepts like first-class functions and lambda expressions, etc, always seem daunting to me and I never got the hang of that. With the help of this course, my understanding of a lot of concepts in Python really improved a lot. In addition, I find learning Javascript becomes much easier after understanding SML. To sum up, I really learned a lot from this lesson, I like your teaching style (especially Live Coding :)) and I surely would sign up for the rest of the course.

創建者 Aren T


A fascinating and brilliantly put together course, but highly demanding.

A little more guidance on some of the challenging homework would have been welcomed, but in terms of the lecture quality, course structure, and materials provided, this is a superb introduction to Functional Programming and a great theoretical guide to programming meta-concepts in general.

Recommended both for prospective future developers and experienced seasoned developers, especially if your background thus far is primarily in imperative/OO languages like Python, Java, and C/C++ etc. You will learn a lot!

創建者 Youlian S


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!

創建者 Eric T


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.