Skip to content

A collection of projects developed for ECEG431, following the Nand to Tetris course

Notifications You must be signed in to change notification settings

Swimotter/ECEG431

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Course Progress GitHub language count github-top-lang

ECEG 431 | Computer Systems Engineering

Course Overview

This course explores the fundamental ideas and skills required for advanced computer engineering. Students gain understanding of the core components required in the construction of computing devices, from the low level logic gates, more complex circuitry (i.e. CPUs), machine language design, assemblers, virtual machines, high level programming languages, compilers, and all the way to operating systems.

Learning Approach

This course follows the acclaimed Nand2Tetris projects and acompanying book, The Elements of Computing Systems, providing a complete journey from basic logic gates to a fully functional computer system. Students build every component from scratch, creating a unified understanding of how software and hardware work together.

Part I: Hardware

Projects 1-6: The Physical Computer

Project 1: Boolean Logic

  • Implement fundamental logic gates (AND, OR, NOT, XOR, MUX, DMUX)

Project 2: Boolean Arithmetic

  • Design half-adders, full-adders, and multi-bit adders
  • Construct an Arithmetic Logic Unit (ALU)

Project 3: Memory

  • Build registers
  • Create RAM units
  • Implement the program counter

Project 4: Machine Language

  • Learn the Hack assembly language
  • Write programs that perform calculations and do I/O

Project 5: Computer Architecture

  • Integrate ALU, memory, and control logic into a complete CPU
  • Build a Hack computer

Project 6: Assembler

  • Create a two-pass assembler
  • Translate symbolic assembly code to binary machine language

Part II: Software

Projects 7-12: The Software Ecosystem

Project 7: Virtual Machine I - Processing

  • Implement a VM translator for a stack based VM
  • Handle memory segment operations

Project 8: Virtual Machine II - Control

  • Add support for branching and function calls
  • Implement program flow control
  • Handle complex program structures

Project 9: High-Level Language

  • Learn the Jack programming language
  • Understand object-oriented concepts
  • Write sophisticated applications in a high-level language

Project 10: Compiler I - Syntax Analysis

  • Build a tokenizer and parser
  • Generate XML parse trees
  • Implement syntax analysis for the Jack language

Project 11: Compiler II - Code Generation

  • Complete the Jack compiler
  • Generate VM code from parsed syntax trees
  • Understand symbol tables and scope management

Project 12: Operating System

  • Implement core OS functionality: Math, Memory, Screen, Keyboard
  • Create system libraries and APIs
  • Understand how applications interact with hardware

Technologies & Tools

  • HDL (Hardware Description Language) for hardware design
  • Hack Assembly Language for low-level programming
  • Jack Programming Language for application development
  • Custom VM Architecture for intermediate code representation
  • C++ Programming for file processing (Projects 6-8)

About

A collection of projects developed for ECEG431, following the Nand to Tetris course

Resources

Stars

Watchers

Forks