Reorganizing Our Software Engineering Courses

Posted

Today, the University of Toronto’s Computer Science department has a three-course sequence in software engineering: CSC340 (Requirements Engineering), CSC407 (Software Architecture), and CSC408 (Software Engineering, which is a team project course). Nobody is happy with them: students in CSC340 haven’t seen projects big enough to need formal requirements management, so they don’t understand what all the modeling and paperwork they’re being taught is for; there’s a lot of overlap between that course and CSC407; and CSC408 comes too late in their degrees (typically, the last term of fourth year) to help them find summer internships.

We’re therefore thinking about replacing those three courses with three new ones. It’s all very tentative at the moment, but the idea is basically this:

We think the division between CSC301 and CSC302 would be a natural one, and that if students specializing in other areas (HCI, AI, etc.) only take one course, CSC301 would give them an adequate grounding for grad school or their first job. CSC403 is still up in the air a bit, though; it feels like an “everything we didn’t put elsewhere” course. Crucially, students would be able to do both CSC301 and CSC302 before their PEY internship. So what do you think? What have we missed? What’s in there that doesn’t need to be? What did you get (or are you getting) in your degree that you think we should imitate?