How to Min-max Your First Year in Computer Science
- to optimize (typically a video-game character) by assigning all, or nearly all, skill points to the ability essential to that character’s success in a specified role and environment, rather than distributing skill points more evenly across attributes.
I've played a ton of videogames with systems that involve character building and resources allocation and developed a knack for optimizing growth and productivity.
I noticed common concepts among my experiences both in-game and real life and developed a framework of sorts that helped me out in my learning journey. Following these concepts helped me gain my footing and allowed me to build healthy habits that helped me survive thrive in the study of Computer Science.
Needless to say, my system may not work for everyone in the same way it did for me. We all have different circumstances and upbringings which shaped our strengths and weaknesses, so if there's something in this article that doesn't resonate with you, don't take it as gospel. Just heed the advice that you think makes sense to your life.
This year is your early game. Play it well and you'll have a breeze during the late game.
What even is Computer Science?
If someone would ask me what Computer Science was to me in my own words, I would probably say something like this:
Furthermore, it deals with the logical & syntactic parsing of said algorithms via programming languages and compilers.
Despite the strong roots in mathematics, you should be fine as long as you can intuitively solve basic high school algebra problems.
Healthy Habits are Important
In order to make your first year as fruitful as possible, you need to establish desirable habits that your future self will thank you for. The Atomic Habits book by James Clear made this point very clear.
Back when I first started studying computer science, I would commit to learning at least 1 new thing a day, and taking note of them through a Personal Knowledge Management system such as this website. Now, I have thousands of notes neatly linked together as a Graph which I can freely traverse and reference from time to time.
Be better than the person you were yesterday and don't compare your journey with other people. Life is a marathon, not a sprint.
They Don't Teach You Everything
Oftentimes, the things you learn in the classroom are highly technical theory that don't make sense during your first encounter. It's a good idea to go beyond the curriculum in your spare time and study in advance during your off-hours and branch out of what the school expects you to learn.
You'll come across A LOT of these. Trust me.
The field of computing is notorious for having an absurd number of acronyms and words that programmers often badly name. You'll be digging rabbit holes across multiple articles, blog posts, YouTube videos, but it'll be worth it. A lot of the concepts taught in the field are built upon previously established terminology and norms, so equipping yourself with the proper vocabulary can help you navigate what you know and don't know.
If you want more exposure to industry best practices and technologies beyond the classroom, I highly recommend you attend GDSC San Carlos's events.
My Recommendations
These are some of my actionable recommendations that can help you maximize your learning as a student.
Books
- C Programming: A Modern Approach by K. N. King
- this is the best way to get into C in my opinion, it covers almost everything under the sun and builds a very stong foundation for programming as a skill.
- do every practice you find and read it from front-to-back for maximum effectiveness.
- Discrete Mathematics with Applications by Susanna S. Epp
- the Discrete Mathematics version of A Modern Approach.
My Notes
- 1st Year Notion Notes
- these were the notes I wrote for all the subjects during my first year, excluding the programming ones included on this website.
Unix-based Operating System
I'd highly recommend using a Linux distribution to familiarize yourself with the command line interface. You'll eventually deal with it someday whether it is for servers or IT operations, so might as well do it while you have a lot of time to spare. You'll also learn a lot about operating systems, DevOps, and System Administration because you have full access to every resource your computer has unlike other operating systems.
For installation, you can dual-boot together with Windows or use a Virtual Machine inside Windows if you want. An alternative route is installing WSL2 inside Windows, but I don't recommend it since it's not the full Linux experience.
There are hundreds of Linux distributions to choose, but I highly recommend Ubuntu or Linux Mint as your first distribution for the stability and software support.
If you want to start your college life in hard mode, but also learn a lot, then Arch Linux might be for you.
Practice Routine
Don't just read and take down notes. Practice your craft in your spare time through gamified means like CodeWars. The only way to get better at programming is to practice it on a consistent basis.
Find a Mentor
As a first year student, it's quite accurate to say that there are A LOT of knowledge gaps that you'll want to fill up before you graduate. A good mentor that you can easily approach for questions will be key to giving you a better point of view in your environment.
These mentors don't necessarily have to be older than you or even someone you know face-to-face. There are multiple online communities where your questions can be heard by someone with know-how in the field (Discord, Mastodon, Twitter, etc.) to assist in your inquiries. But remember, don't be a help vampire. You should always try to provide proper context to your questions so that people can easily assist you.
Conclusion
These were the tips I wish I had in the past to help me navigate through my first year in computer science.
The key is to just build a strong foundation and keep piling new knowledge and innovation on top of it (preferrably with a stable note-taking & archival system) to help you sustain your momentum throughout the rest of the school year and eventually outside the doors of the classroom.