Thoughts on programming for all: Part IIb — Downsides

Last week, I discussed one of the downsides of students being taught to think algorithmically, even if they absorb it all.  Unfortunately, just because students can pass an introduction to programming course doesn’t mean they have any understanding of code that they or anyone else has written.  Whenever I teach a course, I make a point to mention cargo cult programming and warn students not to fall into that trap.

Continue reading “Thoughts on programming for all: Part IIb — Downsides”

Thoughts on programming for all: Part IIa — Downsides

In my last post, I wrote about some of the benefits of teaching programming as part of a general liberal arts education.  However, I did express some new reservations about doing so which I explore further in this blog post.  Having let quite a bit of time elapse since writing the first post, I’ve unfortunately forgotten a number of points I had intended to make.  And now, I’m going to break up the downsides into multiple posts.

Continue reading “Thoughts on programming for all: Part IIa — Downsides”

Thoughts on programming for all: Part I — The Merits

I was reading Ira Basen’s article The algorithm method in the Globe and Mail and was reminded of the talk given last week by Professor Mark Guzdial of Georgia Tech as part of the DCS’ Distinguished Lecture Series. Guzdial argued that an introduction to programming, if not computer science, should be an essential part of a liberal arts education due to the way it reshapes the way one views computers, an increasing part of our everyday lives. While I agree with his position that being able to understand the algorithms that dictate whether one is approved for a mortgage or make predictions about climate change search could be useful and important, Basen’s article caused me to question and temper my own beliefs on the importance of introducing programming to undergraduates.

Continue reading “Thoughts on programming for all: Part I — The Merits”

Renaissance Man Renaissance

The Department of Computer Science at the University of Toronto is considering changes to its requirements regarding the number of courses students must complete in various sub-disciplines of computer science in order to obtain an M.Sc. or Ph.D.  While I am in moderate opposition to these breadth requirements, I present here an argument partially in favour of breadth; this argument is entirely an academic exercise for the sake of challenging my existing views (okay, it’s also fun) and is presented as a single-sided argument.

Continue reading “Renaissance Man Renaissance”