Programming Languages

Provided by:
10/10 stars
based on  39 reviews
Provided by:
Cost FREE
Start Date On demand

Key Concepts

lightbulb
We've created a summary of key topics covered in this course to help you decide if it's the right one for you. Click individual badges to see more courses on the same topic.

Course Details

Cost

FREE

Upcoming Schedule

  • On demand

Course Provider

Coursera online courses
Coursera's online classes are designed to help students achieve mastery over course material. Some of the best professors in the world - like neurobiology professor and author Peggy Mason from the University of Chicago, and computer science professor and Folding@Home director Vijay Pande - will supplement your knowledge through video lectures. They will also provide challenging assessments, interactive exercises during each lesson, and the opportunity to use a mobile app to keep up with yo...
Coursera's online classes are designed to help students achieve mastery over course material. Some of the best professors in the world - like neurobiology professor and author Peggy Mason from the University of Chicago, and computer science professor and Folding@Home director Vijay Pande - will supplement your knowledge through video lectures. They will also provide challenging assessments, interactive exercises during each lesson, and the opportunity to use a mobile app to keep up with your coursework. Coursera also partners with the US State Department to create “learning hubs” around the world. Students can get internet access, take courses, and participate in weekly in-person study groups to make learning even more collaborative. Begin your journey into the mysteries of the human brain by taking courses in neuroscience. Learn how to navigate the data infrastructures that multinational corporations use when you discover the world of data analysis. Follow one of Coursera’s “Skill Tracks”. Or try any one of its more than 560 available courses to help you achieve your academic and professional goals.

Provider Subject Specialization
Humanities
Sciences & Technology
4721 reviews

Course Description

Investigate the basic concepts behind programming languages, with an emphasis on the techniques and benefits of functional programming. Use the programming languages ML, Racket, and Ruby to learn how the pieces of a language fit together to create more than the sum of the parts. Gain new software skills and the concepts needed to learn new languages on your own.
Programming Languages course image
Reviews 10/10 stars
39 Reviews for Programming Languages

Ratings details

  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.

Sort By
Alex Parij profile image
Alex Parij profile image
8/10 starsDropped
  • 2 reviews
  • 1 completed
6 years, 8 months ago
Well after two weeks of hard work I stopped doing homework and later quit the course. The subject is very interesting, the lectures are very clear and it looks like the teacher is really enjoying teaching. I found that 3 hours of intense , packed lectures was too much... you need to repeat them to absorb everything . Although I felt that StandardML language is exciting, it was a bit too much for me coupled with quite hard homework. I was familiar with functional concepts and played with Lisp,Prolog and Clojure before, but still too many hours to dedicate for a full time working person. If you have 15-20+ hours to dedicate to this course, go ahead and take you will learn a lot. In two weeks that I took this course I learned more than I learned reading all these clojure/functional programming blog posts... I would say 2 hours lectures , meaning reducing 30% of the material will be perfect. This course is better done using self paced sc... Well after two weeks of hard work I stopped doing homework and later quit the course. The subject is very interesting, the lectures are very clear and it looks like the teacher is really enjoying teaching. I found that 3 hours of intense , packed lectures was too much... you need to repeat them to absorb everything . Although I felt that StandardML language is exciting, it was a bit too much for me coupled with quite hard homework. I was familiar with functional concepts and played with Lisp,Prolog and Clojure before, but still too many hours to dedicate for a full time working person. If you have 15-20+ hours to dedicate to this course, go ahead and take you will learn a lot. In two weeks that I took this course I learned more than I learned reading all these clojure/functional programming blog posts... I would say 2 hours lectures , meaning reducing 30% of the material will be perfect. This course is better done using self paced schedule like Udacity :) Thanks Prof. Grossman for taking time and building this course. If I ever get a sabattical year, I will retake this course
Was this review helpful? Yes12
 Flag
Xiang Ji profile image
Xiang Ji profile image
10/10 starsCompleted
  • 10 reviews
  • 5 completed
