Initiation à la programmation (en C++)

This is French language introductory programming course conducted by professors from the Ecole Polytechnique Fédérale de Lausanne (EPFL). I took it for two reasons. One, it teaches C++ and it’s kind of embarrassing to know programming but not to know C++ (or at least C). Two, it’s in French and it’s good to brush up on my language skills once in a while. While this is indeed an introductory course that assumes no prior programming language, it uses C++ and as we all know, that automatically makes it a step higher difficulty. Also, since there no similar courses on Coursera for C++, quite a few English speakers apparently signed up for it despite having only limited proficiency in French.

As you might expect this course starts from the very basics: variables, expressions, conditionals, loops, functions, collections etc. But it also moved on to territory that I found surprising in an introductory course: multidimensional arrays, structures and even the dreaded pointers. There are approximately an hour and a half of video lectures per week over the course of the seven week course, the usual Coursera quizzes and five programming assignments. The assignments are autograded and actually each assignment includes multiple questions and therefore different programs. The course offers a certificate based only on completion of the assignments.

I found the video lectures to be of uniformly very high quality. The instructors paid particular attention to C++ 2011 and how it may differ from earlier versions and were also careful to note instances where not all C++ compilers may behave in the same manner. I especially appreciated the way that the instructors were never condescending. For example, if there are many ways to do something, the instructors will state all of them while noting that some of these options are out of the scope of the course and will not be elaborated on. This contrasts for example with the way the instructors of Learn to Program: Crafting Quality Code in which in the interests of simplicity and not overburdening the student, they will simply omit alternatives.

As for the assignments, they started out being fairly simple but progressed quickly in difficulty. I expected them to be trivial and therefore boring but they actually turned out to be rather interesting and seem well designed to whet the student’s appetite for further study of algorithms. For example, one exercise involved implementing Gauss’ algorithm for calculating the correct date for Easter Sunday given a year. Another involved implementing the Elias gamma coding algorithm to compress data. An early exercise involved a simple physics simulation involving a parachutist. All these were much more fun that I thought.

I was also extremely impressed by the volume of the optional exercises given as part of the course materials. Many of them involve implementing well known algorithms to solve mathematical problems. These are decidedly non-trivial and I do wonder how many students actually attempt them. But it’s really fantastic that these materials were made available as part of the course. They even provide the correct solutions for these problems as well, though of course there is no autograding script for these and they are not actually taken into account in the final grade.

As far as I can tell, the professors and the TAs for the course were very active on the forums. Unfortunately while I had no problems understanding the lectures and reading the material, I didn’t feel confident in my written French enough to write on the forums. I did start some threads but I used English, though of course all of the responses were in French. I noticed that at the beginning of the course, quite a few other people started threads in English and asked for English subtitles. The instructors of course welcomed anyone but did say that no official support in English would be given and some of the Francophone students seemed upset the English-speaking students “invading” a course that is taught in French.

Overall, this course completely exceeded my expectations. This is exactly what I would expect of a course that is meant to train someone to be a professional programmer. The sequel to this course, which covers object oriented programming in C++ is scheduled for February of next year and I’m very eager to participate in it.

I will say that although I am now not completely clueless about C++, I am far from proficient in it. In particular, the more I learn about it, the less I like it and the more happy I am that I can always use more modern languages with automatic memory management instead. (Now I understand why Dan Grossman in the Programming Languages class says that C++ is allowed to set your computer on fire if something goes wrong.) I do appreciate that C++ has some neat features you don’t see in Java, which what I prefer to use, such as the const &variable notation. But by and large, even though I do want to learn it and I can see how knowing me helps me as a programmer, I can’t imagine why I would ever willingly choose to actually use C++ for something.

Leave a Reply

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