Latest Courses
Fullstack Serverless Engineering (AWS, Node.js, React+Redux)Check course
Unreal Engine 4 : The Complete Guide (2020)Check course
The Complete Data Structures and Algorithms Course in PythonCheck course
Learn to create a 2D Idle Miner Tycoon Game in Unity 2020Check course
How to Create a WebApp using Google Apps Script webPagesCheck course
Docker for .Net and Angular DevelopersCheck course
Scala Programming From Scratch To DepthCheck course
ASP.NET Core MVC - Up and Running Part 1 (.NET 5)Check course
The Basics of Blockchain & HyperLedger FabricCheck course
APIs in Action: Build API-Based ApplicationsCheck course
Fullstack Serverless Engineering (AWS, Node.js, React+Redux)Check course
Unreal Engine 4 : The Complete Guide (2020)Check course
The Complete Data Structures and Algorithms Course in PythonCheck course
Learn to create a 2D Idle Miner Tycoon Game in Unity 2020Check course
How to Create a WebApp using Google Apps Script webPagesCheck course
Programming Languages, Part B

Programming Languages, Part B

FREE

Add your review
Add to wishlistAdded to wishlistRemoved from wishlist 0
Add to compare
8.7/10 (Our Score)
Product is rated as #39 in category Programming

[As described below, this is Part B of a 3–part course. Participants should complete Part A first Part B “dives right in” and refers often to material from Part A.] 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 …

Instructor Details

Dan Grossman has taught programming languages at the University of Washington since 2003. His department’s undergraduate students have elected him “teacher of the year” twice and awarded him second place once. His research, resulting in over 50 peer-reviewed publications, has covered the theory, design, and implementation of programming languages, as well as connections to computer architecture and software engineering. Dan served on the steering committee creating the 2013 ACM/IEEE-CS Computer Science Curriculum and led the subcommittee on Programming Languages. Dan holds the J. Ray Bowen Professorship For Innovation In Engineering Education.

Specification: Programming Languages, Part B

Duration 19 hours
Year 2016
Level Intermediate
Certificate Yes
Quizzes No

98 reviews for Programming Languages, Part B

