Main project for CMPS104a at UCSC