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 Hector L
•Aug 13, 2017
concise comparison between FP and OOP
By dynasty919
•Mar 3, 2018
that last assignment is pretty neat.
By daniel 1
•May 20, 2018
very good programming language in c
By Zack W
•Aug 26, 2019
definitely a rewarding course
By Wang Y
•Aug 1, 2017
The best course on coursera!
By Aydin S
•Dec 17, 2020
Fantastic end to the series
By Gerhard K
•Jan 12, 2017
Absolutely Brilliant Course
By Guilherme B
•Oct 23, 2016
Best course of my life!
By Atsushi
•Jan 30, 2019
great course material
By pffy233
•Nov 20, 2016
excellence experience
By Kevin X
•Dec 19, 2016
Really impressive!
By 郑
•Jan 10, 2018
very good course!
By Hussein K
•Nov 15, 2022
Great Adventure.
By Sam R
•Jan 11, 2019
Fantastic course
By Morton L
•Apr 4, 2020
Great course.
By Alejandro M
•Dec 17, 2016
Excellent!
By Xinzhuang X
•Nov 13, 2022
fruitful
By jani k
•Mar 28, 2018
exellent
By Abdifatah A
•Dec 19, 2017
great!!
By Melwyn S
•Aug 5, 2023
Fab!!!
By UmbraSeven
•Sep 28, 2017
Great!
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 Brandon I
•Mar 7, 2020
Again, great course - I was a little bit shaky on the Ruby, but to be honest this was my first real dive into what OOP is "really like" (as far as I can tell). I was also impressed by how certain important concepts from Part B were also tested towards the end (e.g., streams). I also enjoyed the material on subtyping towards the end; it makes you actually want to be interested in implementing a small language like that someday. The only caveat I must mention (and what the missing star is due to) is that, I had a little trouble on my Linux machine getting a version of Tcl/Tk to work with my installation of Ruby, since Ruby doesn't accept the latest (packaged) version of Tcl/Tk. I also had trouble with Jruby, and in the end opted to manually install older versions of Tcl and Tk. But I think the Tetris experience was worth it :) That whole little sidetrack actually also turned me on to the possibility of how PLs use graphics libraries in general, so let's see where that leads...