A First Year Reflection @ UofT CS

← go back

and maybe some advice id tell myself if i did it again

Published on June 30, 2025

Last modified on July 2, 2025


Disclaimer: This is not a guide to first year for computer science students at UofT!!! Maybe I can provide some advice through my stories, but older upper years definitely know more about how to navigate first year and university way better than me. If you want some proper guides check out Hanmin's guide or the CSSU Guide.

Here's a potential hot take: people greatly overstated the difficulty of first year at UofT.

This take, however, does not apply to everyone, given that we all have differing backgrounds, expectations and experiences entering university.

Leading up to first year I was under a heavy impression that first year would be difficult and stressful. Many stories online and from word of mouth detailed how first year was a major jump from highschool, with courses like MAT137 that are extremely grueling and stressful, equipped with heavy workloads and high dropout rates. Yet as I stepped foot into the first week of lectures, I was surprised to find that the courses were not as difficult as I had expected and similarly for many others, especially within the CS program. So, what really happens in first year?

Aspects of School

Grades

Computer science is one of those fields where school can be quite optional at times, especially depending on your goals. For those who want to enter industry like myself, grades matter far less in comparison to skills and experience. Many companies don't even look at your grades, and in first year, I took that knowledge to heart, and sort of became a slacker. Although my grades were still decent, with all the extra time I had not focusing on grades, I ended up feeling like I wasted it doing unproductive things like sleeping in everyday and scrolling through reels. It felt pretty bad too, as I knew I had so much potential to do better first year, but didn't take any advantage of it. At the end of the day, these courses all cost money, and doing good is also a good way to ensure I maximized the value of my education, which I did not do.

Lectures

Once grades became pretty optional to me, then came lectures, which quickly felt optional to me as well. Furthering my bad habits, I often found lecture recordings to be far more useful than attending lectures, as I could pause, rewind, and watch in higher speeds if I wanted to. Skipping lectures is a slippery slope, and there were times where I wouldn't even attend classes outside of mandatory tutorials and tests. Definitely would attend lectures more if I did first year again, I need to get my money's worth after all.

Internships and Experience

Lots of opportunities, but definitely not on the scale of Waterloo students. There's many underrated options you can find though, like doing work studies at UofT, or online programs like Riipen, Advance Ontario, and more. It's also first year though, so don't stress too much. Most people I knew didn't care for internships at all in first year, and it's fair play; a first year internship is definitely not an easy feat to achieve, and genuinely super impressive to those who do get one without any prior CS experience before university. I'm only on my first internship, so I don't have much knowledge to give, I kind of just spam applied to everything I could find :P

Money

School is not cheap! Especially living downtown, where costs of living for food, rent, and more is far greater than what you will find at other universities. Apply to UTAPS and OSAP if you haven't already. Try even if you don't feel like you will need it. I genuinely regret not doing it first year!!

Courses in Review

In first year, I took eight courses in total, with four courses relevant to my degree and four courses for fulfilling breadth requirements. Overall, it was a really bipolar experience.

CSC110: Foundations of Computer Science I

This course is a basic introduction into computer science and Python as a whole. Out of all courses I took, this course was undoubtedly the easiest course and the average leaving the course was as high as an A- (80%+), which is in comparison to the 70% average required to "pass" the course to remain in the CS program. The course is extremely structured and all of the assignments, quizzes, and tests were very straightforward. CSC110 is geared directly to those without any CS experience, and has many failsafes to ensure that all students can do well and learn in the course. As someone who had prior CS experience, I pretty much skipped all of the lectures given they were too early in the morning and also kind of boring to attend. In the limited times I did attend though, the profs were very engaging and prepared to teach the material.

Another interesting aspect about this course is that it is actually worth 1 full credit despite being a half semester course, which are worth 0.5 credits. To make up for this, CSC110 has double the lecture hours and technically has double the workload of a half semester course, but I found the workload equivalent to other 0.5 courses. Unless you're attending every lecture, which honestly no one did, especially with lecture recordings, this course is pretty forgettable at times. My only regret was not taking an extra course in first semester, as this course was so easy that the extra free time could have helped advance my studies in other areas more. At the same time, having a lighter course load in my first ever semester also helped me transition into university life, so I guess there are pros and cons to everything. I spent most of my extra free time sleeping and playing VALORANT. Who knows :P

CSC111: Foundations of Computer Science II