4.8 out of 5
92
4
2
0
0
Write a review
Show all Most Helpful Highest Rating Lowest Rating
  1. Avatar

    Henrik B

    The racket language is a bit strange and takes a bit to get used to, however after doing the homework and listening to the videos you realize that the choice is a good one for this course. The second homework gives a good understanding of how closures and evaluation of functions really work. A lot of work, but the reward is well worth it.

    Helpful(0) Unhelpful(0)You have already voted this
  2. Avatar

    anton k

    Very interesting and challenging course. One of the best courses on Cousera, for sure.

    Helpful(0) Unhelpful(0)You have already voted this
  3. Avatar

    Johnathan F

    Courses I’ve taken on programming languages often focus on one language. You learn the different concepts for that one language but don’t understand why the language chose those concepts and what the alternatives are. By covering three languages, this course integrates the concepts and their alternatives to give you a solid understanding of how languages work.

    Helpful(0) Unhelpful(0)You have already voted this
  4. Avatar

    dynasty919

    great experience using racket writing a toy interpreter!

    Helpful(0) Unhelpful(0)You have already voted this
  5. Avatar

    Greg G

    It’s definitely harder than Part A Racket with its LISP like syntax was pretty daunting for me. I just can’t imagine using it in production after using so many C style languages, but I know that there are lots of Scheme and Clojure fans out there. But it was great to learn about dynamic typing, macros, and getting to deeply understand how interpreters work. That was a real wow moment!

    Helpful(0) Unhelpful(0)You have already voted this
  6. Avatar

    Sunil B

    Awesome course for programmer’s interested in learning programming idioms or otherwise interested in language design

    Helpful(0) Unhelpful(0)You have already voted this
  7. Avatar

    Vaidas A

    This course (as Part A and C) is great Dan is great in teaching and the content is perfect for anyone who wants to learn more about programming languages! Warning you might end up loving FP 🙂

    Helpful(0) Unhelpful(0)You have already voted this
  8. Avatar

    Greg G

    It’s definitely harder than Part A Racket with its LISP like syntax was pretty daunting for me. I just can’t imagine using it in production after using so many C style languages, but I know that there are lots of Scheme and Clojure fans out there. But it was great to learn about dynamic typing, macros, and getting to deeply understand how interpreters work. That was a real wow moment!

    Helpful(0) Unhelpful(0)You have already voted this
  9. Avatar

    Sunil B

    Awesome course for programmer’s interested in learning programming idioms or otherwise interested in language design

    Helpful(0) Unhelpful(0)You have already voted this
  10. Avatar

    Lukas H

    Extremely enjoyable course! I wasn’t exactly looking forward to using the Racket language I knew nothing about it, to be honest, but it really impressed me. A beautiful language. But the course is not really about the language used. It covers some interesting topics (delayed evaluation, streams, type systems) and contains two very nice homework assignments: the first is mostly focused on streams (which is actually quite a fun) and in the second one you implement an interpreter for a simple language that contains closures!

    Helpful(0) Unhelpful(0)You have already voted this
  11. Jeff T

    Jeff T

    challenging, insightful, fun!

    Helpful(0) Unhelpful(0)You have already voted this
  12. Jeff T

    Jeff T

    challenging, insightful, fun!

    Helpful(0) Unhelpful(0)You have already voted this
  13. Avatar

    Keith R

    I’m a pretty experienced C/C++ programmer and this course has been a brilliant introduction into functional programming and the underlying philosophies underpinning programming languages in general.

    Helpful(0) Unhelpful(0)You have already voted this
  14. Avatar

    Keith R

    I’m a pretty experienced C/C++ programmer and this course has been a brilliant introduction into functional programming and the underlying philosophies underpinning programming languages in general.

    Helpful(0) Unhelpful(0)You have already voted this
  15. Avatar

    Anton

    Great course with really interesting and challenging assignments that allow to get more precise vision on programming languages (especially on PL’s typing systems) and get experience with modern LISP

    Helpful(0) Unhelpful(0)You have already voted this
  16. Avatar

    Anton

    Great course with really interesting and challenging assignments that allow to get more precise vision on programming languages (especially on PL’s typing systems) and get experience with modern LISP

    Helpful(0) Unhelpful(0)You have already voted this
  17. Avatar

    Allison C

    I really enjoyed learning Racket and comparing and contrasting it with ML. Studying different languages has really helped me understand the strengths and weaknesses of each. Writing the “evaluator” was the best part of the course. Thanks to Dan Grossman and everyone else who put this course together.

    Helpful(0) Unhelpful(0)You have already voted this
  18. Avatar

    Allison C

    I really enjoyed learning Racket and comparing and contrasting it with ML. Studying different languages has really helped me understand the strengths and weaknesses of each. Writing the “evaluator” was the best part of the course. Thanks to Dan Grossman and everyone else who put this course together.

    Helpful(0) Unhelpful(0)You have already voted this
  19. Avatar

    Denis K

    A great course and It really complements well Part A.

    Helpful(0) Unhelpful(0)You have already voted this
  20. Avatar

    Denis K

    A great course and It really complements well Part A.

    Helpful(0) Unhelpful(0)You have already voted this
  21. Avatar

    ChristopherKing

    One of the best course on coursera, every cs student should take it.

    Helpful(0) Unhelpful(0)You have already voted this
  22. Avatar

    ChristopherKing

    One of the best course on coursera, every cs student should take it.

    Helpful(0) Unhelpful(0)You have already voted this
  23. Avatar

    Julian M

    DO THIS COURSE. It brings together everything in part A. In particular, the final shorter week on the differences between Statically and dynamically typed languages is mind bending and brilliant.

    Helpful(0) Unhelpful(0)You have already voted this
  24. Avatar

    Julian M

    DO THIS COURSE. It brings together everything in part A. In particular, the final shorter week on the differences between Statically and dynamically typed languages is mind bending and brilliant.

    Helpful(0) Unhelpful(0)You have already voted this
  25. Avatar

    Maria L V

    Learned a lot and enjoyed it!

    Helpful(0) Unhelpful(0)You have already voted this
  26. Avatar

    Maria L V

    Learned a lot and enjoyed it!

    Helpful(0) Unhelpful(0)You have already voted this
  27. Avatar

    Jacob K

    Just as good as the first segment of the course. Learned a lot of good material about dynamically vs statically typed languages and how languages are interpreted.

    Helpful(0) Unhelpful(0)You have already voted this
  28. Avatar

    Luiz C

    Fantastic course, a must for anyone serious or interested about programming. Challenging, but time really well spent: Course very well organized, quality videos by a very engaging professor, and very interesting with gradual complexity exercises

    Helpful(0) Unhelpful(0)You have already voted this
  29. Avatar

    Jacob K

    Just as good as the first segment of the course. Learned a lot of good material about dynamically vs statically typed languages and how languages are interpreted.

    Helpful(0) Unhelpful(0)You have already voted this
  30. Avatar

    Luiz C

    Fantastic course, a must for anyone serious or interested about programming. Challenging, but time really well spent: Course very well organized, quality videos by a very engaging professor, and very interesting with gradual complexity exercises

    Helpful(0) Unhelpful(0)You have already voted this
  31. Avatar

    Dingze W

    great course

    Helpful(0) Unhelpful(0)You have already voted this
  32. Avatar

    Dingze W

    great course

    Helpful(0) Unhelpful(0)You have already voted this
  33. Avatar

    Dali Z

    Amazing course!!! Excellent lecturer!! Really learn a lot of PL and Racket.

    Helpful(0) Unhelpful(0)You have already voted this
  34. Avatar

    Dali Z

    Amazing course!!! Excellent lecturer!! Really learn a lot of PL and Racket.

    Helpful(0) Unhelpful(0)You have already voted this
  35. Avatar

    Diego E H G

    Very useful, and I will continue with part C

    Helpful(0) Unhelpful(0)You have already voted this
  36. Avatar

    Diego E H G

    Very useful, and I will continue with part C

    Helpful(0) Unhelpful(0)You have already voted this
  37. Avatar

    Jin X

    Dan is so cool!

    Helpful(0) Unhelpful(0)You have already voted this
  38. Avatar

    Jin X

    Dan is so cool!

    Helpful(0) Unhelpful(0)You have already voted this
  39. Avatar

    Sean E

    This entire course (A through C) is gold. Nothing to add, if you have the time, take it! Thanks so much to Dan an the team!

    Helpful(1) Unhelpful(0)You have already voted this
  40. Avatar

    Sean E

    This entire course (A through C) is gold. Nothing to add, if you have the time, take it! Thanks so much to Dan an the team!

    Helpful(1) Unhelpful(0)You have already voted this
  41. Avatar

    Cheng H

    the best online course I’ve ever taken! expecting more courses from Dan and Washington University

    Helpful(0) Unhelpful(0)You have already voted this
  42. Avatar

    Cheng H

    the best online course I’ve ever taken! expecting more courses from Dan and Washington University

    Helpful(0) Unhelpful(0)You have already voted this
  43. Avatar

    Atsushi

    the course material was good! but the discussion forum was not so active.

    Helpful(0) Unhelpful(0)You have already voted this
  44. Avatar

    Atsushi

    the course material was good! but the discussion forum was not so active.

    Helpful(0) Unhelpful(0)You have already voted this
  45. Avatar

    Berin L

    Has to be the best online course, I have ever taken.

    Helpful(0) Unhelpful(0)You have already voted this
  46. Avatar

    Berin L

    Has to be the best online course, I have ever taken.

    Helpful(0) Unhelpful(0)You have already voted this
  47. Avatar

    Tang H T

    Dan is awesome! It is best to take part a to c in sequence

    Helpful(0) Unhelpful(0)You have already voted this
  48. Avatar

    jan s

    unfortunately all the solutions for the homework are online.

    Helpful(0) Unhelpful(0)You have already voted this
  49. Avatar

    Tang H T

    Dan is awesome! It is best to take part a to c in sequence

    Helpful(0) Unhelpful(0)You have already voted this
  50. Avatar

    jan s

    unfortunately all the solutions for the homework are online.

    Helpful(0) Unhelpful(0)You have already voted this
  51. Avatar

    Oleg K

    Some tasks were very challenging but the course is really awesome

    Helpful(0) Unhelpful(0)You have already voted this
  52. Avatar

    Oleg K

    Some tasks were very challenging but the course is really awesome

    Helpful(0) Unhelpful(0)You have already voted this
  53. Avatar

    Andrii D

    Good course with interesting and challenging assignments

    Helpful(0) Unhelpful(0)You have already voted this
  54. Avatar

    Andrii D

    Good course with interesting and challenging assignments

    Helpful(0) Unhelpful(0)You have already voted this
  55. Avatar

    Arent S

    The programming languages courses are by far the best Coursera courses that I’ve seen in my life. The teacher is passionate and really wants to teach programming ‘idioms’. The syntax of a language, or the structure for that matter are not as relevant as the underlying idea. With this course you will learn to recognize the underlying patterns of programming. These patters will always be usefull, no matter the language or environment. I highly reccomend this course.

    Helpful(2) Unhelpful(0)You have already voted this
  56. Avatar

    Arent S

    The programming languages courses are by far the best Coursera courses that I’ve seen in my life. The teacher is passionate and really wants to teach programming ‘idioms’. The syntax of a language, or the structure for that matter are not as relevant as the underlying idea. With this course you will learn to recognize the underlying patterns of programming. These patters will always be usefull, no matter the language or environment. I highly reccomend this course.

    Helpful(2) Unhelpful(0)You have already voted this
  57. Avatar

    Sebastijan P

    TOP course.

    Helpful(0) Unhelpful(0)You have already voted this
  58. Avatar

    Sebastijan P

    TOP course.

    Helpful(0) Unhelpful(0)You have already voted this
  59. Avatar

    Pablo A

    Excellent intro to a Lisp and functional programming in a dynamically typed language. Very hard but rewarding homework. It is worth the effort in my opinion to make you a better programmer if you are already one or to train you right from the beginning if you are new to it.

    Helpful(0) Unhelpful(0)You have already voted this
  60. Avatar

    Pablo A

    Excellent intro to a Lisp and functional programming in a dynamically typed language. Very hard but rewarding homework. It is worth the effort in my opinion to make you a better programmer if you are already one or to train you right from the beginning if you are new to it.

    Helpful(0) Unhelpful(0)You have already voted this
  61. Avatar

    Ernesto G

    Very good course for cementing programming concepts.

    Helpful(0) Unhelpful(0)You have already voted this
  62. Avatar

    Ernesto G

    Very good course for cementing programming concepts.

    Helpful(0) Unhelpful(0)You have already voted this
  63. Avatar

    Tega E

    Very taxing but very much worth it.

    Helpful(0) Unhelpful(0)You have already voted this
  64. Avatar

    Tega E

    Very taxing but very much worth it.

    Helpful(0) Unhelpful(0)You have already voted this
  65. Avatar

    Rashid P

    One of the best course in any MOOC format

    Helpful(0) Unhelpful(0)You have already voted this
  66. Avatar

    Rashid P

    One of the best course in any MOOC format

    Helpful(0) Unhelpful(0)You have already voted this
  67. Avatar

    Jo

    Excellent course. Clear and enlightening lectures. Two solid programming assignments, which help with internalizing the topics covered in the course. The first covers things like closures, implementing laziness with closures, and using local state from closures for memoization. In the second we implement a basic lisp interpreter!

    Helpful(0) Unhelpful(0)You have already voted this
  68. Avatar

    Jo

    Excellent course. Clear and enlightening lectures. Two solid programming assignments, which help with internalizing the topics covered in the course. The first covers things like closures, implementing laziness with closures, and using local state from closures for memoization. In the second we implement a basic lisp interpreter!

    Helpful(0) Unhelpful(0)You have already voted this
  69. Avatar

    Julie L

    This course was awesome. I would caution you to take Dan’s claim that “Part A is almost as substantial as Part B and Part C combined” with a grain of salt. This couldn’t be further from the truth. Parts B and C are challenging, with the difficulty increasing as you progress further into the course. This makes the three part series an exceptional value.

    Helpful(2) Unhelpful(0)You have already voted this
  70. Avatar

    Julie L

    This course was awesome. I would caution you to take Dan’s claim that “Part A is almost as substantial as Part B and Part C combined” with a grain of salt. This couldn’t be further from the truth. Parts B and C are challenging, with the difficulty increasing as you progress further into the course. This makes the three part series an exceptional value.

    Helpful(2) Unhelpful(0)You have already voted this
  71. Avatar

    xinxiao

    This is a great programming course. The instructor explained the key concepts extremely clear and concise. I found this course when reading the well known SICP book (Structure and Interpretation of Computer Programs), and I was trying to pick up a scheme dialect, and found that several people suggest racket. However, the course is actually more interesting than racket itself. It covers lots of functional programming idioms, in a precise and systematic way. Also some concepts where I read in other places informally, such as “thunk”, “lazy evaluation”, “infinite stream” are explained with great clarity. It also makes reading SICP much easier. I wish there could be more courses like this in Coursera.

    Helpful(0) Unhelpful(0)You have already voted this
  72. Avatar

    xinxiao

    This is a great programming course. The instructor explained the key concepts extremely clear and concise. I found this course when reading the well known SICP book (Structure and Interpretation of Computer Programs), and I was trying to pick up a scheme dialect, and found that several people suggest racket. However, the course is actually more interesting than racket itself. It covers lots of functional programming idioms, in a precise and systematic way. Also some concepts where I read in other places informally, such as “thunk”, “lazy evaluation”, “infinite stream” are explained with great clarity. It also makes reading SICP much easier. I wish there could be more courses like this in Coursera.

    Helpful(0) Unhelpful(0)You have already voted this
  73. Avatar

    Wang G

    Very good course

    Helpful(0) Unhelpful(0)You have already voted this
  74. Avatar

    Wang G

    Very good course

    Helpful(0) Unhelpful(0)You have already voted this
  75. Avatar

    Wu Z

    this is really a rewarding course!

    Helpful(0) Unhelpful(0)You have already voted this
  76. Avatar

    Wu Z

    this is really a rewarding course!

    Helpful(0) Unhelpful(0)You have already voted this
  77. Avatar

    Jurgen B

    Highly recommend.

    Helpful(0) Unhelpful(0)You have already voted this
  78. Avatar

    Jurgen B

    Highly recommend.

    Helpful(0) Unhelpful(0)You have already voted this
  79. Avatar

    Jayadev H

    Better than the first one has we get more into the theory which is super useful!:) Thanks Dan!

    Helpful(0) Unhelpful(0)You have already voted this
  80. Avatar

    Guo F

    I can’t say enough good things about this course. Learned a ton from it! Although I doubt I will do a comprehensive amount of functional programming, I don’t doubt that this course has consolidated the foundation of my “imperative thinking” and makes me a better Java/C++ programmer. Thanks Dan!

    Helpful(0) Unhelpful(0)You have already voted this
  81. Avatar

    Guo F

    I can’t say enough good things about this course. Learned a ton from it! Although I doubt I will do a comprehensive amount of functional programming, I don’t doubt that this course has consolidated the foundation of my “imperative thinking” and makes me a better Java/C++ programmer. Thanks Dan!

    Helpful(0) Unhelpful(0)You have already voted this
  82. Avatar

    Iris H

    Great follow up to Part A, really builds on the concepts introduced there and tackles some quite complex topics (writing an interpreter)!

    Helpful(0) Unhelpful(0)You have already voted this
  83. Avatar

    Iris H

    Great follow up to Part A, really builds on the concepts introduced there and tackles some quite complex topics (writing an interpreter)!

    Helpful(0) Unhelpful(0)You have already voted this
  84. Avatar

    Luis G

    excellent. not much to add to what has already been said in other reviews.

    Helpful(0) Unhelpful(0)You have already voted this
  85. Avatar

    Luis G

    excellent. not much to add to what has already been said in other reviews.

    Helpful(0) Unhelpful(0)You have already voted this
  86. Avatar

    alfred

    I think the course should be deeper and the assignment should be harder. Anyway, thanks for your effort!

    Helpful(0) Unhelpful(0)You have already voted this
  87. Avatar

    alfred

    I think the course should be deeper and the assignment should be harder. Anyway, thanks for your effort!

    Helpful(0) Unhelpful(0)You have already voted this
  88. Avatar

    Peter D

    Very good course. It helps contrast dynamically typed language such as Racket and a statically typed language such as ML to help me better understand the tradeoffs in language designing. In this sense, it makes me a better programmer in other languages.

    Helpful(0) Unhelpful(0)You have already voted this
  89. Avatar

    Peter D

    Very good course. It helps contrast dynamically typed language such as Racket and a statically typed language such as ML to help me better understand the tradeoffs in language designing. In this sense, it makes me a better programmer in other languages.

    Helpful(0) Unhelpful(0)You have already voted this
  90. Avatar

    Adetokunbo A

    Excellent course!

    Helpful(0) Unhelpful(0)You have already voted this
  91. Avatar

    Adetokunbo A

    Excellent course!

    Helpful(0) Unhelpful(0)You have already voted this
  92. Avatar

    Brandon C I

    Nice follow up to the first course. I’ve seen Racket before, but seeing Racket structs used the way they were relating them to “creating a new datatype” was an “aha” moment for me. It was also good for me to finally learn a little about about what “macro hygiene” was all about; how to use memoization; and to get some practice with streams. They also weren’t kidding when they said that “debugging an interpreter is an acquired skill” 🙂 Finally, the material on the soundness and completeness of a static type checker was completely new to me, but I liked those concepts. The only caveat is that you should’ve taken Part A before, since this course often makes heavy, non trivial references to ML, and other ideas taught in that course.

    Helpful(0) Unhelpful(0)You have already voted this
  93. Avatar

    Anran

    It’s challenging as much as it is rewarding, and the peer review is a very nice arrangement for people to see how others are doing things!

    Helpful(0) Unhelpful(0)You have already voted this
  94. Avatar

    Yuhang W

    Learned a lot. Fall in love with PL because of this course!

    Helpful(0) Unhelpful(0)You have already voted this
  95. Avatar

    Blaz P

    Thank you prof.Grossman!

    Helpful(0) Unhelpful(0)You have already voted this
  96. Avatar

    Jimmy C C

    I watch the video lectures as supplements for a course I am taking at my university, which happens to be based on this course. I feel compelled to say that this is one of the best courses I have ever taken and Dan Grossman is the best instructor I have ever had.

    Helpful(0) Unhelpful(0)You have already voted this
  97. Avatar

    Remie C

    So Great! I will keep learning the SICP!

    Helpful(0) Unhelpful(0)You have already voted this
  98. Avatar

    Yun L

    Great course to learn dynamic typed language, and implemented a interpreter on a small language.

    Helpful(0) Unhelpful(0)You have already voted this

    Add a review

    Your email address will not be published. Required fields are marked *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.

    Price tracking

    Register New Account
    Reset Password
    Compare items
    • Total (0)
    Compare