Hello all, today I bring you my computer science masterpost, which is based on my experiences with CS in high school and college (and also from talking other CS studyblrs). Full disclosure, I have only been studying CS for about two years (and mainly in Java) so this is not coming from an expert, but I want to put what I know out there to help all y’all, so HERE WE GO!
First off: If you haven’t already, check out posts like this and this (and many others) for online CS resources and practice. Code Academy is especially great for brushing up on the basics, and I really like Coding Bat for little exercises to warm up your brain before jumping into a bigger project. @thisgirlcodes also told me about this link for free CS books.
THROUGHOUT THE YEAR
- Code. A lot.
- More on this later, but my general advice is to fully go through code examples from class instead of ignoring them or just glancing over them
- In addition, you can write your own mini-programs using concepts you are learning to see how they work in practice
- Also make sure you are running the most current version of your IDE, this will help you avoid errors from out of date software
- Keep up with your homework problems/textbook readings
- Even if it is for completion you should try to do it right (ideally without looking at your notes)
- The material won’t always be directly relevant to your class, but it can never hurt to know more about the subject
- Mark up/retype lecture notes
- Pretty standard studyblr advice: don’t let your notes sit, reviewing them over time is the best way to make sure you learn it
- Keep a running study guide
- Every time you encounter something particularly difficult or something your teacher really stresses, add it to the study guide and come test time you will already be ahead with studying
- You could even make a shared Google Doc and have multiple people contributing to it throughout the year
- Make a routine and stay with it
- Something like “After every class do this, every week do this, etc.” will keep you on track better than just randomly studying
- Know how your grade is calculated to better allocate your time
- In my class, projects are not worth very much individually, but they take up so much of my time and energy and can distract me from studying for the really big stuff like tests and quizzes
- Knowing what is worth more can tell you which areas need more or less of your time
CODING
Many people think they can understand concepts just by looking at a piece of code, but this has never worked for me. Here’s what does work: Download/copy the code you want to understand. Upload it into your code viewing platform of choice (usually I use Eclipse, BlueJ, or Drive Notepad). Then go through it thoroughly. Make as many comments as you need to understand how it is running. Trace what is happening from input to output. See what concepts are being applied in the code. Basically you need to interact with it, not just read it. I am really bad about finding the motivation to do this because it’s a lot of work, but it really does help you understand the material on a deeper level.
I’ve commented this code that I found here so you can see what I’m talking about (I commented a lot, of course you can do as much or as little as you like).
PREPARING FOR TESTS
The two key things to do when preparing for a test are to know the concepts and to do practice problems. Any combination of things from this list can work, it’s up to you to find what you like.
- Teacher-assigned homework problems
- Practice test problems and answers
- Going to office hours/after school help
- Assigned projects
- Side projects
- Chapter Review and Quick Check questions from textbook
- Quiz and test corrections
- General notes/lecture review
- Code that accompanies lecture/discussion
Another note: I always find it really hard to do problems without looking at the answers. In my mind I know it will help me learn better if I attempt the questions without looking at the answers, but I still really really just want to look at them. I think it’s a combination of it being much more effort to figure it out and also that you can kind of trick yourself. If you do all the problems yourself and struggle with them, you feel terrible, but if you just look at the answers it’s easy breezy. So try to remember that having trouble with practice problems isn’t the end of the world, and in the long run it will help you learn.
OUTSIDE OF SCHOOL
- Join clubs/networks for coding
- Of course I gotta plug Women in Tech and especially the women in tech network on tumblr, hi ladies <3
- I joined the AWC, or the Association for Women in Computing, and there are many other associations to explore
- Jobs/Internships
- This would require a whole different post, but essentially if you are in a position to get a job/internship, real world experience with code will increase your skill level very quickly
- Outside projects
OTHER GENERAL TIPS
- Logical thinking (courtesy of @thisgirlcodes)
- Compsci requires a certain approach to problem solving that doesn’t come naturally to everyone at first; you kind of have to train yourself to think through all these possibilities when writing code and solving problems. It can seem impossible at first, especially when you see these super-fancy, super-efficient designs made by top-level programmers, but with enough practice I know you can develop the skill.
- Real talk for ladies: there’s a lot of dudes out there. Talk to them. If you only stick with girls you won’t be getting the full experience, and you might miss the opportunity to meet some amazing people.
PEP TALK
Studying computer science is hard work. HARD. WORK. Compsci is one of those fields that has a lot of geniuses; these people seem to just skim on by and understand everything perfectly, leaving you (or at least me) feeling useless and dumb and like you’ll never catch up. My philosophy for dealing with this has been, “If you can’t out-think them, out-work them,” and also, “You don’t have to be good at it, you just have to do it.” Many many people do extremely well in this field without being geniuses, and they do it by working hard over time. I really like this reddit thread that talks about feeling discouraged by everyone’s success. It’s good to remember that just because you aren’t the best at something doesn’t mean you can’t make contributions to and do well in your field.
And that’s it! Wishing you the best of luck in whatever you pursue! <3<3<3