Learning Low-Level Programming
A beginner C course focused on how programs run closer to the computer, covering compiling, types, input, decisions, loops, arrays, strings, and a state tracker.
Learning Low-Level Programming
Welcome to Learning Low-Level Programming.
This course uses C to introduce ideas that are closer to how computers store and run programs. The lessons move slowly because small details matter in C.
Each module has two main files:
README.md: the lesson instructions- a source file you will run and edit
The best way to learn is simple:
- Open the module folder.
- Read the
README.md. - Open the source file.
- Run the code.
- Change something small.
- Run it again and notice what changed.
Table of Contents
- What you will learn
- How to use this course
- How to run a module
- Modules overview
- Final project
- Tips for learning
- Wrap up
What you will learn
By the end of this course, you will have practiced:
- printing your first C program
- compiling source code
- storing typed values
- reading simple input
- making decisions
- repeating work and reusing code
- working with groups of values
- building a small state tracker
- building a small final project
That is a real foundation.
You will not know every part yet, and that is completely fine.
How to use this course
Start with Module 1 and go in order.
Each module builds on the one before it. Try not to rush. It is better to understand a small piece well than to fly through everything and feel lost.
How to run a module
Open the terminal from the learning-low-level-programming folder.
For example:
gcc 01_welcome_to_c/main.c -o 01_welcome_to_c/main
./01_welcome_to_c/main
For another module, change the folder name in the command.
Modules overview
Module 1: Welcome to C
You will practice printing your first C program.
This module stays small on purpose. Run it, read it, change one thing, and run it again.
Module 2: Build and Run
You will practice compiling source code.
This module stays small on purpose. Run it, read it, change one thing, and run it again.
Module 3: Variables and Types
You will practice storing typed values.
This module stays small on purpose. Run it, read it, change one thing, and run it again.
Module 4: Input and Output
You will practice reading simple input.
This module stays small on purpose. Run it, read it, change one thing, and run it again.
Module 5: Conditionals
You will practice making decisions.
This module stays small on purpose. Run it, read it, change one thing, and run it again.
Module 6: Loops and Functions
You will practice repeating work and reusing code.
This module stays small on purpose. Run it, read it, change one thing, and run it again.
Module 7: Arrays and Strings
You will practice working with groups of values.
This module stays small on purpose. Run it, read it, change one thing, and run it again.
Final Project: State Tracker
You will practice building a small state tracker.
This module stays small on purpose. Run it, read it, change one thing, and run it again.
Final project
Final Project: State Tracker
The final project is not about being perfect.
It is about putting the pieces together and seeing that you can build something real.
Tips for learning
Run the code often.
Change one thing at a time.
If an error appears, do not panic. Errors are part of learning. Check the line number, read the message, and compare your code to the example.
After testing C modules, delete the compiled main file so only source files remain.
Wrap up
This course starts small on purpose. By the end, you will have built a real starter project using the ideas you practiced along the way.