If you are thinking about applying to the program and looking for my full thoughts, I would recommend reading my first part here as this will build on what I wrote there.
As I said in part one, my main goal with the B.C.S. program was to learn “algorithms, data structures, design patterns, and to improve my mathematics and statistics”. My goal with the program was not to learn specific languages, frameworks, or technologies. On that front, I have mostly sought to teach myself on the side, as CS courses here, quite rightly, do not focus on teaching the latest frameworks or technologies.
Now that I am two terms ( 8 months ) in and I am applying for co-op jobs I have to say that I am a little disappointed in the progress I have made on these topics through the courses I have taken. Algorithms and data structures have only been touched on in a limited way in the basic CS courses. 110 talks a little about trees, recursion, and search but fails ( due to the focus of the course being on software construction ) to discuss these topics above a superficial level. 210 discusses a few of the basic data structures, but does not go into the type of detail that allows someone to reason through their uses in the types of problems asked in technical interviews.
It is a little better for design patterns, with 210 covering some of the core ones, although I wish the course had a project to implement one or two of them. On the math and stats side I probably have learnt the most of any of these topics. This term I took Math 221, which was a good course that provides a good introduction to linear algebra and Stat 302, which is a great introduction to probability.
Overall my opinion on the program hasn’t changed much. I still highly recommend taking CPSC 110 on Coursera before starting the program, and then challenging the final in the first week of class. The fact of that matter is that the pre-requisite structure for computer science courses just doesn’t work well for B.C.S. On the standard timetable of the program you will start applying for co-op jobs with only some java knowledge, maybe python, some software development practices, and only a few very basic projects without putting significant time in on top of your classes. Co-op still has a very high placement rate, so you will likely get a job, but if you are like me and want to aim a little higher, having your school hold you back over arbitrary pre-requisites is a little annoying.
So far instructors in my computer science courses have been well above what I expected based on my experience from my first degree, and I hear largely good things about professors that teach the upper year courses.
While there has been a lot of good and bad I am still very hopeful and even somewhat excited about the rest of the program. The classes I am doing this summer are finally starting to bite into the core Computer Science topics that I have been wanting to get to from day one. In the first summer term I will do another software engineering course that will hopefully culminate in an interesting project, and my first course on algorithms and data structures. In the second term I will do a computer hardware course and hopefully the next level of algorithms and data structures (if they can find someone to teach the course).
You can now read part three here.