4 years, 3 months ago
University of Washington's CS courses are true class, and prof Grossman while already being erudite on the subject conveyed the core ideas excellently with his clear instructions. This is true university course experience instead of a watered down so-called "course" created just for getting people pass the course easily and pay for a "certificate", which unfortunately are abundant out there. Knowledge on programming languages is really crucial. No matter whether you're a CS student, a programmer or a researcher, this course would be highly recommended.
Was this review helpful? Yes1
 Flag
Ahmed Elkfrawy profile image
Ahmed Elkfrawy profile image
6/10 starsTaking Now
  • 1 review
  • 0 completed
4 years, 8 months ago
Was this review helpful? Yes0
 Flag
kaz_yos profile image
kaz_yos profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
4 years, 9 months ago
I completed the Oct-Dec 2014 offering. The course is fast-paced with 8-16 hours of workload for me (mostly for the assignments). The videos are pretty clear, but because the concepts are pretty difficult I had to watch some of them many times. The learning is reinforced by weekly assignments. The solutions from peers became progressively better over the first half of the course, probably because of student attrition. This course does require some hard work to follow. For me the interpreter and double dispatch assignments were the hardest. This course is unique in using three languages, which takes the attention away from a specific language, and make people focus more on the computational concepts. The concepts covered are close to the ones covered in SICP (http://mitpress.mit.edu/sicp/).
Was this review helpful? Yes0
 Flag
Francois Fernando profile image
Francois Fernando profile image
10/10 starsCompleted
  • 5 reviews
  • 4 completed
3 years, 4 months ago
Professor Dan presents the material in a very engaging way. His selection of languages and the material he covers is definitely things worth knowing for a software developer.
Was this review helpful? Yes0
 Flag
Gabriel Candal profile image
Gabriel Candal profile image
10/10 starsCompleted
  • 18 reviews
  • 14 completed
4 years, 10 months ago
Great, great, GREAT course. Pros: -Complete lectures, they're everything you need to understand the material and do the homework/exams. -Thought concepts, yet explained thoroughly, making them absorbable. -Challenging programming assignment. -Decent peer review system, the rules don't give much room for injustice and it is an opportunity to assess yourself beyond the "it works" metric. -High quality in every other aspect: complete handouts, no problems with the grader, great support by the TAs in the forums. -Relevant material for both academia and industry-related work. I believe this will surely improve your programming. Cons: -Yet to be discovered. Overall, I believe I have used around 3/4h per homework (not counting with watching the lectures, which depends on your playback speed).
Was this review helpful? Yes0
 Flag
Mehran Alidoost Nia profile image
Mehran Alidoost Nia profile image
10/10 starsCompleted
  • 7 reviews
  • 7 completed
4 years, 11 months ago
Was this review helpful? Yes0
 Flag
Juanli Shen profile image
Juanli Shen profile image
10/10 starsTaking Now
  • 3 reviews
  • 2 completed
5 years ago
Amazing! Dan can illustrate the idea clearly, and the pace is just great.
Was this review helpful? Yes0
 Flag
Mbwana Samatta profile image
Mbwana Samatta profile image
10/10 starsCompleted
  • 5 reviews
  • 5 completed
5 years, 5 months ago
This course clear as rain and challenging as hell (for a biologist R/python programmer like me). Each homework is hard and rewarding. It teaches you to navigate the structure and idiosyncrasies of the programming languages masterfully. Discussion of "hot issues" is balanced and informed. Community is very helpful.
Was this review helpful? Yes0
 Flag
Mizar83 . profile image
Mizar83 . profile image
9/10 starsCompleted
  • 9 reviews
  • 8 completed
5 years, 5 months ago
Easily one of the best (maybe THE best) course I've taken on coursera. The teacher is excellent, and he really conveys in the videos all his entusiasm for the subject and all his teaching experience. The homeworks/exams are hard, but interesting and rewarding, I think I was never more satisfied at the end of an online course. I really felt that I learned something. This is not a beginner course, and takes quite some time, but it is definitely a must for people curious about programming languages
Was this review helpful? Yes0
 Flag
Ant Super profile image
Ant Super profile image
10/10 starsCompleted
  • 9 reviews
  • 7 completed
5 years, 6 months ago
I knew how to program with common imperative languages. This course shows concepts and theory of more paradigms and was quite eye-opening. I learned quite a lot about details of a type system and it's challenges.
Was this review helpful? Yes0
 Flag
Samantha Poynter profile image
Samantha Poynter profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
5 years, 8 months ago
I'm a programming hobbyist and wanted a course to challenge and improve me. Dan Grossman's Programming Languages did both perfectly. While not assuming any prior programming expertise, it does thankfully skip the "Hello world!" style tutorial in favour of more interesting projects. It was more work than I'd expected, but the teaching was clear and engaging. I never felt stuck while doing the assignments - the tasks were tricky but all the necessary theory had been covered in the videos and accompanying texts so it was simply a matter of working out how to put it into practice.
Was this review helpful? Yes0
 Flag
jac profile image
jac profile image
9/10 starsCompleted
  • 5 reviews
  • 4 completed
5 years, 9 months ago
I wish my university had offered a course like this. Fascinating material and a very engaging lecturer, but it really did need the time listed. The first few weeks seemed easier, but it might also be that I just gradually fell a little behind - I didn't really have time to do the final assignment, and I think I would have got more out of it all if I'd really been prepared to put in 12-15 hours a week instead of assuming I could do it in lectures + one evening a week.
Was this review helpful? Yes0
 Flag
Jeanne Boyarsky profile image
Jeanne Boyarsky profile image
10/10 starsCompleted
  • 33 reviews
  • 29 completed
5 years, 10 months ago
I've been a software developer for over a decade. I learned LISP in college and reviewed functional programming in a previous Coursera course. If you haven't taken any class that covers functional programming, do so before taking this class. This is not an introductory class. It uses SML, Racket and Ruby to teach concepts of different programming languages. There were 8 weeks of lectures. The lectures were well designed in bite size pieces. The instructor also provided a summary PDF each week to review the materials outside of video form. There were 7 homework assignment - 3 SML, 2 Racket and 2 Ruby. The autograder was intended to be run twice and your score was an average of those two runs. I liked this as it gave incentive to be thorough while still giving useful feedback from the grader. Each assignment came with some test cases . Racket used XUnit. SML and Ruby did not although I ported the tests to do so myself. You could submit... I've been a software developer for over a decade. I learned LISP in college and reviewed functional programming in a previous Coursera course. If you haven't taken any class that covers functional programming, do so before taking this class. This is not an introductory class. It uses SML, Racket and Ruby to teach concepts of different programming languages. There were 8 weeks of lectures. The lectures were well designed in bite size pieces. The instructor also provided a summary PDF each week to review the materials outside of video form. There were 7 homework assignment - 3 SML, 2 Racket and 2 Ruby. The autograder was intended to be run twice and your score was an average of those two runs. I liked this as it gave incentive to be thorough while still giving useful feedback from the grader. Each assignment came with some test cases . Racket used XUnit. SML and Ruby did not although I ported the tests to do so myself. You could submit more than 2 times if you wanted to (with a lower grade) although there was no need to. Each week there were also challenge problems to learn more. The peer review was guided by very specific things to look for an a sample answer solution. There were also two exams to look at concepts that weren't covered by coding. Dr. Grossman is quite passionate about the material. He and his TAs clearly spent a lot of time making the class fit the style of online education. Since this was the second section of the class, they clarified from the first run. Which meant there were some "thought bubbles" over the video to correct them. The later programming assignments were hard, but very rewarding. I'm glad I took this class.
Was this review helpful? Yes1
 Flag
Luiz Branco profile image
Luiz Branco profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
5 years, 9 months ago
Prof. Dan's explanations are precise and insightful. The course gave me a far better understanding of functional programming and how it compares to OO languages. The best MOOC I've participated so far.
Was this review helpful? Yes0
 Flag
Evgeniy Ismailov profile image
Evgeniy Ismailov profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
5 years, 9 months ago
This course makes you look at tools you have used for ages from different perspective and think of problems you are trying to solve from another point of view. It is really thought-provoking course! After taking this course it is much easier to study any new language, because most of basic concepts were covered there. For example currently I'm learning Scala and it appears that many of language idioms I know from Programming Language course.
Was this review helpful? Yes0
 Flag
Olivier Pirson profile image
Olivier Pirson profile image
10/10 starsCompleted
  • 4 reviews
  • 4 completed
5 years, 10 months ago
Great course. Several paradigms (functional, objects) in several languages (ML, Racket, Ruby) are studies and compared.
Was this review helpful? Yes0
 Flag
Varga Péter profile image
Varga Péter profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
5 years, 10 months ago
Best online course I participated so far. The professor's enthusiasm is overwhelming in a positive way.The quality of the lectures, materials and assignment are very good. It's definitely not a beginners course, probably not even intermediate, but it teaches a perspective you need in computer science if you want to be professional. I would absolutely recommend this course to every student at my faculty or any faculty at C.S. The course is not about new programming languages, it's based on programming idioms(functional and object oriented), and using them in practice.
Was this review helpful? Yes0
 Flag
Ivan Vashchenko profile image
Ivan Vashchenko profile image
10/10 starsCompleted
  • 2 reviews
  • 2 completed
5 years, 10 months ago
I've always loved programming languages, from Brainfuck to SQL, from C to Prolog. This course has helped me to get the big picture - a very broad and universal understanding of differences and similarities of different paradigms. The homeworks are really great too - in one of them you extend and improve a Tetris game written in Ruby, in the other you implement your own interpreter of made-up language that includes closures and first-class functions. Highly recommended.
Was this review helpful? Yes0
 Flag
Kiffin Gish profile image
Kiffin Gish profile image
9/10 starsTaking Now
  • 1 review
  • 0 completed
5 years, 11 months ago
Although I've had much experience in software development, I've never had the chance to learn about functional programming. I was familiar with certain concepts like lexical scope, closures and curried functions, but never really understood them. This training provides a fast-paced and somewhat demanding tempo, but perseverance and dedication will result in a deeper and more fulfilling insight into functional programming. Dan Grossman is an excellent instructor who explains even the most difficult concepts clearly and simply from beginning to end. This is no beginner's course nor is it a basic introduction. In my case, the workload was easily 2 days a week, but for more experienced academics it could be much less.
Was this review helpful? Yes0
 Flag
sesm profile image
sesm profile image
10/10 starsCompleted
  • 2 reviews
  • 2 completed
6 years, 1 month ago
If you want to become a polyglot programmer, this course is a very good place to start. It will teach you the basic concepts in programming language design, making them very clear to you by using appropriate language for each conecpt.
Was this review helpful? Yes0
 Flag
Brian profile image
Brian profile image
10/10 starsCompleted
  • 8 reviews
  • 6 completed
6 years, 6 months ago
First of all, it should be stated that is a real deal programming course. Many courses on coursera do not require that much time commitment, and are definitely laid back versions of college courses. This class however, is tough, and requires a lot of time. It is definitely NOT an introductory programming course. Each weeks contains approximately 3 hours of lectures, and expect to spend 10+ hours doing each homework assignment. If you have the time available, and the will to get through the difficult material, this course is fantastic. Dr. Grossman has put together a great course on some fundamental concepts of programming, and you will be a better programmer after completing it. I will definitely be signing up for this again the next time it is offered, because I was not able to complete everything, as I couldn't devote as much time to the course as I would have liked.
Was this review helpful? Yes2
 Flag
Moshe Radian profile image
Moshe Radian profile image
10/10 starsCompleted
  • 4 reviews
  • 4 completed
6 years, 4 months ago
This is a very advanced course on programming languages, and covers a large variety of subjects. Recommended for anyone who wants to study programming language theory.
Was this review helpful? Yes0
 Flag
Dario Iacampo profile image
Dario Iacampo profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
6 years, 4 months ago
This is THE COURSE you have to take if you want to start to understand programming. Here are presented beautiful languages like SML, Racket and Ruby and basic features like scoping, evaluators, functional style, OO style, dynamic/static typing, ... are dissected
Was this review helpful? Yes0
 Flag
Oleksii Kovura profile image
Oleksii Kovura profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
6 years, 6 months ago
My prior experience - some imperative "scripting". Lectures are very clear, engaging and have live coding in them. Assignments are challenging for a newbie programmer (or one that never programmed functionally). What I liked the most about them are parts where I had to think a lot about the solution, then express it in just a few lines of code. One assignment was to write a PL interpreter, given a specification of simple made up language that included closures - it shed some light for me on how interpreters work and what is a syntax tree. Languages used: ML (SML), Lisp (Racket) and Ruby. At the end of the course there were several overview lectures about OOP/FP duality and benefits of different type systems. Overall - excellent course.
Was this review helpful? Yes0
 Flag
Edwin Dalorzo profile image
Edwin Dalorzo profile image
9/10 starsCompleted
  • 1 review
  • 1 completed
6 years, 6 months ago
I am software developer with 14 years of experience, mostly working with Java and other object-oriented programming languages. I just finished taking the course Programming Languages by Dan Grossman from the University of Washington in Coursera and this post is a review of the course from my perspective. Programming Languages is a course intended to teach many important principles in programming with a strong emphasis in functional programming. Among the most interesting concepts are the contrasts between static and dynamic typing (and type inference), and the contrasts between functional programming and object-oriented programming. But The course covers other fundamental concepts like mutability / immutability, algebraic data types and pattern matching, recursion and tail recursion, first-class functions and closures, high-order programming, currying, modules, parametric polymorphism, thunks and lazy evaluation, streams, memoization... I am software developer with 14 years of experience, mostly working with Java and other object-oriented programming languages. I just finished taking the course Programming Languages by Dan Grossman from the University of Washington in Coursera and this post is a review of the course from my perspective. Programming Languages is a course intended to teach many important principles in programming with a strong emphasis in functional programming. Among the most interesting concepts are the contrasts between static and dynamic typing (and type inference), and the contrasts between functional programming and object-oriented programming. But The course covers other fundamental concepts like mutability / immutability, algebraic data types and pattern matching, recursion and tail recursion, first-class functions and closures, high-order programming, currying, modules, parametric polymorphism, thunks and lazy evaluation, streams, memoization, macros, object-oriented inheritance, mixins, and many other interesting topics. Every week a set of topics is covered in great detail in a series of videos that may have a length between 10 to 20 minutes. The material is released every week as course progresses. The materials covered in the videos are also provided in written format for further analysis and easier reviewing. Every week a homework is made available to the students. The homework consists of a series of exercises of increasing difficulty. Sometimes the homework contains challenge exercises that can be solved for some extra points. In my case, solving every homework took an average time between 4 to 8 hours, and the challenge exercises sometimes took me almost a similar amount time (mostly due to the lack of specification and not necessarily due to their complexity, although they were more complex than the rest of the exercises in the homework). Students submit their homework and an automatic grading system reviews it by applying a series of tests. The failing tests are reported to the students so that they can fix the problems and resubmit again. Only the first two submissions count for the final grade (an average is used for final grading purposes), although students are allowed to submit as many times as they want. The grading system works pretty well, but there were occasional problems with it that were timely corrected. Perhaps my biggest complaint is that the autograder, many times, does not provided enough information to determine what was wrong with the homework submission and this lead to certain amount of frustration when trying to figure out what to do to solve the problems, above all because only the first two submissions count for the final grade. Particularly for the cases of challenge exercises the information provided by the autograder upon failure of any tests was really scarce. Also, students are required to submit their homework for peer- reviews. And they are required to peer-review other students' homeworks. This exercise is intended to give a broader perspective to the students by means of reading someone else's code. This way, the student can find better solutions created by others or spot problems in their own solutions, etc. Also, during the peer-review process the right/best solutions for the exercises were shared with all students participating in the reviews. Therefore, doing the reviews was the best way to find out the answers to all exercises in the homework. On week 4 and week 8 the students take an online exam consisting in questions with multiple selection answers. The questions are based on the topics covered in previous weeks. Some of the questions could be based on understanding of the theoretical concepts, and some question consist in practical applications of those concepts. Once the student starts the exam there is a time limit to complete it. I think something around 90 minutes. The following is detailed outline of the topics covered every week. Week 1: SML ML Expressions and Variable Bindings Variables are Immutable Function Bindings Pairs and Other Tuples Lists Let Expressions Options Some Other Expressions and Operators Lack of Mutation and Benefits Thereof The Pieces of a Programming Language The homework consisted in the development of series of functions to deal with dates. Week 2: SML Conceptual Ways to Build New Types Records By Name vs By Position, Syntactic Sugar and the Truth about Tuples Datatype Bindings How ML Does Not Provide Access to Data Type Values How ML Provides Access to Datatype Values: Case Expressions Type Synonyms Lists and Options Are Datatypes Polymorphic Datatypes Pattern Matching Type Inference Polymorphic Types and Equality Types Nested Patterns Exceptions Tail Recursion and Accumulators The homework consisted in a series of exercises related to a card game, a variation of solitaire. Week 3: SML Functions as Arguments Polymorphic Types and Functions as Arguments Anonymous Functions Unnecessary Function Wrapping Maps and Filters Returning Functions Lexical Scope Environments and Closures Fold Combining Functions Currying and Partial Application The Value Restriction Mutation via ML References Callbacks Abstract Datatypes Closures in Other Languages The homework consisted in a series of exercises related to the implementation of pattern matching and type inference. Week 4: SML What is Type Inference Overview of ML Type Inference Mutual Recursion Modules for Namespace Management Signatures Hiding Things Equivalent Implementations Benefits of Side-Effect-Free Programming Standard Equivalences There was not homework because this week was the week of the midterm exam. Week 5: Racket Racket vs Scheme Functions, Lists Syntax and Parentheses Dynamic Typing Local Bindings Top-Level Definitions Mutability/Immutability Delayed Evaluation with Thunks Lazy Evaluation Streams Memoization Macros The homework consisted in the implementation of exercises related to streams and the challenge was about defining macros. Week 6: Racket Datatype Programming without Datatypes Recursive Datatypes via Racket Lists Recursive Datatypes via Racket's struc Implementing Programming Languages Interpreters and Compilers Implementing Closures Defining Macros via Functions in the Metalanguage ML versus Racket What Is Static Checking? Correctness, Soundness, Completeness, Undecidability Weak Typing Advantages and Disadvantages of Static Checking The homework consisted in the implementation of an interpreter for small programming language called MUPL (Made Up Programming Language). Week 7: Ruby Objects, Classes, Methods, Variables Visibility and Getters/Setters Everything is an Object Duck Typing Arrays Blocks Hashes and Ranges Subclassing and Inheritance Overriding and Dynamic Dispatch Method Lookup Definition Dynamic Dispatch versus Closures The homework consisted in the implementation of a tetris game. Week 8: Ruby OOP Versus Functional Decomposition Multimethods Mutiple Inheritance Mixins Abstract Methods The Subtyping Relation Function Subtyping Subtyping for OOP Covariance Generics Versus Subtyping Bounded Polymorphism The homework consisted in the implementation of an interpreter for a small language of two-dimensional geometric objects. Final Thoughts In my opinion this is one of the best courses I have ever taken. It was fascinating, the topics were covered in great detail. The professor Grossman explained every topic with plenty of examples and almost all the homework was really interesting and the problems were increasingly challenging. Having the opportunity to work with different programming languages of different paradigms and typing styles really enriched my understanding of how programming languages work, and how to make proper comparisons between their features. It was particularly interesting the effort of converting some implementations of solutions to some problems from functional code to object- oriented code. I think that the course prepares the students to learn and assimilate other programming languages more rapidly by having covered concepts that are typically seen in other languages just with different syntax. From the entire course I found the sections covering Ruby a little bit more uninteresting, and particularly the homework for the tetris game in week 7 was too simple and I found little could be learn from solving the exercise, but the rest of the material and homework were incredibly well thought and prepared. The entire experience was really enriching and I feel that it has made me a better developer and has broadened my understand of programming languages and has rekindled my enthusiasm to learn even more about programming and other programming languages. It is definitely a course that I would highly recommend to any other developers.
Was this review helpful? Yes8
 Flag
Norman Richards profile image
Norman Richards profile image
10/10 starsTaking Now
  • 1 review
  • 0 completed
6 years, 7 months ago
Programming Language is a tough class, but it has a high payoff. Of all the typical undergraduate CS classes, this is one that, if taught well, should be among the most valuable one takes. However, it's important to understand the purpose of such a class. The purpose is NOT to learn new languages, it is to learn the language paradigms. That is to say, the purpose of PL is not to learn Java or Ruby or Python. It is to gain a deeper understanding of concepts like functional programming, object oriented programming, logic programming, etc... You should learn concepts like call by value and call by name. You should learn lexical a dynamic scoping, etc... There are two ways to learn these concepts. You can use languages that are representative of the techniques and gain a shallow understanding of the concepts, or you can investigate more deeply by implementing these concepts. This class is about 75% the former and 25% the latter, which is... Programming Language is a tough class, but it has a high payoff. Of all the typical undergraduate CS classes, this is one that, if taught well, should be among the most valuable one takes. However, it's important to understand the purpose of such a class. The purpose is NOT to learn new languages, it is to learn the language paradigms. That is to say, the purpose of PL is not to learn Java or Ruby or Python. It is to gain a deeper understanding of concepts like functional programming, object oriented programming, logic programming, etc... You should learn concepts like call by value and call by name. You should learn lexical a dynamic scoping, etc... There are two ways to learn these concepts. You can use languages that are representative of the techniques and gain a shallow understanding of the concepts, or you can investigate more deeply by implementing these concepts. This class is about 75% the former and 25% the latter, which is a little on the tough side for an online class, but it's quite doable and well worth the time. As great as this class is, I should also be honest about some of the negatives: * logic programming was completely missing, which is a huge failure for a programming languages class * many of the assignments are not well specified, and sometimes the challenge of figuring out what the problem is asking is greater than the challenge of completing the assignment * programming assignments varied wildly in their difficulty level. one assignment may take 8-10 hours of work while the next one can be completed in less than one
Was this review helpful? Yes4
 Flag
Leslie Hill profile image
Leslie Hill profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
6 years, 6 months ago
Outstanding pedagogy. Challenging course. Fast pace. The student must apply concepts from simple examples to challenging assignments with little assistance. Heavy workload. About 3 hours of video and 10-12 homework problems per section. There is no doubt that I am a better programmer for having taken this course. The course is not about learning particular languages. The languages covered were carefully chosen to illustrate particular concepts. You will find you can apply this knowledge to the language you usually use (as well as any new language you want to learn).
Was this review helpful? Yes3
 Flag
Erik Weatherwax profile image
Erik Weatherwax profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
6 years, 6 months ago
IMHO, this course, along with Tim Roughgarden's Coursera algorithms courses, are the flagship standard bearers as to the value that a brilliant, and more importantly enthusiastic, professor can provide.
Was this review helpful? Yes2
 Flag
abelard profile image
abelard profile image
10/10 starsCompleted
  • 3 reviews
  • 3 completed
6 years, 6 months ago
A great course focusing on properties of programming languages with examples taken from SML, Racket, and Ruby. It will be hard if you're very new to programming, but fun and challenging for intermediate programmers and beyond. Professor Grossman's lectures were engaging, and the lectures were also available for download in PDF format, which was very helpful. What I liked best about the course were the exercises. They were clearly very carefully designed to teach you the concepts, challenging but not overwhelming. This is my favorite MOOC along with Norvig's Design of Computer Programs at Udacity. Highly recommended. It will make you a better programmer.
Was this review helpful? Yes2
 Flag

Rating Details


  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.