Building a Modern Computer from First Principals