Perfect—1 hour/day is enough to build solid C skills in 3 weeks, if you’re consistent and focused. Here’s a custom 21-day C learning track, designed for 1 hour/day.
🗓️ C Learning Plan – 1 Hour/Day for 3 Weeks #
Each session includes:
- 🎓 Learning (30–40 min): Watch/read material
- 🧪 Practice (20–30 min): Code + test small exercises
🔹 Week 1: C Foundations & Syntax #
Day | Topic | Learn | Practice |
---|---|---|---|
1 | Setup & Hello World | CS50 Week 1 (first 20 min) | Write and compile hello.c with gcc |
2 | Variables, types, math | CS50 Week 1 (next 20–30 min) | Simple calculator (add/sub/mul/div) |
3 | Conditionals & if/else |
CS50 + Learn-C.org: Conditionals | Age checker / grade classifier |
4 | Loops | CS50 Week 1 (remaining) + Learn-C | Multiplication table with for loop |
5 | Functions | Learn-C: Functions | Build a BMI calculator function |
6 | Arrays & Strings | CS50 Week 2 (first 30 min) | Store 5 names in an array, print them |
7 | Review + Practice | Revisit key errors/confusions | Do 2–3 Exercism C exercises |
🔹 Week 2: Pointers, Memory, Files #
Day | Topic | Learn | Practice |
---|---|---|---|
8 | Pointers 101 | CS50 Week 3 (first 30 min) | Pointer basics: swap two ints using pointers |
9 | Arrays vs pointers | CS50 + Beej’s C Guide | Use pointer to walk through a char array |
10 | Dynamic memory (malloc ) |
Learn-C: Memory allocation | Create dynamic array of 5 strings |
11 | struct and typedef |
CS50 Week 3 (next 30 min) | Create a struct Person with name & age |
12 | File I/O basics | Learn-C: File I/O | Read a file line-by-line and print it |
13 | Debugging with gdb |
CMU GDB tutorial | Debug a crashing program you wrote |
14 | Review + Practice | Re-do a buggy/memory-leaky example | Use valgrind to check for leaks |
🔹 Week 3: Processes, Sockets (CSSE2310 Prep) #
Day | Topic | Learn | Practice |
---|---|---|---|
15 | Command-line args | CS50 Week 5 + Learn-C.org | Program that accepts file name via argv |
16 | Processes: fork() , exec() |
Beej’s Fork Guide | Write a program that forks and runs ls |
17 | Signals & wait() |
man pages + Beej | Parent waits for child before exiting |
18 | Sockets intro (TCP) | Beej’s Guide to Networking | Try basic server/client example |
19 | C string handling deep dive | CS50 string functions review | Implement a custom strlen() and strcpy() |
20 | Final project challenge | Combine: file I/O + malloc + struct | Save and load a contact list from file |
21 | Wrap-up + Troubleshooting | Fix 1–2 broken examples from previous days | Ask for help online or through me! |
✅ Bonus Tips #
- 💬 Ask questions! Get feedback via r/C_Programming, Stack Overflow, or here.
- 🧠 Take notes while debugging—those patterns repeat a lot.
- 🚨 Don’t skip pointers or memory management—they’re essential for CSSE2310.
last updated: