Computation, Programs, and Programming
“Trust the natural recursion!”
Text: (online videos via Coursera on Systematic Program Design)
Prof: Dr Ronald Garcia
Ron is a cool guy. Great sense of humour. He spent a lot of time answering basic questions and doing (generally) simplified examples which annoyed some, since they had already grasped the basics from the videos, and wanted him to explain the more complex aspects of the course. I didn’t mind, since I failed to fully grasp some of the basics from the videos. And sometimes Ron’s simplifications can be applied to a more complex setting. For example, the way he explained built in abstract functions was simple but did not leave out any nuances.
I worked very hard in this course. Some people who had serious prior programming experience, or got really addicted to programming once initiated by this course, found the assignments and tests a breeze. I did not. I got a very good result, but I think that was a result of generous scaling and a lot of hard work on my part. Problem sets are increasingly difficult. Though the first midterm is really easy if you made the faintest attempt to keep up with the material, the second midterm and the final are exponentially harder.
Work-list accumulators: Required me to fundamentally alter the way I saw the structure of my template, which was a challenge. Lots of moving parts as well.
Back-tracking search over generated trees: Most finals have a question on this, pretty tough, with so many moving parts, but the structure is pretty repetitive.
Abstract fold functions: Making one is easy, but using one to solve a problem is a challenge. Requires practice, insight and being methodical.
Generally okay lab, since the TA’s are on hand to help. This was in stark contrast to the problem sets which are generally harder, and you have to work on individually. I found the first few labs super-simple, but the one’s after the first midterm increased dramatically in hardness. I generally did not come close to the the 3-hour mark, though many people often remained till the end and many others would finish ahead of me within the first 30 minutes.
If you are not really into programming, or have no serious programming experience, be prepared to work very hard to get the most out of this course. I honestly felt that the course was rushed and I didn’t have time to digest what I had learnt.