SS
Jan 7, 2019
Great course, nicely rounded off the discussions from previous parts. Really puts OOP style programming in context and nicely contrasts it from the functional programming concepts. Highly recommended!
KA
Jun 28, 2023
This course covers many concepts in detail and provides the opportunity to practice them through challenging homework. It is highly recommended. Also, the teacher's enthusiasm helps a lot ;)
By Евгений Ш
•Sep 3, 2024
The last course in "Programming Languages" series. It introduces OOP and contrasts it with functional programming. Pros: - Good introduction to Ruby. Fast yet descriptive. - Good introduction to OOP with key ideas. - Very good comparison of OOP/Functional paradigm as ways to organize the same functionality differently (in opposite ways). - Good explanation of subtyping/generics. Cons: - Ruby may seem a bit too extreme choice for me here. The goal is clear: separate classes and types. However, from practical applications this confusion is often convenient (as was said in the course itself). - Bad examples and representation (a classic old way of teaching something: poor IDE and bad naming). The course illustrate concepts in silly examples (that's how the instructor calls them) with bad/arbitrary naming. As a result, the concept is clear, but it is hard to connect it to the real-world problem. I like examples with Point/Point3D/ColorPoint the most: the problem of multiple inheritance is the inferior since the bad "is-a" modelling is in the first place. This is just not how it is done in OOP. And exactly this bad modelling creates the diamond problem. Overall thoughts about the whole series of "Programming Languages": - the courses do their thing right: they illustrate core concepts of programming languages in different settings and teach you to see programming languages as sets of features and design decisions. The courses compare them and analyze how they work out in different situations. - the courses may not be as useful for practical development as for scientific R&D. However, it is good to know about learned concepts and to be able to see/use them in real development. - the course illustrates that in general functional paradigm is better and OOP is mostly suited for specific domains. However, for me the course implicitly illustrates that extremes are bad: 1. OOP has bad support of binary operations (by double dispatch). However, how often do the one face with such problems in real development? Usually, the domain is defined by business and is not so abstract (and don't forget about KISS). 2. Functional paradigm supports immutability. But this affects performance. And how often do the one care about performance? =) These focuses about specific problems favouring functional approach create a biased picture because we definitely care more about performance (but, of course, not all performance problems come from immutability). To sum up, there is a reason, why OOP is so popular. And there is a reason, why most programming languages supports both approaches in some way or another: just because one approach works better in one cases and other - in other cases. I think, this course lacks this message in a more explicit way.
By Jonathan F
•Apr 16, 2023
I cannot express how grateful I am feeling, right now, after completing this course. It was very dense in content, and challenging. Yet, it was free, and the instructor and the overall system were amazing. Being able to access this sort of content the way we have access to it, right now, is an incredible thing, and it demonstrates very clearly how the internet has democratized access to education. When I was younger, I didn't have the money to get a higher education without getting into debt, so I didn't get one. I wish this kind of course were available back then.
Now, I have to reiterate, this wasn't an easy course, and I certainly did not absorb it entirely. I have multiple part time jobs right now, so at times I had to not sleep very much to complete it, but it also means that at times, I was a bit of a zombie as I was learning. I suspect that I will take more courses, keep learning, and eventually perhaps revisit this course and see how it's like to do it a second time.
Massive thanks again to Dan and his team for putting this together, and to Coursera for hosting it. In the last part, you encourage us to get out there and make the world a better place, all in the meanwhile you were setting an example for us.
By Alexander T
•Feb 6, 2022
At the end of part C I will give an overall impression abouth the whole course. I have Masters in Computer Science and overall experience with different programinng languages aroung 10 years. 5 of wich is full-time job of enterprise programming. Having all that this course still was completely awesome I had enourmous amount of fun taking it. I elarn plenty of new stuff and for most of the key parts I finally got a clear precise definition of things I already new but it was more intuitive without actual scientific explanation. Dan is an awesome lecturer he is plesand and fun to listen too. I would recomend this course to anyone who wan't to susm up their knowledge. I had no problems with homeworks but there still was couple of chalenges, i think It might be a bit hard to complete for a novices. Anyways huge thank's to Dan when ever I will need to explain some basic concept to someone at work I will refer to Dan's definition and really recomend to watch this course.
By Nadav L
•May 2, 2024
This course is amazing. The concepts are well explained, focusing not only on what they are but on why they are important and when they should be used, explaining benefits and tradeoffs and showing how they are used in combination and in contrast to each other. The course's notes, homework, tests and addditional exercises are very helpful, and all help achieve a deeper understanding of the material. And maybe most importantly - the instructor is really passionate about the course, and it shows!
By Andrea T
•Oct 24, 2021
This whole course series is extraordinarily good. I've been programming professionally for 15 years mainly OOP and knew a lot of things but I had many aha-moments in this course and really gained a deep understanding of the concepts provided here. Thank you very much.
By Anup P
•Dec 28, 2023
This concludes the three part series (an awesome trilogy!) on programming languages - and yet again, everything about this part in the series (structure, content, quizzes, programming assignments and exams (practice and final)) is great. Dan's enthusiasm shines.
By Jimmy C C
•Mar 16, 2020
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.
By Joshua H
•Feb 10, 2017
As far as I know this is the best series of courses that covers the major programming paradigms and the most valuable idioms that emerge from the different traits of these paradigms. I strongly recommend it to everyone studying computer science!
By Shaohao Z
•Jan 19, 2017
It really took quite a lot effort to accomplish the course and I'm sure that I am having a much clearer mind towards different programming language, which is impossible without this course.
So thank you for bringing us this wonderful course, Dan!
By Abhik K
•Oct 18, 2016
Perhaps the best course i have completed on Coursera. I aboslutely love Dan Grossman's teaching approach. I can only applaud the care and effort that has gone into designing this. I would eagerly join any course that Dan teaches in future
By Xiangyu G
•Jul 27, 2017
Clear and refreshing. Especially the part comparing OOP with FP. They way to compare subtyping and generics is also novel. I have been writing OOP and FP programs for years but haven't look at them from such a point of view.
By Rongge Y
•Jan 27, 2018
Very passionate instructor and very rich and well-organized content. Great to learn and reflect on some novel concepts like double dispatch and sub typing; it's really enlightening. Great course experience. Thank you Dan!
By Zijiao Y
•May 25, 2017
I would say I got the exact the same reason as Dan for choosing computer science to be a huge part of my life: The true Awe-inspiring thing! And this is literally the best course I have ever take for the past 20 years
By jon p
•Jan 1, 2021
Really enjoyed the course and learned a lot of good information. It was organized and presented very well. Seeing other implementations in the peer reviews was interesting. Thanks for putting this all together!
By Khadidja A
•Jun 29, 2023
This course covers many concepts in detail and provides the opportunity to practice them through challenging homework. It is highly recommended. Also, the teacher's enthusiasm helps a lot ;)
By Andres H
•Nov 29, 2020
Very Challenging course but worth it at all the explanation in the three parts helps you a lot I recommend it for every one wanting to approach better to different programming languages.
By Jan H
•Dec 27, 2016
I took this course about 10 years off the college, and it was excellent refresher on the topics I don't use on a daily basis. Absolutely great lecturer, great videos and study materials!
By Shreck Y
•Jan 8, 2021
Excellent course that introduced me to the field of programming languages. I can now see many OOP programs and languages from the functional perspective and simplify a lot of problems.
By Peilun D
•Jan 21, 2020
Best MOOC taken so far! Learnt a lot about programming languages and highly recommend it to anyone who wants to learn more and understand deeper about programming language in general.
By Nelson V
•Sep 14, 2017
One of the best courses of my career. This was truly programming languages. You'll look at your programs, in any language you use, in a whole different way! Highly recommended!
By Ahmed E
•Jul 13, 2020
It was an incredible journey, have learnt from it a lot of things, Prof. Dan was spectacular, his way of delivering difficult concepts in an easy way is very very good.
By Abdullah E M S E
•Oct 2, 2020
Great course that teaches you a lot about different programming paradigms and concepts. Gives you in depth understanding of how programming languages work
By Fei G
•Dec 2, 2019
Last Part of the course. A fantastic learning experience. Thank you Dan and other folks participating in the creation of this course, for the great work!
By Sorin J
•Aug 20, 2020
Outstanding! Even if this part of the course is primarily focused on Ruby and OOP, there is a lot in it to learn even for experienced programmers.
By Sony
•Sep 7, 2020
It is a very challenging but rewarding course. Dan is a great teacher, he engages you in learning and makes it much more fun. I enjoyed a lot.