Study guide

How to study Computer Science

Concepts you can explain plus code you can write from a blank editor.

Computer science lives in an unusual middle zone: it has genuine conceptual content you can articulate — how a hash table achieves constant-time lookup, why quicksort averages n-log-n, what a race condition is — and it has procedural skill, actually writing code that runs. Exams and interviews test both, and the two need different practice. You can talk fluently about recursion and still be unable to write a correct recursive function on a blank page, and that gap is exactly where CS students get surprised.

Use flashcards for the vocabulary-and-tradeoffs layer, which is larger than beginners expect. Big-O complexities of the common operations, the difference between a stack and a queue, what each data structure is good and bad at, definitions like polymorphism and encapsulation and idempotency — these are discrete facts that spaced repetition handles beautifully. Being able to state instantly that inserting into a balanced tree is log-n frees your attention for the harder work of choosing the right structure for a problem.

The procedural half must be practiced by writing code, not reading it. Reading a sorting algorithm and understanding every line gives you almost no ability to reproduce it, because writing code involves a hundred small decisions — variable names, loop bounds, base cases, off-by-one edges — that reading glides past. Implement the core data structures and algorithms yourself, from an empty file, until you can produce a working linked list or binary search without reference. The blank-editor test is the honest one.

Interleave problem types the way real interviews and exams do. If you drill twenty array problems in a row you stop asking "what technique does this need?" and start pattern-matching to the last one you saw. Mix arrays, strings, trees, and graphs in a single session so that recognizing the underlying pattern — this is a two-pointer problem, this wants a hash map, this is really a graph traversal — becomes the skill you are building. That recognition is what distinguishes people who have memorized solutions from people who can actually solve.

Space your practice across weeks rather than cramming, because programming skill decays fast without use and rebuilds slowly. A little coding every day keeps the syntax and the patterns warm; a marathon session the night before an exam leaves you fast at whatever you did last and rusty at everything else. Before an assessment, do a timed set from a blank editor with no autocomplete and no reference — the conditions you will actually face — and debug your own failures rather than reading a model answer.

The trap unique to CS is confusing "I understand this code" with "I can write this code." Understanding is passive and comes cheap; writing is active and comes only from repetition. Students read through a solution, follow every step, feel confident, and then freeze at the blank editor because they never practiced the generative act. Close the reference and build it yourself, error messages and all — the debugging is not a detour from learning, it is the learning.

Popular Computer Science topics

Start a set on any of these — the AI drafts the first cards for you.

Variables & data typesLoops & conditionalsFunctions & methodsArrays & listsObject-oriented programmingRecursion

Tools that make Computer Science stick

The parts of Chad × Stacy that fit how Computer Science is actually studied.

AI chat
Ask for an explanation, then turn it into cards, a quiz, or a plan.
Flashcards
Spaced repetition (FSRS) resurfaces each card right before you forget.
Practice exams
AI mock tests from your own materials, graded with real feedback.

Studying more than one class? See every subject, or read the study guides on the blog for the science behind all of this.

Start studying free →

Free to start. Same account on web and iPhone.