/nand2tetris

Coursera nand2tetris projects

Primary LanguagePython

Build a Modern Computer from First Principles: Nand to Tetris

Summary

Having been a data analyst for a while, even though I always play around programming languages like R or Python3, I found that I could not entitle myself computer "scientist" if I don't know how a computer works with only 0 and 1. Therefore, I started the journey of Nand2Tetris course on Coursera. It took me 4 months to finish both part 1 and 2 of the course (with one month taking off and project 9 skipped). It's difficult to me, but it's totally worth it. Now, I know what I need to make a CPU, how virtual machines and os handle the memory allocation, and what on earth "stack-overflow" means!

my_project

  • Only the HDL, assembly, VM, and Jack language codes written by myself are included
  • The original course materials were not uploaded

some helper functions to track the project working progress

  • track_progress.py
    • argument: nand2tetris project directory
    • search for all the files in the current directory
    • generate a csv file that record the "created_time" and "last_modified_time" of all files
  • track_progress.R
    • argument: csv generated by track_progress.py, course start time in "yyyy-mm" format
    • use "created_time" and "last_modified_time" to find project files that are modified by the users, instead of the original course creators
    • look for when a project was finished according to provided argument and "last_modified_time"
    • generate a working progress plot
  • track_progress.sh
    • bash commands that execute the above mentioned scripts