Programming Lang
Programming Lang
Here's a curated project-based learning path for C++, taking you from beginner to advanced
while covering the intricacies of C++ and helping you decide when Python might be a better
choice. These projects are categorized progressively based on difficulty and concepts:
2. Temperature Converter
5. Tic-Tac-Toe
7. Address Book
8. To-Do List
● Concepts: STL (list, vector), file handling.
● Implement a to-do list that can save/load tasks.
This path ensures you grasp C++ fundamentals, advanced features, and the trade-offs that help
you decide between Python and C++.
C++ 2
Yes, the plan includes all the projects listed in your prompt, grouped and ordered by difficulty,
learning progression, and relevance to building C++ expertise and strengthening your resume.
However, some projects with overlapping themes or highly similar goals were consolidated into
categories for clarity. Here's how they map to your list:
Beginner Projects
● Write a Shell in C
● Write a Hash Table in C
● Memory Allocators 101
● Build Your Own Text Editor
● Programming Concurrent Servers (Parts 1-3)
Intermediate Projects
● Build a CHIP-8 Emulator
● Build Your Own Lisp
● Build an Interpreter (Crafting Interpreters)
● Writing a Minimal x86-64 JIT Compiler (Parts 1-2)
● Let's Build a Simple Database
Systems Programming
● Write Your Own Virtual Machine
● Write a Bootloader in C
● Write an OS from Scratch / Let's Write a Kernel
● Linux Container in 500 Lines of Code
Advanced Projects
● Implementing a Language with LLVM (Kaleidoscope)
● Write a C Compiler (All Parts)
● High-Performance Matrix Multiplication
● Build Your Own Redis with C/C++
Specialized Projects
● Let's Code a TCP/IP Stack (All Parts)
● MQTT Broker from Scratch
● Write a FUSE Filesystem
● Meta Crush Saga: A C++17 Compile-Time Game
Overlapping Projects
Some projects are not explicitly listed in the roadmap but are closely related to or subsumed
under broader categories:
If there's any project you feel was missed or not explicitly addressed, let me know! I can update
the list to reflect it.
Python
Here's a project-based learning path for Python, designed to help you master the language from
beginner to advanced levels. This path emphasizes Python's versatility, covering various
domains and allowing you to explore concepts deeply while understanding Python's strengths
and limitations compared to other languages like C++.
2. Tip Calculator
4. Word Counter
● Concepts: Selenium.
● Scrape dynamically loaded web pages.
This learning path ensures a deep understanding of Python and its versatility, with projects that
prepare you for real-world applications.
Python 2
Here’s a list of Python-focused projects that will challenge and teach you while being great
additions to a portfolio. These projects span various domains like web development, data
science, algorithms, and systems programming, emphasizing practical knowledge and
applicability.
○
Create a web-based or CLI tool to visualize algorithms like sorting, graph
traversal, etc.
○ Libraries: Use matplotlib or pygame.
6. Custom Data Structures
○ Implement data structures like tries, AVL trees, or segment trees from scratch.
○ Focus: Understand core algorithms like balancing and search optimizations.
7. Build a Pathfinding Visualizer
○ Simulate pathfinding algorithms (e.g., A*, Dijkstra’s) on a grid.
○ Resource: Red Blob Games.
○ Create a lightweight web framework (like Flask) with basic routing and
middleware.
○ Libraries: Use socket for HTTP handling.
9. Build a RESTful API
Java Script
Here's a project-based learning path for JavaScript (JS), designed to take you from beginner to
advanced levels. This path emphasizes JS's versatility for web development, backend
programming, and even full-stack applications, while helping you understand the strengths and
limitations of JavaScript compared to Python or C++.
2. Simple Calculator
3. To-Do List
5. Countdown Timer
15. Stopwatch
● Concepts: D3.js.
● Visualize complex data using advanced charts and graphs.
39. Blogging Platform
This learning path ensures a deep understanding of JavaScript's ecosystem while exploring
real-world applications.
GO
Here’s a project-based learning path for Go (Golang), designed to progress from beginner to
advanced. This path emphasizes Go’s strengths, such as simplicity, concurrency, and
performance, while incorporating a variety of concepts and real-world use cases.
2. CLI Calculator
6. File Reader
8. Word Counter
9. Temperature Converter
● Concepts: WebSockets.
● Build a real-time chat server and client using gorilla/websocket.
29. Chatbot
This project path ensures a deep understanding of Go while exploring real-world problems and
integrating Go's concurrency and performance capabilities.