NTU · SC1003 · Introduction to Computational Thinking and Programming

SC1003: ace the component, not just read the notes

Your complete guide to Nanyang Technological University's introduction to computational thinking and programming course. See where the marks are, work real practice questions, and study with an AI tutor that knows SC1003.

3 credit points Year 1 undergrad Offered S1 / S2 School of Computer Science and Engineering

Sia generates SC1003 practice questions, walks through concepts of computational thinking and program structure step by step, and quizzes you on the material the component that weights most heavily.

Spot the bug

Find what is wrong

Multiple choice · the fix is revealed after you answer

You write a C function meant to double a value held by the caller:

void twice(int n) { n = n * 2; }

int main() { int x = 5; twice(x); printf("%d", x); }

What prints, and what is the fix?
The fix

Identify the mechanism. C passes arguments by value: twice receives a copy of x, not × itself. The copy lives in the function's own stack frame.

Trace it. The copy is set to 10 and then discarded when the function returns. Nothing ever touched the × in main, so the program prints 5.
Fix it with a pointer. Change the signature to void twice(int *n) so the parameter holds the address of the caller's variable, then write *n = *n * 2 to dereference and assign through it.
Call it correctly. twice(&x) passes the address of x. Forgetting the ampersand at the call site is the second half of this error and produces a type warning that beginners routinely ignore.

The trap: Assuming C passes by reference, which option B states outright. It does not: everything is passed by value, and a pointer is simply a value that happens to be an address. This single misunderstanding accounts for most of the confusion when the course moves from functions into pointers and arrays, and it recurs in SC1007 if it is not resolved here. classic slip!

Overview

What SC1003 is, and where it sits

SC1003 is NTU's first programming course, and the official outline is unusually clear about its ambition: to take students with no prior experience of thinking in a computational manner to a point where they can derive simple algorithms and code the programs to solve basic problems in their own domain of study.

The course is built in two movements. The first is computational thinking itself, taught as four named concepts: abstraction, decomposition, pattern recognition and algorithm. These are the framing tools, and the outline treats them as transferable well beyond computer science. The second movement is implementation in C, covering program structure, control flow, functions and parameter passing, then pointers, arrays and structures.

That second half is where the course earns its difficulty. Pointers, pass by reference, multi-dimensional arrays and arrays of structures arrive in a course that assumes no programming background, and they arrive quickly. The course is also a prerequisite for SC1007 Data Structures and Algorithms and SC2002, so what is left shaky here surfaces again immediately.

How it differs from its first-year siblings. SC1003 teaches a way of framing problems and then makes you implement it in a language with no safety rails. The concepts are the easy half; C's memory model is the half that decides grades.

Official outline: ntu.edu.sg · SC1003 outline. Always treat the official outline and the exam timetable as authoritative.

Difficulty & time commitment

Is SC1003 hard, and how much time does it take?

SC1003 is manageable if you keep a weekly rhythm and treat the back half as the main event. The pattern is consistent: it starts gently and steepens, and the heaviest assessment is the part that separates grades.

Difficulty
3.4 / 5
Moderate. Gentle early, demanding back half. Hard to fail with steady work; a top grade takes consistent practice.
Coursework
0%
Coursework carries most of the grade. The heaviest single component is the component at 0%.
Weekly time
~9 hrs
Around 9 hours per week including class, across lectures, study and assessment.
Computational thinking concepts, pseudocode, flowchartsgentle
C programming, pointers, arrays and structuressteep

The difficulty curve and the assessment weighting point the same way: the back half is harder and worth more. Front-loading effort there is the highest-return decision in the course.

Is this course for you

Who tends to do well, and who tends to struggle

You will likely do well if

  • You write code every week rather than reading it. The lab marking is automated on test cases, so working programs are the only currency.
  • You build an explicit mental model of memory early, so pointers are a natural extension rather than a shock.
  • You use the four computational thinking concepts as actual tools when planning a program, not as exam vocabulary.
  • You test your own code against edge cases before submitting, since the grader will.

You may struggle if

  • You assume C behaves like a higher-level language and passes arguments by reference.
  • You postpone pointers. They underpin arrays, strings and structures, so the delay compounds across the rest of the course.
  • You write code that almost works. Automated marking gives partial credit per test case, so 'nearly right' is measurably worse than right.
  • You skip pseudocode and flowcharts and start typing, which is exactly the habit the decomposition topic exists to break.
