CS1010 is the first programming module most NUS students touch, and the one that decides how the next four years of computing modules feel. It moves fast, the labs are unforgiving, and by week six you're expected to handle pointers in C as if they're obvious. They aren't.
This is the survival approach I give every student who messages me in week three asking why everyone else seems to get it.
What CS1010 actually tests
It's called Programming Methodology, but in practice the module tests four things in order of importance:
- Can you read a problem statement carefully. A surprising number of marks are lost because the student solved a slightly different problem.
- Can you decompose the problem into functions. The graders care about modularity. A single 80-line function that works will still cost you marks.
- Can you handle pointers, arrays, and strings without segfaulting. The C model of memory is unforgiving and the practical exam will test it.
- Can you finish on time. The practical exam is two hours. Most students who fail weren't slow, they panicked when one part broke and burned the remaining time staring at it.
Notice that "can you write clever code" is nowhere on this list.
The week-by-week reality
The first three weeks are gentle, control flow and basic functions. This is when most students stop studying because it feels easy. By week four you hit arrays and the difficulty doubles. Week five is strings, week six pointers. By week seven the lectures are talking about dynamic memory and the gap between people who kept up and people who didn't is now permanent.
If you're reading this in week four or later and panicking, don't try to catch up by reading lecture slides faster. Pick one problem from the current week's tutorial and solve it from scratch with a clean editor. If you can't, go back to the previous week's tutorial and do the same. Compounding works in reverse, every week you skip costs you two later.
Pointers, the part that breaks people
The single concept that filters CS1010 students is pointers. Most tutors explain them as "variables that store addresses", which is technically correct and totally useless. Try this instead:
A pointer is a label on a parking spot. The variable is the car parked in the spot. When you "dereference" the pointer, you're walking to the spot the label points to and looking at the car. When you assign through the pointer, you're replacing the car in that specific spot.
int car = 42; // a car parked in a spot
int *label = &car; // a label pointing to that spot
*label = 99; // replace the car at the spot
printf("%d\n", car); // prints 99
The reason students get confused is that C uses the same * symbol for declaring a pointer and for dereferencing it. They are doing different things. int *label means "label is a pointer to int". *label = 99 means "the int at the spot label points to becomes 99". Read every * in context.
Once pointers click, arrays and strings become trivial because they are just pointers in disguise.
How to prep for the practical exam
The practical is a closed-network coding session. Two hours, three or four problems of escalating difficulty. The pattern of every recent practical:
- One easy problem to make sure you can compile and submit
- One medium problem testing arrays or strings
- One hard problem testing pointers or recursion
- Sometimes a bonus problem nobody finishes
Strategy that works:
- Spend the first 5 minutes reading every problem. Don't start coding immediately. The hardest problem might be 80% similar to a tutorial you already solved.
- Solve in increasing difficulty order. Get the easy points first.
- Test on the provided test cases before moving on. Marks come from passing tests, not elegant code.
- If a problem stalls for 20 minutes, move on. Come back to it.
The single biggest predictor of a good practical grade is having solved every tutorial problem from scratch at least once before exam day. Not "watched the solution video", solved it.
What to do if you're already in trouble
If you're halfway through the semester and your CA grades are bad, here is what actually works, in order:
- Stop attending lectures live. Watch them at 1.5x speed and take notes. You save two hours a week.
- Solve every past tutorial in order. Skip nothing. If you can't solve one in 30 minutes, look at the solution, then close it and re-solve from scratch tomorrow.
- Find a friend who is one step ahead and explain concepts back to them. Active recall beats passive reading every time.
- Use office hours strategically. Bring specific code that doesn't work, not vague questions like "I don't understand pointers".
If none of that fits your timeline (you have a CA tomorrow, or the practical exam is next week), message me on Telegram and we can compress a week of revision into a focused two-hour session.
What CS1010 leads to
Surviving CS1010 unlocks the rest of the SoC curriculum. CS2030S builds on the OOP groundwork, CS2040S on the algorithmic thinking, CS2100 on the systems-level reasoning. Students who scrape through CS1010 with a C+ usually struggle in CS2040S because the algorithmic intuition was never built. Students who genuinely understand CS1010 typically cruise through year two.
It's worth doing properly the first time. If you can't, redo it during a special term rather than carry weak fundamentals forward. That's a real, valid choice and SoC students do it more than people admit.
When to ask for help
If after solid effort you're still stuck, get help. Specifically:
- A bug you've stared at for more than 30 minutes.
- A concept that the lecture slides explain in ways that don't click.
- A practical exam in less than a week.
- Three labs that are now overdue.
If any of those describe you, send me your code on Telegram. I've seen most CS1010 mistakes before and it is faster to ask than to suffer.
Keep reading
More from the blog
-
NUS · CS2040S
NUS CS2040S Survival Guide, From a Working Engineer
How to survive NUS CS2040S: the data structures and algorithms that actually earn marks, why the practical exam breaks people who only understood the concepts, and the weekly habit that gets you through Kattis without panic.
-
Python · Singapore · Hiring · Tutoring
Best Python Tutor in Singapore (2026): How to Choose, Where to Look, What to Expect
An honest guide to finding a Python tutor in Singapore in 2026 — what your options actually are, how to evaluate them, and what each type costs.
-
NUS · CS2030S
NUS CS2030S Survival Guide, From a Working Engineer
How to pass NUS CS2030S without burning out. The mental models, common traps, and weekly habit that separate students who get an A from students who scrape through.
-
Debugging · Skills
Debug Like a Working Engineer, Not a Panicked Student
A practical four-step debugging method that works on every language and stops you wasting hours on print statements.
-
Tutoring · Singapore · Hiring
Freelance Programming Tutor vs Tutoring Agency in Singapore
What changes when you hire a solo tutor instead of going through an agency, in plain Singapore-specific terms. Pricing, communication, what to expect, and when each fits.
Related services
Need help with this directly?
Stuck on something specific?
Send your brief and I will reply with a fixed price, usually within the hour.