This course is a continuation of CSC110 in semester two, and covers more advanced topics in computer science and Python. Unlike CSC110, this course is only a half credit course, and the passing requirement is higher at 77%. Still, despite the topics being more advanced, the course remains very structured (it's taught by the same profs as CSC110) and the assignments, quizzes, and tests are still very straightforward. The course similarly ended with an A- average, and I found the course to be very easy as well, only briefly touching some higher level topics. Anyone who has taken highschool CS and has experience in Python can continue to excel and skip lectures in this course similar to CSC110. NOT ADVICE to skip lectures though, figure that out on your own!!! Even if you are knowledable in the course material, attending lectures is a good way to connect with your profs, TAs and other students. Skipping lectures is a pretty slippery slope to be on!!!

MAT137: Calculus with Proofs

This course is probably the moust infamous and well-known course in first year, especially for CS students. It's a massive course while also being full year, with over 1000 students enrolled from a multitude of programs, and is the final prerequisite to entering the CS program, outside of CSC110 and CSC111. Thankfully, despite the difficulty, the minimum requirement is passing the course, with the average being around the C/C+ range. For me, this course was objectively the most difficult course I took in first year, but among the most manageable. The course is structured in a way that forces you to work through the material as it comes, meaning slacking off is not a great option. Entering the course, I heard way too many horror stories about how horrible the course was, and looking at the rate my profs of almost every prof except Boris (the goat, and the prof that you should take if you can), everyone clearly hates the course and its professors. I feel as it's a bit of survivorship bias though, as many people who do well or acceptable in the course don't really talk about it, and the people who do poorly are the ones who complain. Most people actually do pretty well in the course, especially for CS students, who are more likely to have greater math experience entering the course in comparison to other programs.

Honestly, this course was pretty good, and I actually enjoyed the content that was taught. The tests were pretty fair as well. My only regret was not putting more effort into the course, as through my CS courses, I fell down a slippery slope of skipping lectures and not catching up to the content, letting my ego tell me that I could do well with minimal studying. It didn't help that on my third test, I got the same grade to my second test without studying.

Despite my experiences not studying, a lot of this course depends on your prior math experience before highschool and your mileage can vary. There was a decent percentage of people entering the course who simply did not get taught certain concepts in highschool which popped up in the course, making it harder for those to catch up. If you don't feel confident with your math skills or feel that you've lost a lot of knowledge, I've heard the summer programs like PUMP 2 can ensure you enter university with the skills you need to succeed in MAT137. Still, I think there is quite a lot of fear mongering around MAT137, and while it is a difficult course for many, I also believe everyone can do well in the course with the right mindset and continuous effort. You got admitted to CS and UofT for a reason! If there's a course I would recommend to take seriously the most, it would probably be MAT137.

MAT223: Linear Algebra I

This is the first course that is not mandatory for first year (it is second year) CS students, but is HIGHLY recommended to take in first year. Despite being a "second" year course, it is very manageable and easy to pass. About 40% of the course is practically guaranteed by doing assignments with infinite attempts and quizzes where you know the questions ahead of time. The average is around C, but I believe most CS students do far better than that given our extra involvement in math compared to other programs. Supposedly the proof writing in the course is tricky for many, but everyone in CS can handle it well given the experiences of MAT137. I am extremely glad I took this course first year, as it freed a lot of options for courses in second year.

During the course, I continued to skip every lecture to hangout with friends or just be lazy (notice how 4/4 lectures so far i've talked about skipping. don't be like me), and mainly crammed around the midterm and final exam, which are the only two tests in the course. The lecture recordings were very helpful for such cramming, and I was able to do well in the course without much effort. In the few lectures I did attend, the profs were very engaging and helpful. My main gripe with the course was that tutorials were pretty mandatory, yet only the last 10 minutes were useful as that was the actual assessment portion of the tutorial. Overall, amazing course, heavy recommend to anyone in CS first year.

Note: The following courses are courses I took to fulfill breadth requirements. Not super relevant but maybe it would be useful to someone and I want to vent about my experiences in them :P

CDN199: Canada-Hong Kong Migration

This is the first of my breadth courses, and was my lowest grade of first year. I won't go much into detail as there are infinite options for breadth requirements, but I found this course to be pretty boring and I regret taking it. This course is a first year seminar course (any course with a 19x code), meaning it had a small class size but also no CR/NCR option, forcing me to try for a decent grade. There was a lot of weekly work, and the course required attention to lectures and readings, which I did not do or care about. If I was doing first year again, I would definitely have swapped this course out. I wouldn't recommend first year seminar courses unless it's genuinely easy or a topic you're intersted in, especially given that many of these courses have attendance requirements and marks. A lack of a CR/NCR option is a bit risky if you care about grades.

TRN193: Canadian Health Policy: Past, Present and Future

Another seminar course, and I also hated it. The prof was a very nice man, but as someone who is not interested in health policy, it was hard to attend and sit through lectures every week. Thankfully, this course was graded entirely on three essays with no exams, and knowledge from readings and lectures were not required to do well. Thus, if you have a good writing style and academic writing experience, you can do very good in this course without crazy effort. Still wouldn't take it again, but learning about Canadian health policy did open my eyes a lot into how our healthcare system works, which is a good thing I guess.

HPS120: How to Think about Science

A good course, terrible grading. Thankfully not a seminar, and I CR/NCR'd this course. The content itself is actually pretty interesting, and the prof Cory Lewis is very good at presenting. Unfortunately, the TAs mark essays extremely randomly, and left little to no feedback. I guess it's not an expectation, but it does feel pretty unrewarding when you drop a literal 50% on an essay and get genuinely zero feedback. After CR/NCR'ing this course, it did become extremely easy, as the workload is nothing beyond a midterm, two essays, and a final exam. It also made skipping this class very easy. The course average ended as a B-, which is pretty high, especially as many people take this course as a bird for breadth requirements.

PHL245: Modern Symbolic Logic

This course felt like a philosophy kid's nightmare, but a haven for math and CS kids. This course is a pure logic course, meaning anyone with a math and especially CS background are poised to do extremely well with minimal studying in the course. Despite the lectures being quite poor in content, there are many online resources and honestly just foundational math understanding that can help you do well in this course with little effort. Everything felt straightforward in this course, and my only gripe was how many tests there were, with 3 tests and a final exam in total. The course average was around a C, but I believe most CS students did FAR better than that. Great course as a breadth for CS students.

Final Thoughts

First year was an amazing experience, and the extra freedom is unparalleled to highschool. First year is a scary year to many, but I believe that everyone has it in them to excel and do well in first year!!! You got into your program for a reason, someone reading your application believed you were capable enough of doing well in the program and picked you as a result! I've met loved ones and made new friends first year, and it was a great year looking back.