do this ↘
What top students do differently
  • Draw the memory diagram whenever a pointer appears: boxes for variables, arrows for addresses. Nearly every pointer bug becomes obvious in that picture.
  • Run your code against deliberately awkward inputs — zero, negative, empty, maximum — before submitting to the automated grader.
  • Write the pseudocode first, in the decomposition style the course teaches. It is faster than debugging a program with no plan.
  • Treat arrays of structures as the checkpoint topic. If you can build, traverse and modify one confidently, the course's hardest material is behind you.

Syllabus

The 12 topics, topic by topic

The exam-weight marker on each topic shows where the marks concentrate. The amber topics carry the highest exam weight.

0

T1 · Concepts of computational thinking

Official course outline, topic 0

Solving a complex problem with a computer: working out exactly what to tell the machine to do.

1

T2 · Programming languages and computer organisation

Official course outline, topic 1

High-level languages, basic processor and memory organisation, and how a computer executes a program.

Lower exam weight
2

T3 · Program structure, control constructs and data types

Official course outline, topic 2

Data types and variables, pseudocode and flowcharts, sequence, selection and iteration.

3

T4 · Abstraction

Official course outline, topic 3

Reducing a problem to the characteristics that matter, and the role of functions, libraries and data structures.

4

T5 · Decomposition

Official course outline, topic 4

Breaking a complex problem into smaller parts that can each be solved on their own.

5

T6 · Pattern recognition

Official course outline, topic 5

Finding similarities among and within problems so earlier solutions can be reused.

Lower exam weight
6

T7 · Algorithms

Official course outline, topic 6

Reformulating a problem as ordered steps, with sorting and searching as the worked examples.

7a

T8 · C basics: syntax, types and control flow

Official course outline, topic 7

C program structure, intrinsic data types, declarations, operators, assignment and simple input and output.

7b

T9 · Functions, parameter passing and scope

Official course outline, topic 7

Return values, arguments, variable scope and the concept of side effects.

High exam weightQuiz me on functions →
8a

T10 · Pointers and pass by reference

Official course outline, topic 8

Pointer operations and how pass by reference differs from passing a copy.

High exam weightQuiz me on pointers →
8b

T11 · Arrays and strings

Official course outline, topic 8

One- and multi-dimensional arrays, the relationship between pointers and arrays, character strings and arrays of strings.

High exam weightQuiz me on arrays →
8c

T12 · Structures and type definitions

Official course outline, topic 8

Structures, arrays of structures, and defining your own types.

Assessment

How this course is assessed

The official course information does not publish a component-by-component weighting breakdown for this course. Rather than estimate one, we publish only what the course itself states. Check your current course outline on Canvas for the exact percentages.

  • The NTU course outline for this course publishes a full component weighting table, but the version that could be verified is from an earlier academic year. Rather than present a possibly superseded table as current, no weighting is asserted here.
  • What the outline does describe consistently is the assessment approach. Lab assignments and tests require you to submit C code, which is marked automatically by an online submission and grading system against a set of test cases. Marking is based on whether the programming logic solves the problem, not on similarity to a model answer: code that compiles and runs correctly on every test case scores full marks, code that passes some test cases scores proportionally, and code that fails all of them or does not compile scores zero. Check your current course outline for this semester's exact percentages.

Source: official course information

How to actually pass it

A weekly rhythm, two checklists, and the traps to avoid

The course rewards consistency over cramming, and practice over re-reading. Here is the loop that works, then what to have nailed before each exam.

The weekly loop

Before the lab
Attempt the exercise on your own first. Lab sessions require showing a working program, so arriving with an attempt is the point.
Every week
Write at least one small program from scratch. Programming fluency comes only from writing, not from reading solutions.
When a concept lands
Restate it in the computational thinking vocabulary the course uses — is this abstraction, decomposition, pattern recognition, or algorithm design?
From the C half onwards
Keep a running file of small pointer and array examples you wrote yourself, with the memory diagram beside each.

