Topics and targets¶
~6 min
In short¶
The two skills that matter most are DSA and system design. Practise both as much as you can. This page is a map, not a timetable. It shows which topics lead to which, and for each topic a target: something you should be able to do. Go as fast or as slowly as your life allows. Skip a box if you already have it. The order matters more than the speed.
The map¶
flowchart TD
A["Programming basics<br/>Python or Java"] --> B["Terminal and git"]
A --> C["Data structures<br/>and algorithms"]
A --> E["CS fundamentals<br/>OS, databases, networks, OOP"]
A --> F["Projects"]
B --> F
C --> D["Problem-solving practice<br/>1,000+ problems"]
D --> G["Interview ready"]
E --> G
E --> K["System design<br/>practice"]
F --> K
K --> G
A --> L["Testing"]
L --> F
G --> H["Apply, referrals,<br/>mock interviews"]
H --> I["First job"]
I --> J["System design<br/>and depth"]
Most people work on several boxes at once. A common mistake is to stay in one box, usually problem-solving practice, and never build a project or learn the core subjects.
Where you enter the map¶
flowchart LR
S1["CS or IT student"] --> A["Programming basics"]
S2["Other branch"] --> A
S3["Working, switching"] --> A
S4["After a gap"] --> A
S1 -. "already know basics" .-> C["Data structures"]
S3 -. "already code at work" .-> C
S3 -. "already code at work" .-> F["Projects"]
Your row on the start page tells you which page to read first. The path pages say what to watch for at your starting point.
Targets by topic¶
The practice counts are my guidance, and I set them high on purpose. The bar is the hardest-selecting companies (Media.net, Coinbase and similar): I advise 1,000 or more problems with review, at least 250 of them hard. No company publishes a required number.
| Topic | A target you can check | Where on this site |
|---|---|---|
| Programming basics | Write a program of about 50 lines without help: it reads input, uses loops, functions and a dictionary, and you can explain every line | Python course |
| Terminal and git | Make a repository, commit, branch, push to GitHub and fix a merge conflict | Tools |
| Data structures and algorithms | Solve a medium problem on arrays, strings or hashing in under 45 minutes and explain the time cost | DSA topic order |
| System design | Walk through the design of a URL shortener or a rate limiter in 45 minutes: requirements, estimates, API, data model, bottlenecks and failures | Practising system design, HLD, LLD |
| Hard-company bar | Solve a hard problem you have not seen in 60 minutes with no hint, write a thread-safe producer-consumer queue with tests, and build a small machine-coding system (queue, rate limiter or booking) in 90 minutes | Practising for the hardest companies |
| Testing | Write unit tests for your own solution, including edge cases, and stress-test it against a brute-force version | Testing basics |
| Problem-solving practice | Aim for 1,000 or more problems over time, across the question styles of many companies, with a log of the mistake behind each one you failed | Practice method, trackers |
| CS fundamentals | Answer the checklist questions for OS, databases and SQL, networks and OOP aloud, without notes | CS fundamentals |
| Projects | One project with a database that runs, has a readme, and that you can defend line by line | Projects and resume |
| Interview ready | A mock round with a friend where you think aloud and finish a medium problem | Mock interviews |
| Apply | A log of applications with dates, and at least some of them through a referral | Applying |
| After the first job | Read a design discussion and explain the trade-offs | After the first job |
Targets for contests¶
Contests are not required for an interview, but they are the fastest way to practise unfamiliar problems under time pressure, so I recommend them alongside DSA practice. If you want a number to track, these are my guidance, not requirements. For a first job, steady medium-level problem solving matters more than any rating. As a stretch, Codeforces Specialist to Expert or a LeetCode rating around 1800 is a sign of strong problem solving. See contests and ratings for the official rating bands and why no rating maps to an offer.
Use AI tools to learn, not to skip the work¶
Many AI tools offer free or discounted plans to college students. Search for the ones your college or the vendor offers and try them. Use them to explain a solution you have already attempted, to review your code, and to produce practice questions. Do not use them to produce the first attempt: the struggle is where the skill comes from. The student tools page lists current offers with their sources.
Try this¶
Print the first map or copy it into your notes. Colour the boxes you can already do. Pick one uncoloured box that has all of its arrows coming in coloured, and open the page in the last column of its row.
Sources¶
- Internal: Python course, Start Here, Contests and ratings