Three Courses

Posted

People who’ve known me for a while will have heard all this before, but since some of you haven’t, here’s what I would put in the core of a modern undergraduate software engineering curriculum. Each proposed course is one semester (13 weeks).

This is 2/5 of 3/4 of a standard Canadian undergraduate degree, leaving 70% of their course load for subjects ranging from HCI and operating systems to calculus, computational complexity, and humanities electives. It isn’t radically different from what some schools do today: the course on Software Analytics is probably the biggest departure from the norm, while the focus in the two-course Software Development sequence on re-creating tools is unusual but not remarkable. I imagine the inclusion of Psychology in the first year will raise some eyebrows, but I find I’m basing more and more of my choices and design decisions on what the hardware between our ears is capable of, and I think some cognitive psychology will help students understand coding guidelines, while some social psychology will prepare them for working in teams.