Some people won’t like what I have to say here, but here goes.
You don’t have to have a 5 year education in computer science to be successful in this field. The fact is we may spend too many years in “education”, and not enough years learning how things work in the real world. I do understand the concept of higher education, but I don’t believe it’s necessary to be successful. All the programming I learned over the years I taught myself. No-one ever spent any time teaching me to program. My first computer science class was taught by an instructor who few in the class could understand, and was surely talented in some aspect of computer science, but certainly not teaching introductory programming. I think we spent more time playing pool at the university bar than actually in class. I don’t think he even realized there were like 5 people in the classroom. So, I taught myself Pascal. It wasn’t exactly hard because there were ample books on Pascal, and the language itself wasn’t overwhelming.
This first year programming class was interspersed with a weekly class on computer math, which was presented by an instructor who was more mathematician than computer scientist – and it turns out, sometimes enjoyed playing Rogue more than turning up to class (in honours classes anyways). One of the funniest things happened one morning in class. Someone had put a phone on the front podium, and it rang. The instructor picked it up, but there was no-one there. This happened 4 times. It was like a skit from Fawlty Towers. But I digress. I took ten computer science classes as an undergrad – most of which I taught myself… reading books in the library (like this was years before the Internet). The same instructor that taught us computer math, taught a second year class, “Unix and C”,… in which we learned C programming by watching videos (i.e. VHS)… because the instructor could not code in C. In hind-sight, the only classes I took of any significance were with an applied math prof (thanks for the classes Gary Bunting), where I learned about numerical math and Fortran.
Honestly, if you enjoy programming you can teach yourself. There are so many resources these days, it is sometimes overwhelming. What you really need are things that years in higher education won’t provide – a zest for exploration, and an ability to think outside the box. In fact, academia may dampen these things with years spent writing design documents, and learning theoretical concepts, with little ability to express yourself. Computer science should only have 3-year degrees, and they should be completely experiential. That, unfortunately will likely never happen. I realize that 5-year degrees involve coop, which is an excellent way of doing a degree because it is experiential. But does it have to be 5 years?
The British do three-year degrees, and four year degrees with what they term “industrial experience”. They market the 3-year degrees as “the fast route to graduation”. Partially this works because these are focused degrees (i.e. very little in the way of breadth – you don’t have to necessarily take geography classes to pad out your degree). Here is the first year line-up of CS classes from the University of Birmingham (ranked 16th of 102 from The Guardian, 2017 University Guide).
- Fall: Elements of Functional Programming, Introduction to AI, Language and Logic, Software Workshop I
- Spring: Data Structures and Algorithms, Introduction to Software Engineering, Robot Programming, Software Workshop I
Germany offers 3 year degrees, Sweden offers 3 year degrees, even New Zealand offers 3 year degrees. Very few places in Canada offer three year CS degrees, but in an industry like computer science it just makes good sense.
The mind is not a vessel to be filled, but a fire to be ignited.