A comprehensive, practical guide to C programming from absolute basics to advanced concepts. Created by a student, for students.
This repository contains a complete C programming education series based on university-level coursework (CMPE113 & CMPE114). It's designed to take you from your very first "Hello, World!" to understanding pointers, memory management, and file I/O.
What makes this special?
- Written from a student's perspective with real struggles in mind 🥸
- Consistent, clear structure across all sections
- Hundreds of tested, working code examples
- Addresses common beginner mistakes and confusions
- Completely free and open to all
If you want to examine some examples, you can also view my other repo: https://github.com/demirium/basic-c-exercises
Don't worry, it's much more organised now hihihi :D
This course is divided into two main sections:
Level: Beginner
Prerequisites: None
Topics Covered:
- Introduction to C programming
- Variables and data types
- User input with scanf
- Conditional statements (if/else, switch)
- Loops (for, while)
- Standard libraries (math.h, stdlib.h)
Start here if: You've never programmed in C before, or need a solid foundation in the basics.
Level: Intermediate to Advanced
Prerequisites: CMPE113 or equivalent knowledge
Topics Covered:
- Pointers and memory addresses
- Arrays (single and multi-dimensional)
- String manipulation
- Structures and custom types
- File I/O and processing
Start here if: You know basic C syntax and are ready for pointers, arrays, and memory management.
- 🆕 Complete beginners wanting to learn C from scratch
- 📚 University students taking introductory C programming courses
- 🔄 Self-learners seeking a structured curriculum
- 👨🏫 Educators looking for teaching materials and examples
- 💼 Developers refreshing their C fundamentalss
- 🎮 Aspiring game/systems programmers building a strong foundation
Never programmed before?
→ Start with CMPE113 from the beginning
Know basic programming concepts?
→ Skim CMPE113 and move to CMPE114 when ready
Already know C basics?
→ Jump straight to CMPE114
You'll need:
- A C compiler (GCC recommended)
- A text editor or IDE (VS Code, Code::Blocks, Dev-C++, or Xcode for Mac)
- Terminal/Command Prompt access
Installation guides:
- Windows: Install MinGW-w64 or use WSL
- Mac: Install Xcode Command Line Tools
- Linux: GCC is usually pre-installed, or use
sudo apt install gcc
(I recommend using VSCode with the C/C++ extension. If you are a MacOS user, you can use Xcode. This is the best way to get started with C programming.)
Each section has:
- 📖 A comprehensive README.md explaining concepts
- 💻 Multiple example files (ex-1.c, ex-2.c, etc.)
- 🎯 A larger practical example/project
- 🧪 Practice suggestions
C-Projects/
│
├── CMPE113/ # Beginner: Fundamentals
│ ├── 1 - Introduction/
│ ├── 2 - Variables/
│ ├── 3 - Getting Inputs/
│ ├── 4 - If Else/
│ ├── 5 - Switch Case/
│ ├── 6 - For Loop/
│ ├── 7 - While Loop/
│ ├── 8 - Math Library/
│ └── 9 - Stdlib Basics/
│
├── CMPE114/ # Advanced: Pointers, Arrays, Files
│ ├── 1 - Pointers/
│ ├── 2 - Arrays/
│ ├── 3 - One Dimensional Arrays/
│ ├── 4 - Second Dimensional Arrays/
│ ├── 5 - Strings/
│ ├── 6 - Structures/
│ └── 7 - File Processing/
│
├── Homeworks/ # Practice problems and assignments
└── Lab Exam Questions/ # Additional practice materials
Each section includes:
- ✅ Clear explanations - Concepts broken down into digestible pieces
- ✅ Multiple examples - From simple to complex
- ✅ Common mistakes - Learn from typical errors
- ✅ Practice suggestions - Ideas for hands-on learning
- ✅ FAQ sections - Answers to frequent questions
- ✅ Real-world applications - Practical uses of each concept
Weeks 1-2: CMPE113 sections 1-3 (Introduction, Variables, Inputs)
Weeks 3-4: CMPE113 sections 4-5 (Conditionals, Switch)
Weeks 5-6: CMPE113 sections 6-7 (Loops)
Weeks 7-8: CMPE113 sections 8-9 (Libraries) + Build a project!
Weeks 9-10: CMPE114 sections 1-3 (Pointers, Arrays)
Weeks 11-12: CMPE114 sections 4-7 (Advanced arrays, Strings, Structs, Files)
Weeks 1-2: Review CMPE113, focus on areas you're weak in
Weeks 3-4: CMPE114 Pointers and Arrays (take your time here!)
Weeks 5-6: CMPE114 Strings and Structures
Weeks 7-8: CMPE114 File I/O + Build a complete project
This course aims to:
- Build solid fundamentals - No shortcuts, proper understanding from day one!
- Explain the "why" - Not just "how" but "why does this work this way?"
- Address real struggles - Focus on concepts that actually confuse students
- Encourage experimentation - Breaking code teaches as much as working code
- Prepare for real use - Skills directly applicable to real projects
- 📝 Type code yourself - Don't just read, practice! Practice is everything hihihi.
- 🐛 Debug actively - Use print statements and debuggers
- 🧪 Experiment freely - Modify examples to see what happens
- 📖 Read error messages - They're trying to help you!
- 🤝 Collaborate - Discuss concepts with study partners
- ⏰ Take breaks - Complex topics need time to sink in
- 🔄 Review regularly - Revisit earlier sections to reinforce learning
This is an open educational resource! Contributions are welcome:
- 🐛 Report bugs or typos
- 💡 Suggest clearer explanations
- 📝 Add more examples or exercises
- 🌍 Translate materials to other languages
- ⭐ Star the repo if you find it helpful!
This project exists thanks to:
- My own journey through CMPE113 and CMPE114
- Classmates who studied and struggled alongside me
- The global C programming community
- Everyone who believes quality education should be accessible to all
- You, for choosing to learn!
Found this helpful? Have questions or suggestions?
- Open an issue on GitHub
- Share with others who might benefit
- Let me know what worked and what didn't
Your feedback helps make this resource better for everyone! 🌟
Start Your Journey Today! 🚀
Whether you're pursuing a career in programming, building projects for fun, or just curious about how computers work, mastering C gives you a superpower that never goes out of style.
Author: Tolga
Courses: CMPE113 (Complete ✅) | CMPE114 (In Progress 🚧)
Last Updated: January 2026
⭐ Star this repo if it helps you learn!