build a computer from first principles