This course was useful. It helped me improve my code and its design.
Before: my programs ran. Delicate ad-hoc creations, they were held together with a shoe-string and duct-tape.
Now: my programs run. Robust, designed creations, they're well-documented, expandable, modular and readable.
I believe this course has enabled me to write higher quality code.
Of course, just like one becomes better at the craft of writing by writing a lot, one becomes better at the craft of programming by programming a lot. A lot! It can get boring; it can get repetitive and tedious. The support was good, my TA was helpful. (Thank you
@APalley !)
I'm happy I took this course.
The course should be improved by updating the video lectures.
It could also be improved in Level 9's 'Introduction to computation finance' materials by making them more self-contained and more cohesive though necessarily longer. It might make the course more interesting -- and the "jump" to computational finance less jarring -- to sprinkle scientific problems in earlier levels. Level 1 or 2 could have classics like functional/recursive Fibonnaci numbers, printing a Pascal's triangle in the shape of a triangle, etc...
While I appreciate the OO introduction with points, shapes, and arrays, perhaps it might be more interesting and useful to introduce OO and GP with complex numbers, vectors, and matrices.
If one is to stick to geometric shapes, then perhaps it would be interesting to perform geometric operations on them. We touched on scaling; why not add translation (in the direction of an oriented line segment/vector), rotation (around a point), and reflexion (across a line)?
I think it might also be beneficial to introduce basic numerical algorithms. Why not calculate the Point where two Lines intersect? Or what about the Line XOR Circle defined by the Points where two Circles intersect?
When Boost::Random was introduced, why not calculate the area of a Circle by Monte-Carlo simulation?
In short: I think the course could be improved by including more "scientific" questions in the homework and by updating the video lectures.
Lastly, I'm not sure about emphasizing Visual Studio and rendering it necessary for Level 9's homework (and sample code.) While I understand its wide adoption and powerful uses, I believe it is necessary to provide a course that is as "portable" as possible and that can be completed on as many platforms as possible. That's the reason we didn't make use of
C++ 11, right? Frankly, if proprietary technology is to be used for this course, I would have preferred to have used NVidia's CUDA over Microsoft's IDE.
Update the video lectures!