These are all the courses that I've taken throughout my computer science degree. So one of the first things that I always do is I go on Reddit or Google and just look up what are some upper year level electives that don't involve writing essays or what are some fun CS classes to do. I will be going over every single course that I've taken over the three years at UBC.
I'll be giving each course a little rating, a difficulty scale, how much I enjoyed it. So just a little heads up, UBC science has... breath requirements, which just means that you do need to take science courses in about seven different science subjects. So you gotta take bio, chem, physics, you can choose seven from like all the science courses that they offer. Another note is that I had AP credits from high school.
I had some of my electives covered and I didn't need to meet my English requirement for university because I already got the AP credits for it and that's also why I've been so lucky to only have taken four classes every year. for the last four three years and i'll still graduate on time well in five years including my co-op so this is my first year starting off with cpsc 110 this is an essential computer science course as almost everybody takes it the other option is to take cpsc 103 or 1 and 107 together for starters gregor is a really fun professor i don't know if he teaches it every year but for my year he taught it and i thought he was really interactive I do remember that this class was notoriously a binomial distribution. Either you really understood the concepts or you didn't really. I was kind of in the middle and I felt like this course made me question a little bit about if I should be in computer science.
But honestly, you can stick it out. It started out pretty slow and then it sort of started to pick up. And it kind of lost me around the trust in natural recursion and the graphs part.
That's when I... was a little bit lost, but I think that if you practice go-to-office hours, it's something that you can really grasp. The language that they use is Dr. Rackage, which is a coding language made for UBC students, so there isn't too much documentation about it online, which is something that maybe you might find a little bit frustrating, but I think that it will really help you learn the fundamentals of coding and computer science essentials. Okay, next class is Math 100. I thought that I liked calculus in high school. I felt like I did pretty well in it, but when I got to university, that was a whole different story.
There's something wrong when the prerequisite for a calculus class is having done calculus. I struggled a lot with this course. It was kind of a shock to me about how difficult it was.
Also note that UBC offers three first-year calc courses, one that is bio-based, one that is business-based, and one that is physics. I decided to go with the first-year. physics just because i thought that it was closer to computer science honestly i don't it doesn't matter you can take any of those and from what i hear the business one i think i believe it is 104 is the easier calculus course out of the three the next computer science requirement that i took was cpsc 121. this course covers boolean algebra, logic circuits, and proof techniques.
I remember the assignments for this class being extremely time consuming. I would be in office hours maybe half of the week. Me and my partner would just be in office hours all the time asking questions and I also found the exams in the class to be pretty hard. My biggest tip for this class is just to start early on assignments and go to office hours.
The other first year math requirement is math 101 which is just the other calculus course integration. I knew this class was going to be brutal for me after taking calculus or math 100 so I got a tutor like right away. That was really helpful for me because the tutor kind of gave me some one-on-one help that I wasn't really getting from sitting in a lecture. Again, I would recommend taking the business calculus course.
I think it's a little bit easier and it might just make your math experience a little more pleasant. The last computer science requirement that I took was I ended up taking CPSC 210 which is just a second year software construction course. I just took that in my first year just because I didn't have any electives that I wanted to take so I just took the next one. I managed to get off the waitlist and actually get into that class which is really great. I think this is one of the easiest computer science classes.
It's a basic software development class and I had an individual project written in Java. This course teaches you about unit testing, proper code techniques, and design patterns. Also, it's a requirement before applying to co-op.
I think for me it was a good decision to take this in my first year. Then I could take CBSC 310 in my next year and feel really comfortable starting co-op. Now on to my first year electives. I took Chem 121. This was mostly because I took AP Chemistry in high school and I knew that it would cover...
a lot of the same topics that I had already done. This course was a very standard chemistry course, like they covered hybridization and learning about different types of bonds and their strengths. I really loved my professor for this class and their passion for chemistry really inspired me to take the next chemistry course, which is Chem 123. That was not for me though. I didn't like chemistry as much as I thought I did. The final elective I took in first year was Science 113. This is an English course.
four science students and you get to write research papers we wrote two and they were very short 500 to a thousand words there was no final and there was also bi-weekly seminars with scientists which were honestly really interesting to listen to i still remember one of them there was a girl who talked about discovering exoplanets through looking at kepler data very very cool and something i still remember to this day now on to my second year Let me just note that I took all these courses during COVID and so they were online and this may not be an accurate assessment of the true potential that these courses can offer you. CPSC 123. This class is about operating systems and I.O. architectures.
You'll learn about pointers and references using C. I found this course very difficult. and I really did not enjoy using assembly.
If I could do this course again, I would definitely go to more office hours, watch YouTube videos to just get a better understanding of what was happening in this class. CPSC 221. This class is pretty important. It's a basic data structures and algorithms course, which obviously is very useful for interviews.
Once you take this course, you can get a really good start on a lot of leetcode questions. I wish that I could go back in time and tell myself You need to pay really good attention to this class, try to internalize everything that they're saying so I do not have to learn all this stuff again on my own. The next class is Math 200. I have really nothing to say about this class except that I'm glad that I'll never have to take it again. This final was really traumatizing for me as it was completely online and there was only six questions. It was all or none basically.
You had to get it right. or you got zero. We're just not going to talk about this. I hope that you have a better experience with this class than I did and it's a required class which really sucks but you'll get through it. Ask a lot of questions.
Use Wolfram Alpha. One other required course is Stats 251. This is a basic statistics course. I took AP Stats in high school and I found it to be very similar to that. There was a little bit of calculus in it but I found everything overall wrong. including the final the midterm to be very fair another computer science class that i took in my second year was cpsc 310 which is a very important class i think it's one of the most important classes that you can take as a software engineer it's a software development course and it's a really big reason as to why i got my first software position the bulk of this course is working on a full stack act application where you get to query UBC data.
You get to do this with a partner and I was very lucky that my partner had done a previous internship before so they had a better idea of what was going on. There is a lot of work for this course, all the checkpoints and a lot of the requirements that you need, so it is a bit time consuming. I would recommend taking this with other classes that are less work intensive.
And on to the final math course that you need to take to meet your computer science requirements, Math 221. This is matrix algebra, linear algebra, and math is really not for me. That's all I have to say. It doesn't really come up again later on unless you're taking graphics. In my second year, I took two electives and my first one was EOSC 116. While it does say in the title that you learn about the Mesozoic period and about dinosaurs, you really learn more about rocks than you do about dinosaurs.
But the professor is super passionate about... whatever they're talking about and it kind of makes this course fun. It's not a very hard course, you get to take a cheat sheet into the exams. I think that this is a very fun course that you can take if when you were younger you always had an interest in dinosaurs or like rocks, but I think this is a fun science elective that you can take and also helps you reach some of your science breadth requirements.
The other elective that I took is philosophy 220 which is symbolic logic. This class is basically the truth tables, the predicate logic from CPSC 121. So if you understood those concepts and you did well, this is a pretty easy elective that you can take in your second year. Summer 2022. This is one of the only summer courses that I took and it's BIO 112. I was really looking for my final course that I needed to take to reach my science breadth requirements and this was the course. For me, there was no labs and Jared Taylor, the professor, is such a wonderful professor.
They made learning fun for me and I had been out of school for an entire year. The great thing about this bio course is there's no labs or tutorials. All you have to do is show up to lectures and do the exams.
For my third year, I was back on campus, which I think is part of the reason why I did a lot better in school. I also made more friends, so I had a bit more of a community of people that I can ask questions. I felt more comfortable going to office hours because they were going to be in person. So a required course for third year computer science is CPSC 320. This is an advanced data structure and algorithms course.
It covers algorithms like dynamic programming and greedy algorithms. This is a very challenging course, honestly. There are some very demanding assignments. I think I had five or six assignments that you get to do with a couple of partners, but they're very similar to the CPSC 121. Assignments where you write them in latex, you gotta go to office hours a lot, the questions are pretty hard and there's nothing really online that you can find about it. Even though you do get to work with a partner, I would really recommend trying to understand these questions very well because many times for the exams, for the midterms, for the finals, they do pull question examples from these assignments.
So it's a really good idea to have a good understanding of how to solve these problems. Even though this is an advanced algorithms course, you aren't writing any code. Most of the stuff is pseudocode and during the exams, you will have to write pseudocode.
CPSC 313. This course covers pipelining, caching, virtual memory management, and disks. This course has assignments in assembly code or C. These assignments are weekly or bi-weekly? I'm pretty sure they're weekly.
There are also weekly quizzes which are open book, the final and the midterms were also open book, which doesn't mean that it's going to be easy. It means that you need to understand these concepts very well. In your upper years, you actually get to take computer science electives and these are the elective computer science courses that I took.
CPSC 304, relational databases. I honestly believe that this should be a required course. You learn about relational algebra, SQL, database systems.
It's a very useful course. The exams are very fair and from the beginning they tell you that this course is not going to be very demanding as some other CBSC courses. There is a project but you get to do with partners and it's very manageable.
You can fit it into your schedule to get it done. The project that you get to work on is querying a database that you designed and displaying this information in some sort of front end. The next computer science course that I took was 317. internet computing. In theory, this is actually a very useful and interesting course. You get to learn about all the network layers and you get to build applications that use DNS, SMTP protocols, which are actually quite fun and interesting.
However, when I took this course, I kind of felt like they skimmed through a lot of these topics without going in depth about it. So I left feeling like I took this entire course, but I don't have a very good understanding of each individual topic. I also felt like how they ran this course was a little bit disorganized. The structure of this course is most similar to CPSC 313. Like you use PrairieLearn, you do all your exams on PrairieLearn, you do everything on PrairieLearn.
I also took CPSC 314, which is computer graphics. This is a very fun course if you're interested in video games or graphics. You need a very basic understanding of linear algebra.
It's very simple and also they kind of go over it. in the beginning of the course. These were probably one of some of the most fun assignments that I got to do where I got to build 3D models using 3JS.
The professor is so so nice. They are one of the nicest professors that I've ever had. The exams that he gives you are very fair. He gives you plenty of exam practice before so you know exactly what you're going to expect.
And at the end there's some guest lecturers. You get to learn about them, learn about their careers, and more about computer graphics. The last computer science course that I took in my third year was CPSC 404. This is the next level to CPSC 304, the relational database class. The exams are very fair, but I found that the slides and lectures were sometimes hard to follow. I really think that this is one of the easier 400 level computer science courses.
Now on to the electives completely not related. to computer science. I took forestry 303. If you ever go on to reddit and see the electives that other people take, the easier ones, this is one of the more popular ones that people take. This class is a great GPA booster.
The questions for the midterms and the finals are given to you before the exams. I'll just leave the grade distribution. from UBC grades for this course right here.
The last course that I took is FNH 330, Introduction to Wine Sciences. This is a wine class where you get to go to weekly wine labs, where you get to try two to three wines a week. You cover a lot of information about wine, like how grapes are grown, how wine is made, where wine is produced. It's honestly a little too much information, and one of the only things that I remember... is that red wines is red grapes with skin.
White wine is just grapes without skin. It was honestly a really fun course that I got to do with my friends. I really recommend taking it if you have an extra spot for an elective.
In my last year at UBC, these are the courses that I'm planning on taking. For my computer science courses, I'm planning on taking CPSC 410, which is an advanced software engineering course. I believe you get to make an app.
and you have to publish it on the App Store or Google Play Store, which is kind of fun. I'm thinking of taking CPSC 330, Applied Machine Learning. CPSC 430, Computers and Society.
CPSC 416, Distributed Systems. CPSC 344, Introduction to Human-Computer Interaction Methods. I think that's more of a UI, UX course.
The electives that I'm thinking of taking are... Econ 311, Introduction or Principles of Macroeconomics. Commerce 457, which Fundamentals of Financial Accounting, which I hear from Reddit is just a useful course for you to take.
Like you should just take it to have some financial literacy. APBI, I'm not sure what that is. Animals and Science.
APBI 314, Animals and Society. Honestly, When I was looking to register for courses this year, I looked very last minute and the day before I registered or and the day I was planning on doing research and making my work list, Reddit was down. I think the UBC Reddit page deleted their account for a bit. I was at a loss like I didn't know which courses to take so I had to ask my friend and they had to send me their like electives list so I kind of chose based off of that. Another course that I put on my list was FNH 355 International Nutrition.
I don't know. This fourth year is going to be fun. I will update you how all these courses go. I'm actually very excited about my final year courses. I think a lot of them are fun and I'm excited to do advanced software engineering.
I think it'd be kind of interesting to make an app. I've never made a mobile application. All right, that was all the courses that I've taken throughout my computer science degree and also the courses that I'm planning to take. in my fourth year let me know if you've already done your course selections if you haven't good luck i hope you get into all your courses if not i hope you get off the waitlist since the courses that you want to be in let me know in the comments below what your favorite course that you've ever taken in your degree is and like this video and subscribe i'll see you in the next one