A collection of C programming projects designed for beginners to learn and practice various programming concepts, from basic algorithms to network programming. Each project is self-contained and includes its own documentation and build system.
A cryptographic hash function implementation that demonstrates:
- Bit manipulation
 - Complex algorithms
 - Memory management
 - File I/O operations
 
2. HTTP Server
A basic HTTP server implementation that covers:
- Socket programming
 - HTTP protocol basics
 - File serving
 - Network communication
 
A simple UDP-based communication system that teaches:
- UDP socket programming
 - Client-server architecture
 - Network protocols
 - Message exchange
 
4. Port Scanner
A network diagnostic tool that demonstrates:
- TCP socket programming
 - Network scanning techniques
 - Error handling
 - Command-line argument parsing
 
A custom ping utility that covers:
- ICMP protocol
 - Raw socket programming
 - Network diagnostics
 - Time measurement
 
6. Tic-Tac-Toe
A classic game implementation that teaches:
- Multiplayer game server -Socket programming
 - Game logic
 - User input handling
 
7. Chat System
A real-time chat application that demonstrates:
- TCP socket programming
 - Multi-threading
 - Real-time communication
 - Client-server architecture
 
A simple compiler front-end component that demonstrates:
- Tokenization of source code
 - Parsing techniques
 - Compiler design principles
 - String manipulation
 
A simple compiler that takes arithmetic expressions as input and generates assembly-like code:
- Lexical analysis (tokenization)
 - Parsing and evaluation of expressions
 - Assembly code generation
 - Compiler construction fundamentals
 
10. Asteroid Game
A terminal-based game where you control a ship to avoid falling asteroids:
- Game state management
 - User input handling
 - Terminal-based graphics
 - Real-time gameplay mechanics
 - Simple collision detection
 
Each project in this repository is designed to be self-contained and includes:
- Source code
 - Makefile or CMake configuration
 - README with build and usage instructions
 - Implementation details
 
To get started with any project:
- Navigate to the project directory
 - Read the project's README.md
 - Follow the build instructions
 - Run the program as described
 
- GCC compiler (for C projects)
 - G++ compiler (for C++ projects)
 - Make utility
 - CMake (for C/C++ projects)
 - Basic understanding of C/C++ programming
 - For network projects: understanding of basic networking concepts
 
To get started with C programming, I recommend this comprehensive book: The C Programming Language - A must-have resource for learning C programming fundamentals and best practices.
These projects are arranged in order of increasing complexity:
- Start with Tic-Tac-Toe for basic programming concepts
 - Move to SHA-512 for algorithm implementation
 - Try the UDP Server-Client for basic networking
 - Progress to HTTP Server and Chat System for more complex networking
 - Finally, explore Port Scanner and Ping for advanced networking concepts
 
Feel free to:
- Report bugs
 - Suggest improvements
 - Add new features
 - Create new projects
 - Improve documentation
 
This project is open source and available for learning purposes.
Some network-related projects (Port Scanner, Ping) require root/administrator privileges to run due to the use of raw sockets. Always use these tools responsibly and only on networks you have permission to test.
