Hi Vincent, how are you? Hope everything is going very well with your co-op! I am again looking at your posts for preparation for courses next term, because they are really helpful! So I am taking 213, 221 and 310 next term. Do you think there are anything that I can prepare in advance to make the learning a bit easier during the term (perhaps something similar to learning basics of Java for 210)? I am a bit concerned about C/C++, because I have no idea about it. Does it help to learn it a bit during the break? Thank you!
Hi Frank! It’s been a while since I’ve updated my blog (oops), and in fact I’ve wrapped up my first co-op job at the end of summer. I’ll make a note to myself to do a write up on CPSC 304, 310, and 311, all of which I took this term.
Of the courses that you mention, I wouldn’t worry about 310 (assuming that you did ok with 210); you’ll essentially be learning about some more design patterns, and a bunch of other disconnected-but-still-relevant topics like software process/methodology and test coverage, i.e. concepts that are fairly easy to grasp and understand (this term’s lecture notes are at http://www.ugrad.cs.ubc.ca/~cs310/lectures.html if you’re interested in taking a look). The relatively “difficult” part about 310 is the term-long project, a web application which you will be building from scratch in a group of 3-5; I call it difficult in the sense that it was quite time-consuming, and the end-of-term crunch for me (dealing with term projects for 304+310+311) was hectic and not very pleasant.
As for 213 and 221, I suppose you could say that they’re similar to 210 in the sense that you’ll be learning a new language, but only for the purpose of applying the concepts you learn in lecture (i.e. in 210 you learn Java to facilitate learning about software design, not for the purpose of learning Java itself). So if you have some spare time over the holidays, feel free to learn a bit of C++ (none of the esoteric stuff; just knowing some basic syntax + use of pointers will carry you through 221); you’ll pick up everything you need to learn during labs. For 213, the first month of lecture/labs will be done with SM213 assembly anyways.
Thank you again for your fast reply, Vincent! Great to know you are back to campus. I am sure you must have had a great and fruitful co-op experience, and will be excited to hear about it if you are also about to write something about that 🙂
Thanks for the comments on these courses. I will follow your advice and try to get familiar with C++ before the term starts. I heard about the 310 project. It sounds pretty exciting to me, because I really enjoyed the 210 one (we were asked to do a new project this term, an android app to plot other users on map, identify and plot a Translink bus route to them, with an optional communication component (receiving/sending messages and polls) etc). But, yeah, I am also a little concerned about the time commitment. A CS professor has warned me not to take too many CS courses concurrently in a term, especially those with projects because the workload will all skew to the end of the term. But I think I am probably fine for the next term, because my two other CS courses (213, 221) do not have project components (am I correct?). But what is your experience? I was told that a maximum of 3 CS courses is a norm, and rarely people take 4. I need to keep a full course-load (5 courses), so I am thinking if I need to spread the courses a bit next year and fill my schedule with courses from other departments.
I hope I didn’t give this impression in my last reply, but definitely don’t feel compelled to spend your winter break learning about C++ if you’ve got other things to do; you’ll pick up on all the C++ you need for the course in the first few labs, at which point everyone is going to be on an even footing (so go out and enjoy your break! 😛 ).
As for workload considerations, well, I know of a friend who’s done 4 CS courses last term, and he’s still alive to tell the tale. Whether or not taking multiple project-heavy CS courses at the same time is a good idea depends a lot on your work ethics, but it’s certainly doable (i.e. if you can keep up with course material and set aside time to work on projects at a regular pace, you should be fine). However, given my experience this term (and the fact that I sometimes procrastinate a lot), I don’t think I’ll attempt more than 3 project-heavy courses in a single term (I’d choose to take 1 or 2 electives on top of that).
213 and 221 don’t have projects with the same scope and workload as say, 304 or 310, but both have lab components and 221 has programming assignments (3 in my term; I put links to the actual assignments (during my term) in my 221 review blog post that you can look at if you want to get an overall idea of how much work a 221 assignment entails).
What level of Java proficiency do you think we need going into 213? I am one of the rare cases where I am taking 210 and 213 concurrently this term (so I just started learning Java), and I’m concerned if my lack of Java knowledge will affect my ability to follow along in 213. Any advice would help! Thanks!
You don’t need to be proficient in Java at all to do well in 213. As I recall, only the first lab requires you to write code in Java (to implement part of the simulator you’ll be using to run sm213 assembly); other than that, you’ll only see snippets of Java from time to time during lectures, often with some equivalent code in C at the same time to explain/demonstrate certain concepts or whatnot.
Hi Vincent. How are you? I’ve got some more questions :). So I am now in 213 and 221. I am still a bit lost, but I guess I will catch up soon. One thing I am wondering is whether it is helpful/necessary to install a Linux/Unix system on my own laptop, for the purpose of 213/221, or for some 300-level courses I will take next year. I really have no idea about Linux/Unix systems at all. The last time I attempted to install ubuntu, I accidentally formatted an entire hard-drive disk :(, and was never brave enough to start learning Linux since then. My second question is about working on 221 assignment using my own laptop. The course webpage recommends working with remote connection to the CS servers. But I have found the speed is quite limited by the internet connection (not bad in CS building, but pretty slow at home). How big a difference it makes if I work on my own laptop environment? I do plan to test my work on CS computers before handing it in (or I can simply test this by working on my computer and connect to CS servers remotely, right?) Thanks! Frank
Hi Frank! I’m doing good, thanks; hope you’re off to a good start this term. Don’t worry too much if you feel lost in the first week or so…I happen to feel the same for 313 right now too.
Since I’m a Debian Linux user and package maintainer, and I’m fond of FOSS (free open source software), you’re likely going to get a biased response from me if you ask me whether or not you should be using Linux (i.e. yes). 😉 While I would strongly encourage you to familiarize yourself with Linux (if nothing else, it can only help your future career prospects), for the purpose of 213 and 221, no, it’s not necessary to learn Linux, but you should be able to operate in a command-line environment. As long as you can navigate your way through a terminal (i.e. understand how to change your current directory, and move/copy files around, stuff like that), and be able to use basic dev tools like a compiler (gcc/g++), a debugger (gdb), and “handin”, you’ll be fine for 213/221.
Feel free to work from your own laptop; that’s what I do as well (albeit on my Linux laptop), and I’d wager that most other CPSC students work from their own laptops too. The 221 assignments/labs are nowhere near complex enough that you have to worry about explicitly writing portable / cross-platform C++ code. It’s fine to just work on your own laptop with your own preferred editor/IDE in the OS of your choice, and once you’re done, remotely transfer (sftp) your source code to the department Linux servers and compile/run/test it remotely.
Hi Vincent! How are you? Thank you for your sincere reply for all these questions and I just transfer to ubc and wanna major in computer science combined with statistics. I plan to take CPSC 121 and 213 concurrently during the second summer term and what advice would you give me? Thank you!
Hi Weining, and welcome to UBC! I’ve never taken any CPSC courses during summer session (aside from 189, but that doesn’t really count since it’s only a short 1 cr course), so I don’t have any specific advice for your situation, but it’s important to make sure you keep up with course material; you don’t want to fall behind, and never leave stuff until the last minute if you can help it (neither 121/213 have term-long projects, but they do have weekly assignments/labs). I know, that’s pretty generic advice, but you’ll do fine as long as you can resist the urge to slack off during the summer. 😉
Hi Vincent, how are you? Hope everything is going very well with your co-op! I am again looking at your posts for preparation for courses next term, because they are really helpful! So I am taking 213, 221 and 310 next term. Do you think there are anything that I can prepare in advance to make the learning a bit easier during the term (perhaps something similar to learning basics of Java for 210)? I am a bit concerned about C/C++, because I have no idea about it. Does it help to learn it a bit during the break? Thank you!
Hi Frank! It’s been a while since I’ve updated my blog (oops), and in fact I’ve wrapped up my first co-op job at the end of summer. I’ll make a note to myself to do a write up on CPSC 304, 310, and 311, all of which I took this term.
Of the courses that you mention, I wouldn’t worry about 310 (assuming that you did ok with 210); you’ll essentially be learning about some more design patterns, and a bunch of other disconnected-but-still-relevant topics like software process/methodology and test coverage, i.e. concepts that are fairly easy to grasp and understand (this term’s lecture notes are at http://www.ugrad.cs.ubc.ca/~cs310/lectures.html if you’re interested in taking a look). The relatively “difficult” part about 310 is the term-long project, a web application which you will be building from scratch in a group of 3-5; I call it difficult in the sense that it was quite time-consuming, and the end-of-term crunch for me (dealing with term projects for 304+310+311) was hectic and not very pleasant.
As for 213 and 221, I suppose you could say that they’re similar to 210 in the sense that you’ll be learning a new language, but only for the purpose of applying the concepts you learn in lecture (i.e. in 210 you learn Java to facilitate learning about software design, not for the purpose of learning Java itself). So if you have some spare time over the holidays, feel free to learn a bit of C++ (none of the esoteric stuff; just knowing some basic syntax + use of pointers will carry you through 221); you’ll pick up everything you need to learn during labs. For 213, the first month of lecture/labs will be done with SM213 assembly anyways.
Thank you again for your fast reply, Vincent! Great to know you are back to campus. I am sure you must have had a great and fruitful co-op experience, and will be excited to hear about it if you are also about to write something about that 🙂
Thanks for the comments on these courses. I will follow your advice and try to get familiar with C++ before the term starts. I heard about the 310 project. It sounds pretty exciting to me, because I really enjoyed the 210 one (we were asked to do a new project this term, an android app to plot other users on map, identify and plot a Translink bus route to them, with an optional communication component (receiving/sending messages and polls) etc). But, yeah, I am also a little concerned about the time commitment. A CS professor has warned me not to take too many CS courses concurrently in a term, especially those with projects because the workload will all skew to the end of the term. But I think I am probably fine for the next term, because my two other CS courses (213, 221) do not have project components (am I correct?). But what is your experience? I was told that a maximum of 3 CS courses is a norm, and rarely people take 4. I need to keep a full course-load (5 courses), so I am thinking if I need to spread the courses a bit next year and fill my schedule with courses from other departments.
(Sorry for the not-so-fast reply this time!)
I hope I didn’t give this impression in my last reply, but definitely don’t feel compelled to spend your winter break learning about C++ if you’ve got other things to do; you’ll pick up on all the C++ you need for the course in the first few labs, at which point everyone is going to be on an even footing (so go out and enjoy your break! 😛 ).
As for workload considerations, well, I know of a friend who’s done 4 CS courses last term, and he’s still alive to tell the tale. Whether or not taking multiple project-heavy CS courses at the same time is a good idea depends a lot on your work ethics, but it’s certainly doable (i.e. if you can keep up with course material and set aside time to work on projects at a regular pace, you should be fine). However, given my experience this term (and the fact that I sometimes procrastinate a lot), I don’t think I’ll attempt more than 3 project-heavy courses in a single term (I’d choose to take 1 or 2 electives on top of that).
213 and 221 don’t have projects with the same scope and workload as say, 304 or 310, but both have lab components and 221 has programming assignments (3 in my term; I put links to the actual assignments (during my term) in my 221 review blog post that you can look at if you want to get an overall idea of how much work a 221 assignment entails).
Thanks again for your reply and the information, Vincent! Wish you a wonderful holiday and a happy new year!
Merry christmas/happy holidays, and happy new year! 🙂
What level of Java proficiency do you think we need going into 213? I am one of the rare cases where I am taking 210 and 213 concurrently this term (so I just started learning Java), and I’m concerned if my lack of Java knowledge will affect my ability to follow along in 213. Any advice would help! Thanks!
You don’t need to be proficient in Java at all to do well in 213. As I recall, only the first lab requires you to write code in Java (to implement part of the simulator you’ll be using to run sm213 assembly); other than that, you’ll only see snippets of Java from time to time during lectures, often with some equivalent code in C at the same time to explain/demonstrate certain concepts or whatnot.
Great! Thank you.
Hi Vincent. How are you? I’ve got some more questions :). So I am now in 213 and 221. I am still a bit lost, but I guess I will catch up soon. One thing I am wondering is whether it is helpful/necessary to install a Linux/Unix system on my own laptop, for the purpose of 213/221, or for some 300-level courses I will take next year. I really have no idea about Linux/Unix systems at all. The last time I attempted to install ubuntu, I accidentally formatted an entire hard-drive disk :(, and was never brave enough to start learning Linux since then. My second question is about working on 221 assignment using my own laptop. The course webpage recommends working with remote connection to the CS servers. But I have found the speed is quite limited by the internet connection (not bad in CS building, but pretty slow at home). How big a difference it makes if I work on my own laptop environment? I do plan to test my work on CS computers before handing it in (or I can simply test this by working on my computer and connect to CS servers remotely, right?) Thanks! Frank
Hi Frank! I’m doing good, thanks; hope you’re off to a good start this term. Don’t worry too much if you feel lost in the first week or so…I happen to feel the same for 313 right now too.
Since I’m a Debian Linux user and package maintainer, and I’m fond of FOSS (free open source software), you’re likely going to get a biased response from me if you ask me whether or not you should be using Linux (i.e. yes). 😉 While I would strongly encourage you to familiarize yourself with Linux (if nothing else, it can only help your future career prospects), for the purpose of 213 and 221, no, it’s not necessary to learn Linux, but you should be able to operate in a command-line environment. As long as you can navigate your way through a terminal (i.e. understand how to change your current directory, and move/copy files around, stuff like that), and be able to use basic dev tools like a compiler (gcc/g++), a debugger (gdb), and “handin”, you’ll be fine for 213/221.
Feel free to work from your own laptop; that’s what I do as well (albeit on my Linux laptop), and I’d wager that most other CPSC students work from their own laptops too. The 221 assignments/labs are nowhere near complex enough that you have to worry about explicitly writing portable / cross-platform C++ code. It’s fine to just work on your own laptop with your own preferred editor/IDE in the OS of your choice, and once you’re done, remotely transfer (sftp) your source code to the department Linux servers and compile/run/test it remotely.
Hi Vincent! Thank you again for your great answer, which is super helpful as it has always been. Good luck with your courses this term too! Frank
Hi Vincent! How are you? Thank you for your sincere reply for all these questions and I just transfer to ubc and wanna major in computer science combined with statistics. I plan to take CPSC 121 and 213 concurrently during the second summer term and what advice would you give me? Thank you!
Hi Weining, and welcome to UBC! I’ve never taken any CPSC courses during summer session (aside from 189, but that doesn’t really count since it’s only a short 1 cr course), so I don’t have any specific advice for your situation, but it’s important to make sure you keep up with course material; you don’t want to fall behind, and never leave stuff until the last minute if you can help it (neither 121/213 have term-long projects, but they do have weekly assignments/labs). I know, that’s pretty generic advice, but you’ll do fine as long as you can resist the urge to slack off during the summer. 😉