Computer Science (CPSC) 110 is one of the largest and most popular courses at UBC. Without exception, the thousands of students who’ve completed the course are familiar with Dr. Gregor Kiczales, professor of computer science and NSERC software design chair who has built himself a mammoth reputation since coming to UBC in 2000.
A wide range of programs in the faculties of sciences and arts list CPSC 110 as a pre-requisite. And for good reason, according to Kiczales, as the course doesn’t just teach students how to code. More importantly, the class lays the foundation for upper-year level courses to build upon.
“By the time people get to the end of their second year, you would like them to be able to write moderately complex programs and more importantly, be thinking about them the way experts think. Our approach is to immediately get people to understand how to think about programming the way experts do, and then later expand that out to complicated languages and more complex programs,” he said.
However, building a solid foundation in any subject is difficult and requires lots of work. Students enrolled in CPSC 110 have often voiced complaints about the strenuous work load that the course requires, and how that disproportionately impacts those who are new to computer science.
Kiczales believes these complaints run contrary to the numbers. “[The grades distribution] is a perfect bell curve. The average is higher than people think — in the high 70s — and the tail is long. By comparison to other courses in science, it isn’t a brutally hard course,” he said.
Furthermore, he argues that the approach 110 takes is equitable to students with different levels of experience with computer programming. Focusing on the design principles of programming rather than the mechanics of coding, he believes, “avoids the people who know how to program running away from the rest of the room.”
But he did recognize the need for students to stay up-to-date with their coursework. As a course that introduces students to entirely new concepts, falling just one step behind could result in failing the course.
“Every day builds on every day that comes before it, [so] the consequences of falling behind are terrible. Every year, there are some people that fall behind and unfortunately end up failing the course. But we’ve talked to a lot of people and looked at a lot of data — people that put in the hours at least pass 110, if not better than that,” said Kiczales.
The real problem with 110, Kiczales contends, is that it has tried to serve two different audiences — computer science majors and non-majors who want to learn software engineering at the university level. According to Kiczales, CPSC 103 is now being offered to resolve this conflict.
“The solution is finally here and that’s 103. It takes the systematic design approach we take in 110, but doesn’t include quite as much upward growth,” he said. “It’s not trying to cover as much, but it is trying to be a course that teaches you how to program right.”
Letter grades aside, CPSC 110 is a project that Kiczales thoroughly enjoys leading. He is what some would call a natural educator. Even before coming to UBC, he worked in education-related laboratories, first at MIT and later at the Xerox Palo Alto Research Centre. Coming to UBC and teaching the department’s introductory course is an experience that Kiczales refers to as a “privilege.”
“You teach people who have never seen a subject matter before, so it’s a great privilege and it’s also a huge responsibility. Because if you blow it, then they go, ‘Well, that’s not interesting,’ and go the rest of their lives thinking that. One of my greatest sources of pride in [CPSC 110] is that I get a lot of students every year who say at the end, ‘You know, I didn’t think I would like this, and now I do.’ And that’s the greatest privilege you can have,” he said.
Currently, graduates from the computer science program are being hired by the world’s largest tech employers such as Facebook and Google. Vancouver also has a growing tech sector, with the likes of Hootsuite and Microsoft opening regional offices. And while Kiczales is happy to see his students finding success after graduation, he knows that they will have to adapt and re-learn to stay afloat in the computer science industry.
“Computer science, as a field, has always favoured people that can learn new things quickly. That’s always been true, and it’s going to continue to be more true as the fundamental underlying principles and tools of programming change. Machine learning is going to be huge, and already in software engineering, data science plays a huge role,” he said.
In CPSC 110, Kiczales is preparing students for this future.
“I’m basically trying to say to people, ‘Do not get the idea that you can learn one specific language.’ The language you learn by yourself overnight. [At UBC,] you’ve got to learn the core of how software works. Otherwise, your career is going to be extremely short.”