Let me explain the TOPIC-TYPE-NUMBER system with examples from your C++ Programming Fundamentals course.
The main idea is to give every coding exercise a unique, permanent identification number so that you can add new exercises anytime without renumbering existing exercises.
Consider this exercise ID:
LOOP
Topic
Loops
COD
Activity type
Coding Exercise
001
Unique number
First assigned ID
Each part has a specific purpose:
| Part | Meaning | Explanation |
|---|---|---|
LOOP |
Topic | Exercise belongs to Loops |
COD |
Type | It is a coding exercise |
001 |
Number | Unique exercise number within this topic and type |
Use consistent short codes for all C++ topics.
| Topic | Code |
|---|---|
| Introduction to C++ | INTRO |
| Basics | BAS |
| Input and Output | IO |
| Conditional Structures | COND |
| Loops | LOOP |
| Arrays | ARR |
| Functions | FUNC |
| Structures | STRUCT |
The second part identifies what students need to do.
| Code | Activity | Example |
|---|---|---|
COD |
Coding Exercise | Write a program |
OUT |
Output Prediction | Predict program output |
DBG |
Debugging | Find and fix errors |
MOD |
Code Modification | Modify existing code |
PRA |
General Practice | Solve practice questions |
PRO |
Problem Solving | Solve real-life problems |
For example:
LOOP-COD-001 LOOP-OUT-001 LOOP-DBG-001 LOOP-MOD-001
This is the most important part.
Suppose you initially create three exercises:
| Display order | Exercise ID | Title |
|---|---|---|
| 1 | LOOP-COD-001 |
Print numbers 1 to 10 |
| 2 | LOOP-COD-002 |
Print even numbers |
| 3 | LOOP-COD-003 |
Print multiplication table |
Now you want to add an exercise between the first and second exercises.
Do not renumber existing exercises. Assign the next available number.
| Display order | Exercise ID | Title |
|---|---|---|
| 1 | LOOP-COD-001 |
Print numbers 1 to 10 |
| 2 | LOOP-COD-004 |
Print odd numbers |
| 3 | LOOP-COD-002 |
Print even numbers |
| 4 | LOOP-COD-003 |
Print multiplication table |
Important rule
The exercise ID represents identity, not display order.
You can change the display order anytime without changing exercise IDs.
I recommend keeping filenames descriptive and avoiding sequential numbering.
Your existing folder structure could be:
docs/
├── loops/
│ ├── index.md
│ ├── for-loop.md
│ ├── while-loop.md
│ ├── do-while-loop.md
│ └── practice-and-progress/
│ ├── output-practice.md
│ ├── find-fix-mistakes.md
│ └── coding-exercises.md
│
└── solutions/
└── loops/
├── output-solutions.md
├── debugging-solutions.md
└── coding-exercise-solutions.md
Notice:
coding-exercises.md contains student exercises.coding-exercise-solutions.md contains their solutions.Student exercise file: loops/practice-and-progress/coding-exercises.md
# C++ Loops: Coding Exercises
## Beginner Level
### LOOP-COD-001: Print Numbers from 1 to 10
Write a C++ program to print numbers from 1 to 10.
### LOOP-COD-002: Print Even Numbers
Write a C++ program to print even numbers from 1 to 20.
### LOOP-COD-003: Multiplication Table
Write a C++ program to display the multiplication table of a number.
Solution file: solutions/loops/coding-exercise-solutions.md
# C++ Loops: Coding Exercise Solutions
## LOOP-COD-001: Print Numbers from 1 to 10
### Solution
```cpp
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 10; i++) {
cout << i << endl;
}
return 0;
}
```
## LOOP-COD-002: Print Even Numbers
### Solution
```cpp
#include <iostream>
using namespace std;
int main() {
for (int i = 2; i <= 20; i += 2) {
cout << i << endl;
}
return 0;
}
```
Both files use exactly the same exercise IDs.
I recommend adopting these rules as your permanent course documentation standard.
| Rule | Standard |
|---|---|
| Exercise ID format | TOPIC-TYPE-NUMBER |
| Number format | Three digits (001, 002, 003) |
| Numbering sequence | Separate for each topic and activity type |
| New exercise | Assign next unused number |
| Exercise deletion | Never reuse deleted IDs |
| Exercise reordering | Change display position only |
| Solution reference | Use the same exercise ID |
| Markdown filenames | Descriptive names, no sequential numbering |
| Exercise ID | Description |
|---|---|
BAS-COD-001 |
Declare and display variables |
IO-COD-001 |
Calculate sum of two numbers |
COND-COD-001 |
Check even or odd |
COND-OUT-001 |
Predict if-else output |
LOOP-COD-001 |
Print numbers 1 to 10 |
LOOP-OUT-001 |
Predict while-loop output |
LOOP-DBG-001 |
Fix errors in a for loop |
ARR-COD-001 |
Calculate array sum |
FUNC-COD-001 |
Create an addition function |
My suggestion: Adopt TOPIC-TYPE-NUMBER as the official identification standard for all your CS-303 Programming Fundamentals learning materials.
One more benefit: later, you can use these IDs to connect exercises with quizzes, lab tasks, assignments, solutions, and student progress tracking without changing the original IDs.