Before the mid-semester checklist

  • Explain the four computational thinking concepts and apply them to an unfamiliar problem.
  • Write pseudocode and draw a flowchart for a problem before coding it.
  • Use sequence, selection and iteration correctly in C, with the right data types.
  • Describe at a high level how a computer executes a program.

Before the final heaviest topics

  • Write C functions with correct parameter passing, and explain the scope of each variable.
  • Use pointers and pass by reference to modify a caller's variable.
  • Work with one- and multi-dimensional arrays and character strings, including the pointer-array relationship.
  • Define and use structures and arrays of structures.

The mistakes that cost marks

01

Expecting pass by reference. C passes everything by value. To change a caller's variable you must pass its address and dereference. This is the course's single most common misunderstanding.

02

Off-by-one on arrays. A C array of size n has valid indices 0 to n-1, and C will not stop you from writing past the end. The result is silent corruption rather than an error message.

03

Treating strings as a built-in type. A C string is a character array terminated by a null character. Forgetting the terminator, or the space it occupies, produces bugs that look random.

04

Coding before decomposing. The course teaches decomposition precisely because starting to type without a plan produces programs that are hard to debug and harder to mark.

Formula & concept sheet

The vocabulary and formulas you must own

Computational thinking
Formulating a problem and expressing its solution so that a computer can carry it out, through abstraction, decomposition, pattern recognition and algorithm design.
Abstraction
Reducing a problem to only the characteristics relevant to solving it, hiding the rest behind functions or data structures.
Decomposition
Breaking a complex problem into smaller parts that can each be solved and tested independently.
Pattern recognition
Identifying similarities among problems so that a known solution can be reused rather than rebuilt.
Algorithm
An ordered sequence of steps that solves a problem, evaluated on correctness and on efficiency of steps and resources.
Pass by value
C's argument-passing rule: the function receives a copy, so assigning to a parameter never affects the caller's variable.
Pointer
A variable whose value is a memory address; dereferencing it reads or writes the data stored at that address.
Pass by reference (in C)
Simulated by passing a pointer, so the function can modify the caller's variable through the address it was given.
Array
A contiguous block of same-typed elements indexed from zero; the array name behaves as a pointer to its first element.
Character string
In C, an array of characters terminated by a null character, which must be accounted for in every length calculation.
Structure
A user-defined type grouping several named fields, allowing related data to be handled as one object.
Scope and side effect
Scope is the region where a variable is visible; a side effect is any change a function makes beyond returning a value.

Common acronyms: AU · CT · I/O · MCQ · SCSE.

Where it fits

Prerequisites, related courses & why it matters

No prerequisite. SC1003 is worth 3 AU and is a prerequisite for SC1007 Data Structures and Algorithms and for SC2002. It also appears as a Data Science core course in the Economics and Data Science programme.

Why it matters beyond the grade. This is the entry point into every computing pathway at NTU. The C material in particular is what makes later courses in data structures, systems and embedded work possible, because it forces an explicit model of memory that higher-level languages hide.

FAQ

Frequently asked questions

Is SC1003 hard?

It rates moderate. The computational thinking half is genuinely accessible with no background, which the outline states as the design intent. The C half is harder than students expect, particularly pointers and arrays of structures, and it arrives fast.

What is the assessment breakdown?

NTU publishes a component weighting table in the course outline, but the version we could verify is from an earlier academic year, so we do not assert it as current. What is stable is the approach: lab code is marked automatically against test cases, with partial credit proportional to the number of cases passed. Check your current outline for this semester's percentages.

Do I need programming experience?

No. The official aim is to take students with no prior experience of computational thinking to the point of writing simple programs. There is no prerequisite.

Which language does it use?

The official syllabus teaches C for the programming half, covering program structure, functions, pointers, arrays and structures. Some hands-on exercise material has also used Python.

How many AU is it, and what does it lead to?

Three AU. It is the prerequisite for SC1007 Data Structures and Algorithms and SC2002, so the material is assumed immediately afterwards.

What is the hardest part?

Pointers and pass by reference, followed by arrays of structures. Both require holding an explicit model of memory, which is the genuinely new idea in the course rather than just new syntax.

Study SC1003 with Sia

Work through concepts of computational thinking, program structure, abstraction and the rest of the course with a tutor that knows it and quizzes you on the topics the assessments weight most heavily.

Start studying with Sia