This one is the follow-up to the previous C++ course that I took. As such it is taught by the same team from the Ecole Polytechnique Fédérale de Lausanne (EPFL) and is again conducted entirely in French. This course focuses on the object-oriented portion of C++ which was ignored in its predecessor.
Once again, this is a very high quality course taught by instructors who obviously have had a great deal experience in teaching this material and have given a lot of thought to the examples and exercises that are included. The course schedule covers seven weeks of lectures and the obligatory course work has five programming assignments, of which only the last four count for the purposes of earning the certificate.
As with before, since I already have some proficiency in Java, nothing in here was really new or radical to me and since I have no real intention of doing anything in C++, taking this course is really a matter of historical curiosity. The subjects covered include the usual suspects: introduction to objection-oriented programming as a concept, inheritance, operator overloading, polymorphism etc.
Naturally, there are still some gotchas for someone who is coming from a Java perspective. For example, you don’t really need to think about polymorphism in Java. It just happens and feels like the most natural thing in the world. Similarly, operator overloading, destructors and multiple inheritance just don’t exist in Java.
Furthermore since I’m just a hobbyist programmer with no experience of working with large projects in which OOP is most useful, I found a lot of the lectures, examples and case studies to be very illuminating. It’s good to finally understand why things like abstract classes and methods might be needed.
The optional tutorials and suggested exercises available here are just as rich as those of the previous course and really be regarded as being essential. I confess that I found many of the exercises trickier than I initially expected. It’s hard to think in C++. You need to constantly be aware of whether you passing by copy or by reference, whether you’re dealing with an object or a pointer to an object etc.
That said, I remain frustrated that my difficulties stem as much from the ridiculousness of C++ (I still find it unbelievable that you either need to write prototypes of everything first or else order methods and functions in the right order to make compilation work) as my unfamiliarity with the language. I reiterate my statement this is not a language that I am very fond of at all.
Finally, I note that the same teaching team offers the Java equivalent of both courses. I passed them by because I thought that I wouldn’t need them. But now that I’ve seen the level of quality these instructors can bring to the table, I’m wondering if I shouldn’t take the time to formally study things like interfaces and generics.
This is an excellent course by an amazing set of instructors. The level of support on the forums is impressive as well. I highly recommend it to anyone who has the required background in French.