layout | title | permalink |
---|---|---|
page |
First Year's Guide to CS |
/firstyearcs/ |
By: Anujan M, Clara S, and the CSSU Team
First and foremost, on behalf of the Computer Science Student Union (CSSU), we would like to congratulate students who have received an offer of admission to Computer Science at the University of Toronto St. George campus. (If not, well, we hope you are considering it – or we hope that you get an acceptance!). We're happy to have you!
This is a collection of Frequently Asked Question (FAQs) which we think all first-year undergraduates (and everyone in the program, in general) should know.
University can be daunting, especially in your first-year. We hope this guide gives you some information and tips on how to make sure that you are successful on your first-year here (and we hope this guide makes you laugh along the way). If there is anything you want to add or edit on this guide, please send the CSSU a quick email.
- What is the CSSU? (Ice Cream Sandwiches and Video Games)
- Common Terms that you should know (or Uni is just full of acronyms that change all the time)
- Course Enrollment (or how to make a schedule that doesn't overburden you)
- Course Tips (or how to actually succeed in those courses and GET HELP)
- Program Admission (Formerly Subject POSt) (AKA most speculative/invisible monster to terrorize students in all of Canada or even the world)
- Mental health (Really important to read and understand, it's real and we need to talk about it)
- How to get involved? (or how to get a balance in your life, have fun and make friends)
- Jobs/Internships/PEY (or how and when to get some real-world experience)
- Links to Know (KEEP THESE HANDY)
- Finances (Why CS costs more and how to reduce these costs)
- Parting Words
So since this guide is made in coordination with the CSSU, we would like to introduce you to them. The Computer Science Student Union (or CSSU in short) represents all Computer Science students who are either taking a Computer Science course, or are a part of the Computer Science program (Minor/Major/Specialist) at the U of T St. George campus. They offer a variety of services, and sell drinks and snacks (and ice cream sandwiches!) out of their office in BA2250 (Bahen Centre for Information Technology, 40 St. George Street, 2nd floor).
CSSU also hosts a variety of events, including Games Night, where students have the opportunity to socialize with each other over games of all kinds, all night long. They also have lots of video games and consoles in the office, from the Gamecube (for Smash Bros.) to the Switch (Super Smash Bros Ultimate) and an Xbox One and Playstation 3 for you to play with your friends, or make new ones. Feel free to drop by, say hello, and introduce yourself!
They also support CS Frosh, which happens at the beginning of the year for students to get to know each other and to be introduced to some great info. Stay tuned for more details later this summer!!
ACORN
ACORN is your one stop shop for all the official things you need to do. From enrolling in courses and accessing your final grades to finding your tuition bills, ACORN is your go to site.
ProTip: You can plan your courses on ACORN and save them to your "cart", from which you can quickly enrol when it's time to enrol in courses.
QUERCUS (A.K.A. Portal, or the most unpronounceable name on campus)
QUERCUS is the new system which most courses use to provide lecture slides, important dates, and course updates (previously, it was Blackboard). You can also submit your assignments, and sometimes access your term marks through this system. CS courses tend to use their own sites, but most other courses are adamant on using it (though some courses use other tools as well, so you should make sure to check the syllabus of each one of your courses to see what they are using). If you've used D2L or Blackboard, then you'll find that QUERCUS is a bit familiar.
MarkUs
MarkUs is where you'll be submitting your work and getting feedback and marks for most (if not all) CS courses. Make sure that you can login to the site (it uses your teaching labs password which may/may not be the same as your U of T password) as soon as it’s available in order to avoid hassles which will undoubtedly arise if you can't login on the day your assignments are due.
ProTip: Always submit assignments early, since the system tends to get overloaded and is known to get extremely slow or even crash during the last few minutes before the deadline. It’s your personal responsibility to submit early, and you should keep in mind that multiple submissions are allowed for most courses. This means only your final submission will be graded, even if you submit various drafts of your work prior to the deadline. This allows you to edit and submit your work as many times as you see fit until the deadline.
Piazza
Piazza is what many courses use as a course forum, where people can post questions and get answers from classmates and even professors/TAs. Some courses, however, don’t use Piazza and instead use Discourse or the Quercus discussion boards. These are good resources for finding answers to frequently sought out clarifications.
ProTip: Remember to search your question before posting it on Piazza, because it is very likely that one of your classmates will have already asked that question earlier.
Teaching Labs
The teaching labs refer to not only the actual labs in Bahen, but also to the whole online system through which you are interacting with the department (MarkUs, SSH (Remote Lab Connections), PCRS). At the beginning of the year, you'll get an email asking you to set up your Teaching Labs account. It is very important that you:
- don't lose the email
- don't forget the password you set it with. This is the most used login you'll need at U of T (after your UTORid login for ACORN). Also know that as a CS student you get access to the labs (and Bahen) 24/7 with your T-Card. For more information about the labs visit their site
Help Centre
As one of the best places for you to get official help in first and second year courses, the CS Help Center which is located in Bahen has TAs and professors ready to help you when you have questions. For a full schedule of when it’s open and who's there, visit [this link] (http://web.cs.toronto.edu/program/ugrad/ug_helpcentre.htm). For upper year courses, you should be able to get the help directly from the course-specific instructors/teaching assistants (TAs), rather than general Help Centre TAs. Getting help is really important, and you should make full use of these hours.
Undergraduate Office aka “UGO”
For all your official program questions and concerns, make your way up to the 4th floor of Bahen to visit the undergrad office for CS. You can ask them questions ranging from program admission to financial situations, or anything to do with the CS program at all, and they will be willing to help you out. If you need any CS advice, the office is a great place to get the official answers to all/most of your questions.
So the first rule of CS is to be lazy (when coding) and to avoid remaking the wheel (or the print statement). Since the Faculty of Arts & Science has already videotaped, asked, and subtitled videos on how course enrollment works and on great tips for University, we are just going to link them here. These star some of the best CS students we’ve ever had the pleasure of knowing, and their advice is actually really great. Stars Former CSSU General Council Member, TA, and Frosh Organizer Lana; Current CSSU Vice President, UofT Hacks President, and TA Calvin; and 2017 Canadian Undergraduate Computer Science Conference co-chair and TA Felipe.
Click on the title to watch the video on Youtube (It does have subtitles so yay)
Preparing for course enrollment and what you should know
Avoiding Burnout (and how to move on from failure) with Felipe
Getting to explore different fields and how that's important with Calvin
UofT time and how you can have two classes back to back without the need for teleportation with Lana
For more important videos with more tips and information about university and course enrollment check out the ArtSci Youtube channel here
So many students ask whether they can skip CSC108 and just do CSC148. The answer is really dependent on you and your abilities, and you won’t be favored for admission to the program if you take CSC148 during first semester instead of second semester.
- If you’re new to programming, you should take CSC108 since it’s for beginners, and will give you the required preparation for CSC148.
- If you’re experienced with programming, you might want to talk with someone at the Undergraduate Office to see if you will benefit from skipping CSC108. If you do end up directly progressing to CSC148, there are ramp-up sessions held during the beginning of the semester to help you brush up on the contents of 108.
Alternatively, you could also take a look at a past final from 108, or look at the ramp up slides online to get an overview of CSC108. If you feel like you don’t understand it completely, you might want to take CSC108. (Think about the best thing for you as a student – it’s about learning the material to the best of your abilities, not about ‘saving’ a half credit). Both courses are in Python, so even if you’re familiar in Java, you might want to take CSC108 just to get familiar with Python. Consider your options well.
Note that even if you take CSC148 and then decide that you're not ready for it after taking a few classes, you can drop down to CSC108 if spaces are still available in that course.
If you do decide to take CSC108, note that there are three different versions of the course offered to you (mastery, online, and in-class). Try and find the one that best suits your experience and your comfort level. Click here for more details on 108’s options. Also look on the department’s page for more info on how to choose your first-year CS courses.
So yes, you’re thinking – this is a CS guide! Why is it talking about math courses? Well, Mathematics and Computer Science go hand-in-hand (in particular, CSC165 and all the theory courses have a very mathematical approach). We are very much like our math counterparts on the theoretical side. This is the reason why you will have to pick a calculus course in your first-year, and your options are highly varied.
The courses offered are MAT135/136, MAT137, and MAT157. Either of these will satisfy the program requirements, but 137 and 157 are more theoretically heavy, and great proof preparatory materials. If you are considering a math specialist, you should take MAT157 since the math specialist only accepts MAT157. Otherwise MAT137 will also prepare you for the level of proof material in CSC165 (and improve your chances to do there) compared to MAT135/136 which do not cover proofs. MAT137 is also the calculus course which is recommended by the CS department. MAT135/136 are more computationally heavy courses which do not help you with proof practice, but they fulfill the program requirements nonetheless.
If you want to take CSC165 in first semester, you must take either 137 or 157 along with it. However, if you are taking it in the second semester, you have the option to take 135/136 as well. 135/136 are two half courses, while 137 and 157 are full-year courses. Do your due diligence and remember that if you take a more advanced course, you can normally try it out and drop down to the comparatively less dense math courses in the first 2 weeks (or more) with no penalty (the same doesn’t apply going up in difficulty). If you have any concerns, contact the math department. They have also provided some good prep work for calc here.
There's no real definitive answer to this question. Many people prefer writing with pen and paper, and it does benefit you in math and theory courses, where there are lots of complex formulas and mathematical notations to jot down (you probably wouldn’t want to type them out). Lots of people swear by the fact that writing by hand is better, though some people also like typing everything out instead. For programming courses, coding along with the professor is sometimes a great idea to see the lessons in action, though those courses normally have slides which you can read afterwards to catch up as well. Whichever style fits you is the one you should adopt.
This is also a question with no definitive answer. Technically, you don’t need one, since you have 24-hour access to the Bahen labs, and can write all of your assignments there. However, it's recommended that you should get a laptop, since you probably don’t want be stuck in the labs all the time. You don’t need the most advanced system in the market, and you should get something that fits your needs and budget.
So you’ve gotten into the courses you like, and you’ve planned out your timetable well. Now, you need to succeed in them! How do you learn the content well, and get a decent grade? Here are some best resources to help you succeed.
-
Attend Lectures
Lectures are the main way you are taught the course content, and you shouldn’t be afraid to ask questions during lecture or even before or after the lectures if you don’t understand something. If there are multiple lecturers teaching the same course, try to attend 1 lecture of each lecturer, to see whose style resonates with you best (and fits your schedule). However, you should read the syllabus carefully to see if the course is designed in such a way that auditing different lecture sections doesn’t negatively impact your grade (some courses have lecture section specific midterms, or participation marks which you can only earn in your own lecture section).
-
Attend Tutorials
As former TAs, we truly believe that tutorials are the best way to check if you know what you’re doing. During tutorials, you can get lots of practice, ask questions, and get instant feedback from your TA and your peers in a smaller group setting. You should take advantage of your TA, whether in CSC148 or CSC165. They are paid to help and support you do your best. They also give great advice (cough cough).
-
Office Hours
While Office Hours may sound daunting, they are not. Most (if not all) professors love it when students come to office hours with good questions and concerns. Also, if they’re not too busy, you can ask them questions about their research or general CS questions – they are some of the most experienced in the field, and this is a great way to build up a great prof/student relationship which can help you later on (references for grad school, for example).
-
The Help Centre
As mentioned above, the help centre is a great place to ask TAs and profs questions that you may have about the course content and assignments. Keep it in mind that it can get very crowded near a deadline (procrastination at its finest). However, it's still a great way to get help (also, Piazza is an excellent resource if you need any questions answered).
-
Assignments
When it comes to assignments, don’t start the day before – this doesn’t only make you extremely stressed, but also gives you no time to ask questions about the assignments if you get stuck. Start early, make a list of questions to ask, and go to office hours to get those questions cleared up. Also, don’t copy off of other students – plagiarism is bad, like – it's serious business. The department has very high-tech tools to catch you, and they will. It's never worth it. If something comes up and you need help, talk to your prof and they will try their best to help you.
Also, make sure that your code runs on the lab computers (this may sound crazy, but people have submitted assignments that error out because of the following two things):
- They didn’t submit the right file or it had an error, or
- Their computer inputted a random non ASCII character and the lab couldn't parse that file, resulting in a 0 because it didn’t run.
- The Teach CS machines are Linux. If you write your code on a Mac or Windows machine, or even a Linux machine with a different configuration your code may depend on libraries or encoding that do not match the teach.cs machines and will not run.
So, how do you prevent this? It’s simple – submit early, download your code off of MarkUs to a lab computer, and run it! If it runs in the lab, it will run while grading. Even if it runs on your computer fine, that is not a valid reason for it to run properly while grading – IT MUST WORK ON THE LAB COMPUTERS AS WELL. Also, check your language settings on your computer – non-english characters have been known to mess-up the file, rendering it unrunnable on the lab computers (its weird, we know, but you should opt to be safe, rather than sorry).
Another important thing to keep in mind is the ethics of copyright and code sharing. Most students think that after they have completed their assignments, they can post it on their Githubs and add it to their portfolios. The reason why this might not be such a good idea is because these assignments have a lot of starter code prepared by your professors, and sometimes profs like to reuse these assignments. You should always ask for the permission of your professors before posting your assignments on public platforms like Github. Otherwise, you could be held accountable for plagarism even if you didn't commit it yourself - as a student taking the same course in later years might find your assignment and copy it.
Ok, now for the big CS elephant in the room – admission to the program, which is declaring your Minor, Major or Specialist in Computer Science in second-year.
Here at St. George, the Faculty of Arts & Science has this policy in which it encourages the exploration of different fields, and makes it easy for students to switch majors and subjects after their first-year. This is the reason why you can’t choose your Majors/Minors until the end of first-year. The issue with Computer Science admission is that there are not enough resources/spaces to give every student who wants to choose CS after their first-year a spot, so the department has to institute a certain cut-off average as a requirement for students to get into the program.
The requirements as quoted from the ArtSci Calendar are:
-
Completion of at least 4.0 FCEs including CSC148H1 (with a minimum grade of 70%) and CSC165H1/ CSC240H1 (with a minimum grade of 70%); AND
-
An average of the grades in CSC148H1 and CSC165H1/ CSC240H1 that meets the department's annual cutoff. CSC240H1 grades will be adjusted to account for the course's greater difficulty.
-
Note that the cutoff changes from year to year, depending on the current capacity of the program and the pool of applicants.
So after reading this, most students panic and ask: “What's the cutoff?” Well, we wish we could give you an answer, and we wish that the department could give an answer, but it’s not that easy.
- The cutoff is not an arbitrary number, say 60 or 75, like some other programs. In reality, the cutoff for CS is the top x number of student averages from 148 and 165 that have applied to the CS program, where x is the number of spots in the program for that year.
- The specialist/major cutoff for 2018 was 83 for in stream students and 86 for out of stream students. For the CS minor, the cutoff was 80 for both in stream and out of stream students. This may go up or down in the upcoming years depending on future circumstances.
- This is high. Is it impossible, no. So is it doable? Yes, but only if you put a lot of work and effort into the required courses.
- The number of program spaces has remained relatively constant over the last two years, and there are always more program spaces available than the number of students in the first-year computer science admission stream. So it is technically possible for everyone to get admitted, if they do well enough.
- There is no reason to be scared, as the instructors are not there to weed students out. They are there instead, to make sure that you are prepared, and that you understand the content well.
- These two courses (CSC148 and CSC165) are an important base. If you don't find their content to be conceptually appealing, it’s possible that you might not enjoy your upper-year CS courses at U of T as well.
- Always keep your options open. As mentioned in course enrolment section, take some breadth courses, and maybe you'll enjoy them and will want to pursue them further. The great thing about U of T is that it has a plethora of awesome programs which you can choose from.
For more info visit the CS Department Admissions Page
Mental health is extremely important, and taking care of yourself should be your first priority. A lot of students find program admission to be extremely stressful, and university in general is a giant leap from high school. Taking a reduced course load, or dropping down from hard courses to easier exclusions isn't something to be ashamed of, and you should definitely do it if you feel like it will benefit your mental health. On the same note, Accessibility Services is something you should check out if you are having any mental/physical health related problems which are getting in the way of your studies. It provides amazing support to those who are registered within it. You can get exam accommodations, extensions on assignments, and peer note takers (amongst many other things), and you will also get your own advisor whom you can go to if you are having problems coping with various aspects of University. They will direct you to many resources, and will help you out the best they can. You can check out their website here. Also, the Health and Wellness Center has medical and mental health services to help students academically and personally if you need them. Make sure to make the most of the services which you have access to.
Another thing which we want to mention is that collaboration and teamwork can help a lot when it comes to dealing with the pressure of assignments and midterms. Yes, acceptance into the Computer Science program is competitive, but helping each other out and learning from each other goes a long way. Make friends!!! Everyone is scared, stressed out, and just wants to do well. Help each other out, and be kind to one another. Please don’t expect to go solo on all your classes – you are surrounded by some of the brightest students in your year, take advantage of that! University is a lot less stressful if you have like-minded friends to help you along the way.
Having a school/life balance is especially important when you’re in university. While there may be an immense pressure from academics, you should make sure you give time to yourself as well. You can check out this huge list of clubs and student groups which you can join check this link, or visit the clubs fair during the first week of classes. For more CS related clubs, do check our list of CS clubs here.
You might also want to consider joining a FLC (First Year Learning Community). Basically, you get a group of other students who are taking the same Computer Science courses as you, and you get an upper-year mentor and a designated professor who will help guide you though your courses, uni, and life in general. It helps you make some friends, be in the know, and get some real mentorship. Check out more info here.
Also, do take a look at applying to be a First-year Representative here at the CSSU. You will be responsible for presenting your interests and issues to the CSSU, and for spreading information and updates to your classmates. Alternatively, you can also be a General Council member – check out the main page for more details on how to apply!
There are also lots of events which you can attend and participate in – follow us on Facebook and Instagram to get updates on all the events which the CSSU runs!
There are a lot of hackathons which you can join (for those of you who don’t know what a hackathon is, it’s basically a 1-3 day event where you and your team get together to build something, like an app which solves a real-world problem, or just something which you think is really cool in general - and you can win prizes for it and get free food!!!) Its free about 95% of the time, and you get the opportunity to meet lots of company reps. UofTHacks is our premier hackathon, so be on the lookout for more details later this year. Also, check out MLH for a full list of hackathons both in Canada and around the world (A lot of the US ones are popular as well, if you’re comfortable with going to the United States for a weekend). Remember, you don’t have to be experienced to go attend a hackathon - there are lots of workshops offered throughout these events, and you can always just go for the experience, which we can confirm is awesome.
So yes, everyone wants to get some experience in “the real world” and make money – uni is expensive, and living in Toronto is expensive. So, a job which actually relates to your studies checks off all those boxes. There is a wide range of job opportunities which you can consider. As a first-year student, you should definitely look at some of the major company internships that are dedicated to first- and second-year students: Google’s Engineering Practicum and Microsoft Explore are two of the bigger programs. Also, startups are a great way to get into the door and get some experience (though do your due diligence, because unpaid internships are very uncommon in CS, so make sure you know what you’re getting into before committing). For good interview questions prep, read “Cracking the Coding Interview” (CTCI), as it’s very informative and has lots of great problems in it.
If industry is not your cup of tea, then there are a lot of research opportunities for students if you are persistent enough to pursue them. After your first year, there are second-year research programs run by the Faculty of Arts and Science click for more details where you can get real research experience and a course credit, either in the summer after first year, or during your second-year. There are also a lot of open source projects which you can contribute to, both at U of T (PyTA, MarkUs…) and outside of university (Google’s Summer of Code is a great place to find open source projects, and Google pays students during the summer for working with them).
The Professional Experience Year Co-op Program, administered by the Engineering Career Centre, is another option which you can consider after your second-year, or after your third-year of studies. It's basically a 12-16 month paid position where you work at a company (you do have to apply and interview for a position, one won’t be given to you), and get some experience before you complete your studies. For more information about PEY Co-op for computer science, visit the department page and the Engineering Career Centre site for more information and stats.
Click on any of the links to go there:
- CS Community Slack (Use your UofT Email to make an account on the page)
- Department Discourse Page
- ArtSci Site
- ArtSci Guide to First Year
- Services and Resources
- UofT Reddit
- CS Career Questions Reddit
- Also, read the department emails that you get as they have awesome information.
Disclaimer: On Reddit, the most vocal accounts often tend to be those of students who are misinformed. You can still find lots of good information and discussions on the UofT subreddit, but you need to learn how to filter through the misinformed comments and avoid the trolls. Always make sure you are well informed.
So CS is a deregulated fee program, so it’s more expensive. Since you’re not considered a “Computer Science Student” in first year, you don’t have to pay the deregulated fees. Instead, you pay regular “Art Sci” Fees. However, once you are accepted into the program, you will face the brunt of CS fees. Starting from the summer after your first year, your fees are about double the regular tuition fees. These deregulated fees aren't because U of T wants to take all your money, but rather because the government believes that you can get a job out of undergrad, and pay any student loans faster, so you can afford it (just like engineers and business students). Also, this means (as of writing) that you don’t get “free tuition”, but just enough to pay Art Sci fees.
However, you can still get loans, such as the Ontario Student Assistance Program (OSAP), which is open to Ontario residents who are Canadian citizens or permanent residents.
You can apply for it and plan out your finances with their financial calculator here
The good news is that you can qualify for University of Toronto Financial Aid (UTAPS), and the great thing about this program is that you don’t have to do anything after your first-year – it justs uses your OSAP data including your family income and other things (if you are from another province/country check the UTAPS site for instructions on how to apply and criteria). If your OSAP data is low enough, you can get extra money (free money) paid towards your tuition. However, you won’t know this magical amount till late September/early October, though it can be pretty substantial in certain cases ($4,000+ depending on need).
There are also lots of scholarships available for you, so you should definitely check if you qualify for them (check Google’s scholarships, or visit the UGO for more details on computer science undergraduate scholarships. Alternatively, you can also visit here for more details). Also, consider checking out your college registrar for more financial aid options (bursaries and scholarships!).
Well, you made it to the end of the guide! If you read all of it, congratulations and thank you. If not, well, take a break and come back to read the rest. If you just skipped to the bottom, go back to the top and read (why would you skip to the end, thought there would be a summary of the main points?)
We would like to thank all of the people who helped contribute to this guide, making this a possibility. Lead author Anujan M for coming up with the idea of building this guide, and for researching and writing it in a informative, approachable and enjoyable way. Thanks to Nina from the CS Communications Office and Francois Pitt, Associate Professor, Teaching Stream and Associate Chair, Undergraduate for reviewing this guide for accuracy and correctness, though as much as we like to say this guide is accurate (yes, disclaimer time) this is by no means an official guide and is written solely from the perspective of students. You should make sure to consult with the UGO or your college registrar to confirm your understanding of these topics and to verify your plans. Also, a special thank you to the 2018-2019 CSSU President David Ansermino for his acceptance of this idea, and for letting Anujan run with it. Also, a huge thanks to co-author Clara S for her fantastic editing of this guide, for sharing real first hand tips and experiences, and for making this guide as comprehensive and grammatically correct as it can be. Without her, this guide would not be as nicely written as it is.
We hope this guide is informative to you, and if you think your peers would benefit from it too, please feel free to share it with them. If you have any suggestions or comments, feel free to email the CSSU here or make a pull request/issue on the page in github here
We wish you all the best in your first year, and we hope you make the most out of your time here at U of T. Hope we’ll see you at CS Frosh this year!