There is very little information about the BCS program on the web so I figured I would add my thoughts.
I entered the program with a good grasp of basic Python, and a decent grasp of basic Java. Most introductory computer science basics like recursion, a few algorithms, logic, and the core of how a computer works were somewhat familiar to me. What I wanted to get out of the program was a much stronger basis in algorithms, data structures, design patterns, and to improve my mathematics and statistics.
I’ll start with what I don’t like about the program. UBC’s Computer Science courses have a very strict pre-requisite structure. You must take 110 (a design course) before 210 which then opens up most other courses. Because of this, if you enter the program with an introductory knowledge of Computer Science, which is increasingly easy to gain through free online courses these days, the entire first two terms of Computer Science courses are fairly simple. They will still take up a decent amount of time though. If you are doing a normal 4 year degree, this is not a huge issue as you have a lot of non-CS courses you need to take, but if you are in BCS then this makes it very difficult to take enough relevant classes to retain full-time status.
Because of this I am stuck taking a less than full-time course load even with a filler course that I most likely won’t get credit for. UBC is holding me back from a number of courses that I feel quite confident I could complete with little issue. Because of this, I will enter their co-op program with fewer CS courses than I could have done and I will be less competitive than if they allowed me to take a few other courses.
Another slight downside is that you gain few marketable skills in the first two courses, especially in comparison to something like a programming bootcamp. The intro course uses a programming language that most people in industry have never heard of, Racket, and after that you mostly use Java. While Java is widely used, if you look at the average job description for entry level positions in software development, you are going to notice a lot of languages and technologies that UBC will never teach you. The CS courses you do take will give you a good grounding from which to learn these technologies though. You just really need to take time to learn some of these yourself and to develop a few personal projects to show employers.
Even with what I said above, I do like the program. I just wish I could speed through the first year a little faster. UBC’s Computer Science department is quite teaching focused compared to other departments at UBC. The courses are fairly well structured, especially if you like partially flipped classrooms, and the instructors definitely care about your success. Between TA’s and Professors there is easy access to someone if you are having issues with a course concept.
The BCS community is also a nice asset. You will meet a lot of awesome students with similar goals that will make your time at UBC a lot better. The program coordinator is helpful and happy to talk to you and provide advice. You also have access to events, such as hackathons, game jams, and tech-talks, that help teach you some of the “hot/new” technologies that your CS classes don’t teach you. The school appears to have a good reputation with all the big tech companies as well as Vancouver’s mid-size and small tech companies.
I am excited to get to the upper level courses, to start co-op, and to really dig into some interesting personal projects. I’ll make a new update when I am further into the program, but if you want to read the thoughts of someone who graduated, check out this Quora answer.
I’ve since updated my thoughts after finishing another term which you can read here.