Skip to content

πŸŽ“ Complete C programming course from zero to expert. Learn system-level programming, memory management, data structures, and build real applications. Perfect for beginners and intermediate developers.

Notifications You must be signed in to change notification settings

AlejandroOliva/c-course

Repository files navigation

πŸŽ“ Complete C Course - From Zero to Expert

Welcome to the complete C programming course! This course will take you from basic concepts to building system-level applications and understanding low-level programming.

πŸ“š Course Index

  • What is C?
  • Why C?
  • Installing a C compiler
  • Your first C program
  • Compilation process
  • Data types and variables
  • Input/output operations
  • Operators and expressions
  • Control flow (if, switch, loops)
  • Functions
  • Arrays and strings
  • Pointers and memory addresses
  • Structures and unions
  • Function pointers
  • Preprocessor directives
  • Stack vs Heap memory
  • Dynamic memory allocation
  • Memory leaks and debugging
  • Best practices
  • Working with arrays dynamically
  • File operations
  • Error handling
  • Command line arguments
  • System calls basics
  • Process management
  • Linked lists
  • Stacks and queues
  • Trees and graphs
  • Sorting algorithms
  • Searching algorithms
  • Progressive exercises
  • Real projects
  • Commented solutions

πŸš€ How to Use This Course

  1. Read each module in order - The course is designed to be progressive
  2. Practice each example - Compile and run all code examples
  3. Do the exercises - Practice is fundamental
  4. Get extra practice - Use platforms like HackerRank, LeetCode, or Codewars
  5. Experiment - Don't be afraid to try variations and build your own projects

πŸ“‹ Prerequisites

  • Basic programming knowledge (any language)
  • Command line/terminal familiarity
  • GCC compiler or Clang installed (see Module 1 for installation)
    • Recommended: Use package managers like apt, yum, or brew
  • A text editor or IDE (VS Code, Vim, Emacs, etc.)
  • Willingness to learn 😊

🎯 Course Objective

Upon completing this course, you will be able to:

  • βœ… Write C code confidently
  • βœ… Understand memory management
  • βœ… Work with pointers and data structures
  • βœ… Build system-level applications
  • βœ… Debug C programs effectively
  • βœ… Apply low-level programming principles
  • βœ… Create efficient algorithms and data structures

πŸ“– Let's Begin

πŸ‘‰ Go to Module 1: Introduction to C


πŸ“š Reference Guides

  • START-HERE.md - Complete start guide with study plans
  • QUICK-GUIDE.md - Syntax and command cheat sheet
  • ADDITIONAL-RESOURCES.md - Links, books, videos, community

πŸ’» Practical Examples

The examples/ directory contains ready-to-run projects:

  1. Calculator CLI (examples/01-calculator/)
  2. File Manager (examples/02-file-manager/)
  3. Data Structure Library (examples/03-data-structures/)

Remember that practice is the key to learning! Don't hesitate to experiment and make mistakes.

πŸ”§ Compilation Commands

# Compile a single file
gcc program.c -o program

# Compile with debugging info
gcc -g program.c -o program

# Compile with warnings
gcc -Wall -Wextra program.c -o program

# Compile multiple files
gcc file1.c file2.c -o program

πŸ“– Additional Resources

  • Manual Pages: Use man command for C library functions
  • GDB Debugger: Essential tool for debugging C programs
  • Valgrind: Memory leak detection and profiling
  • Make: Build automation tool

Course created with ❀️ for aspiring C programmers

About

πŸŽ“ Complete C programming course from zero to expert. Learn system-level programming, memory management, data structures, and build real applications. Perfect for beginners and intermediate developers.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published