I've had my fair share of courses with great professors and not-so-great ones, and somehow I find the courses where I don't learn from the profs and TAs as much the most fun - I get to find resources that help me learn the same things I'm paying $4000* a semester for.
Adapting, overcoming, and improvising
I've done this in my first and second year; back when I attended the University of Toronto, I taught myself the entirety of Calculus I and Introduction to Proofs. One of those courses I did nothing but the final and ended up getting an A in, the other I barely passed with a C. We don't talk about the latter class. I've taught myself the entirety of Linear Algebra and Scientific Data Analysis i did not watch any of the video lectures i'm so sorry mariana. I was able to get an A in Algorithm Design and Analysis from watching all of Abdul Bari's Algorithms playlist on YouTube. Two of the courses I'm taking at this very moment, Computer Graphics and Machine Learning, have, again, due to how ineffective the medium is, made me seek other resources to catch up on the content.
I don't really blame the professors all that much though. Some profs go on off-topic tangents, some profs teach in formats that don't work with me, some profs just read off the slides with no opportunities for participation and call it a day. In my 3/4 years of being in higher education I've gotten to learn what works for me, and that's:
- a mostly readable format
- where, if there are slides, the spoken part of the lectures reinforce/clarify what's in the slides (and it's not just a regurgitation)
- more interactive examples of lecture content, if the content allows for it
Some profs aren't able to do that. I can't really do much about it, and I want to learn everything the course wants me to learn, so I have to result to finding alternative sources that teach in about 30 minutes what some profs fail to teach in an hour and 30.
Why am I still in school if some profs are ineffective?
It's honestly because I have no idea what I'm doing. I find that school gives me a sense of structure and routine in life, and high school hasn't given me enough resources or time to figure things out. I've tried a retail job, and it isn't for me as much as people loved me in it. I've challenged myself to get a masters degree in CS, because why not? I like challenges. I've also found a very great support system that I don't think I would have found otherwise if it wasn't for me being in university (examples: Major League Hacking offering a multitude of hackathons and events, or even the profs/upper years that have been there and done that giving me tips on how to do my best).
Also, I believe having a CS degree (or a degree in general) shows employers, and yourself, that you were dedicated to 4 or more years of learning how to find solutions and methods that work for you. In the case of self-teaching, it's finding out how I learn and working with it. Yeah, if I have to learn things myself it's a big waste of money, but the university experience is more to me about the social aspect - I would not have been able to build such a network if I wasn't in university.
Also money is horrible and I don't want to waste it failing courses. I also cannot give myself the discipline to be dedicated to learning things, so I plan my courses around forcing myself to learn what's interesting to me. Forced learning.
The struggle of finding resources
The process is a hit or miss, and it either takes an entire semester or a few days to be able to find ways to meet a course's learning objectives in a more accessible way for me.
Sometimes getting external resources is hard, though: the "textbook" given to me for a course called Software Design and Analysis (which is basically How To Make UMLs: The Course) was a poorly formatted PDF of a website, and Googling any resources for that took me to sites and YouTube channels for UML creation startups (I am too broke to pay for anything past a cheap/free trial). I don't know how I got an A on that, but somehow I was able to take away that this course is useful for at least having a basis for a software system from absolutely nothing.
(This, however, could have been fixed if I wasn't super depressed at the time I took the course, and also Googled "UML diagram book PDF" or something. See? The first result looks promising.)
Other times, though, finding good YouTube playlists and tutorials is pretty simple. A lot of upper year students have lists of resources and YouTube playlists they've used to get through courses, and they're more often than not pinned on the corresponding course's channel on a Discord server for my specific program. Even professors from my school have retweeted links to e-books that supplement the content they teach (this may be a hit or miss, because retweets are not exactly endorsements, but I have only had one instance of this and it looked credible to me).
My favourite resource is a book a friend who doesn't even live in the same country recommended me for Introduction to Proofs/Discrete Math: The Book of Proof, an open source introduction to proving mathematical theorems. It was the first resource that shaped how I think about my degree in computer science - it's just proof that I've been dedicated to problem solving of all types for 4 or more years.
All useful resources so far
For at least the two courses I'm taking right now that encourage me to self-teach, here's what I'm currently using.
Graphics
It's an OpenGL course, woo! There are too many resources on older versions of it, so here's a list of 3.3+ resources. (Thank you, IronFist!)
- Graphics Theory
- OpenGL
Machine Learning
In this course, I believe I'm focusing on PyTorch. I wouldn't know exactly though, I'm too lazy to attend the lectures.
- Overall
- Theory/Math
Last words
Maybe I should actually use the feedback form my university offers at the end of each semester and give real, constructive criticism (and not just "i think you marked me harsh even though i have never interacted with you in my life and you're also a horrible TA i'm going to regurgitate your words with no comprehension of them whatsoever"). Probably "hey, this is from my own personal experience, but do you think you can be more interactive in this way so it's easier for me to pay attention in lectures? It might help a lot next time." It may not make the profs change their style right away, but it does give them food for thought to be more effective to those who learn and understand differently in the future.
Also, my point of view has been highly influenced by one of my buddy Xetera's blog posts, specifically, the one about why school sucks so much. I'm aware Xetera's biased from his experiences, and I'm biased from my experiences, but this article helped me realize that there are different ways to get to the same destination.