Skip to content

A simple repository for learning and practicing C programming basics.

Notifications You must be signed in to change notification settings

vojmaly/learn_c

Repository files navigation

👨‍💻 Welcome to learn_c

Ready to master the C language from the ground up? Whether you're just starting out or diving deep into system-level wizardry, learn_c is your hands-on guide to becoming fluent in one of the most powerful programming languages ever created.

🧠 What’s Inside?

This repo is a curated journey through C programming, organized into progressive levels:

  • 🟢 Beginner – Syntax, variables, loops, functions, and more
  • 🟡 Intermediate – Pointers, memory, files, recursion, and debugging
  • 🔴 Advanced – Data structures, multithreading, system-level programming
  • 🟣 Expert –Topic-focused deep dives into system design, security, networking, and compiler internals (no code examples or exercises—just pure knowledge to explore)

🎯 Why You'll Love It

  • 📚 Clear, modular lessons with real code examples
  • 🧪 Ten exercises in each section to reinforce learning
  • 🛠️ Final project challenges to test your skills

So grab your compiler, crack open a terminal, and let’s get coding.
C ya in the code! 😉

Important

Not all exercise solutions are complete yet—I'm solving them as I learn, so this repo grows with me.
🕵 Spot a bug, typo, or something funky in the repo?
I’m learning as I build, so if you catch anything off, feel free to open an issue or drop a comment.
Let’s debug this journey together—because even C code deserves a second chance 😉

👨‍💻 You can find reference materials to learn at:

W3School
GNU C Manual
C Language Reference


🟢 00-Beginner Level

  1. Setting up the development environment (compiler, IDE)
  2. Basic syntax and structure of a C program
  3. Data types and variables
  4. Operators (arithmetic, relational, logical)
  5. Functions and function prototypes
  6. Control flow: if, else, switch
  7. Loops: for, while, do-while
  8. Input and output functions
  9. Scope and lifetime of variables
  10. Arrays and strings
  11. Pointers basics

🟡 01-Intermediate Level

  1. Advanced pointer operations
  2. Dynamic memory allocation (malloc, calloc, free)
  3. Structures and unions
  4. File handling (read/write binary and text files)
  5. Recursion
  6. Bitwise operations
  7. Enumerations
  8. Command-line arguments
  9. Header files and modular programming
  10. Error handling and debugging techniques

🔴 02-Advanced Level

  1. Linked lists (singly, doubly, circular)
  2. Stacks and queues
  3. Trees and binary search trees
  4. Sorting and searching algorithms
  5. Hash tables
  6. Memory management and leaks
  7. Function pointers and callbacks
  8. Macros and preprocessor directives
  9. Multithreading (POSIX threads)
  10. Interfacing with hardware or embedded systems
  11. Writing and using libraries
  12. Understanding compilation process (preprocessing, compiling, linking)
  13. Makefiles and build automation
  14. C with assembly (inline assembly)
  15. C in system-level programming (OS, drivers)

🟣 03-Expert Level


🎓 04-Final Projects by Level

Each level comes with fun, hands-on projects to help you apply what you've learned. From tiny tools to terminal adventures—these are your coding quests!


🟢 Beginner Level Projects – “C is for Curious!”

  1. 🧮 Tiny Calculator
    Your first math buddy! Add, subtract, multiply, and divide like a pro—with functions doing the heavy lifting.

  2. 🎯 Guess the Number
    The computer picks a number. You try to guess it. It taunts you with “higher” or “lower” until you win. Or rage quit.

  3. 📊 Grade-o-Matic
    Enter student scores, calculate averages, and hand out virtual gold stars (or gentle reminders to study harder).

  4. 🏧 ATM Simulator
    Simulate checking your balance, depositing imaginary cash, and withdrawing like a boss—with a menu-driven interface.

  5. 🌡️ Temp Transformer
    Convert between Celsius, Fahrenheit, and Kelvin. Because science is cool. Literally.


🟡 Intermediate Level Projects – “Pointers and Power-Ups!”

  1. 📇 Contact Book 2.0
    Store names, numbers, and secrets. Search, edit, and save them to a file—like a digital diary with structs.

  2. 🐍 Classic Snake Game
    Navigate your snake through the terminal jungle. Eat, grow, and avoid crashing—pure retro fun powered by C logic.

  3. 📦 Dynamic Array Manager
    Build your own resizable array using malloc and realloc. It’s like giving your variables superpowers.

  4. 🧠 Quiz Master
    Load questions from a file, track scores, and challenge your friends. Bonus points if you make it snarky.

  5. 📁 Text File Analyzer
    Feed it a file. It’ll count words, lines, letters, and maybe judge your writing habits.


🔴 Advanced Level Projects – “Code Like a Cyborg!”

  1. 📚 Library Management System
    Use linked lists to track books, borrowers, and overdue fines. No actual librarians were harmed.

  2. 🧩 Maze Solver
    Generate a maze and escape it using recursion or algorithms. Bonus: make it visual in the terminal!

  3. 🚀 Multithreaded Download Simulator
    Pretend to download files using threads. Watch your fake progress bars fly!

  4. 🧠 Custom Memory Allocator
    Build your own version of malloc. Manage memory like a boss. Just don’t leak it everywhere.

  5. 🛠️ Mini Compiler Front-End
    Create a lexer and parser for a tiny language. Teach your code to read code. Meta, right?

Releases

No releases published

Packages

No packages published