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.