DEV Community

cz writes
cz writes

Posted on

6 months CSE - The System Suite

Hey, as mentioned in the previous post, we are gunning at project-based CSE learning.

The list of projects here are curated with the intention of depth in breadth. The breadth aspect is the number of fields covered and depth is the time frame and feature implementation in each project. Each aims to be challenging enough to bring forth the entirety of my focus and effort to complete within the given time frame.

With that, here is the set of projects to create in the next 6 months — The System Suite, as GPT named it:

(the following text was generated from GPT)


1. Compiler – Tiny BASIC → C++

Goal: Build a working compiler that translates a subset of Tiny BASIC into valid C++ source.

Focus Areas:

  • Lexical Analysis → Tokenizer
  • Parsing → Recursive descent parser / Pratt parser
  • AST (Abstract Syntax Tree) representation
  • Semantic checks, symbol tables
  • Code generation → Emit equivalent C++
  • (Optional) Simple optimizer or interpreter

Skills Gained:

Language theory, grammars, parsing, syntax trees, memory models, code generation.

Timeline: 3 weeks

Deliverable: Command-line compiler that takes .tiny → outputs .cpp runnable with g++.


2. Chip-8 Emulator / Game Interpreter

Goal: Simulate the Chip-8 virtual machine and run real Chip-8 games (like Space Invaders).

Focus Areas:

  • Memory map & stack emulation
  • Instruction cycle → Fetch-Decode-Execute
  • Opcode table implementation
  • Display rendering (graphics buffer)
  • Input handling
  • Timing (60 Hz refresh & delay timers)

Skills Gained:

Low-level CPU logic, emulation, binary operations, memory management, timing control.

Timeline: 3 weeks

Deliverable: GUI or terminal-based emulator that runs .ch8 game ROMs.


3. Mini Operating System

Goal: Create a minimal bootable or simulated OS kernel with multitasking and a command shell.

Focus Areas:

  • Bootloader basics (GRUB or BIOS)
  • Kernel initialization and loop
  • Interrupts & drivers (keyboard/timer)
  • Scheduler (round-robin / cooperative)
  • Memory management (heap/page allocator)
  • Shell or REPL for basic commands

Skills Gained:

Systems programming, kernel design, concurrency, hardware–software interface.

Timeline: 4–5 weeks

Deliverable: Bootable ISO or QEMU image that runs your kernel and accepts commands.


4. Distributed / Networked System – 4-Player Tic-Tac-Toe

Goal: Real-time online multiplayer game site.

Stack Options:

  • MERN (MongoDB + Express + React + Node.js)
  • or Go + Postgres + WebSockets

Focus Areas:

  • Real-time communication via WebSockets
  • Backend API (matchmaking, sessions, leaderboard)
  • Game logic & state synchronization
  • Authentication & authorization
  • Deployment (Render / Railway / VPS)

Skills Gained:

Networking, concurrency, backend architecture, database design, real-time systems.

Timeline: 3 weeks

Deliverable: Fully playable online multiplayer site with persistent scores.


5. Complex System – Video-Conferencing App (Zoom-Like)

Goal: Build a prototype for video/audio chat + text using WebRTC and a scalable backend.

Stack: Go backend or Node.js + WebRTC + React frontend

Focus Areas:

  • WebRTC peer-to-peer communication
  • STUN/TURN signaling servers
  • Real-time chat and media streams
  • Room management and authentication
  • Scaling via microservices or pub/sub

Skills Gained:

Distributed systems, concurrency at scale, multimedia streaming, scalable backend architecture.

Timeline: 4 weeks

Deliverable: Functional web app with room creation, video, audio, and chat features.


Ok, so there's the list, each of these were chosen with, at first the things I thought would be cool to make after hearing about them somewhere (it's wild for people outside the field how these could sound "cool" but as you delve deeper you begin to see and appreciate different things I guess) and second with the deep need to understand systems from the core. Some additional options like making a window manager, a blockchain, text editor etc. were strategically moved to a phase (maybe) after these 6 months due to the fact the currently chosen projects contribute more to the goal of understanding systems from the base up, than the ones avoided.


Note on Timeframe:

The timeframe chosen for each of these projects is and is not arbitrary. It's arbitrary in sense cause 6 months is an arbitrary goal-setting norm people chose but the 3 weeks for each project is a deliberate constraint cause it demands to make every day count. The 4th week is and is not a buffer in sense cause if in case you need a few more days to finish up you could have it. But ideally, it's for polishing up and finishing up any more posts that need to be made about the current project. If say you finish and wrap up one before the fourth week you could choose to spend the next 2 to 3 days slower and make any more polishing required or you could start reading up on the next project.

A gap of more than 3 days is something to be wary about and keep in mind no matter how much time you think you have it's a lesson to be learned that if you can do it today then it's always better to get it done today. (That's a note for me, everything is.)


Old School Ways:

The modern programmer uses 5 different GPT models to get his project done. Maybe this isn't true for you but it sure is true for a lot of upcoming graduates in the field. I can say this cause I see it in my peers.

I'm a romantic in that sense, the idea of a programmer building great software on his minimalistic IDE (Neovim) in his basement or in a coffee shop, that millions use is something that gets me all cozy and warm for some reason. AI and AI-integrated software, although useful, just feels clunky to me. The process of banging your head on the keyboard for the logic and coming up with a solution. The idea of being so skilled in your language that you can almost code out anything with it. The idea of having the ability to engineer and write great software on your own. These all are things I feel deeply about, so the use of AI for coding directly is entirely rejected for any of these projects. Referencing should be the only thing the AI does for you.

Maybe I'm clinging to a fantasy that's been far left behind. I don't think that I do think skill and hard skill matter and if that's not the case either way then also this is what feels right to me and this is how I'm gonna do it.

Top comments (0)