CSCI 104 – Summer 2014 Data Structures and Object Oriented Design


Homework will be assigned roughly once per week. It will be graded, and require substantial work. The average student should expect to spend about 15 hours per homework. Homeworks will typically contain a mix of programming exercises and "theory" questions about data structures and their implementation. Roughly every third homework will contain a piece that contributes toward the class project, which is to build a simpler version of Google from scratch. As the project progresses, students may find it necessary to revisit and improve their earlier solutions, so good coding practices and documentation are strongly encouraged.

For detailed information on late submission policies, grace periods, and similar questions about assignments, check the grading page.

Each student will receive a private code repository on the course's GitHub Organization to use it for the development and submission of all assignments. You will be using the git source code management tool to maintain your homework code.

HW Schedule

HW Topic Due Date
HW01 Course Overview and Review Thurs. May 29, 2014 @ 11:59AM (PST)
HW02 Recursion and Linked Lists Thurs. June 12, 2014 @ 11:59PM (PST)
HW03 List and Map ADTs Thurs. June 19, 2014 @ 11:59PM (PST)
HW04 Project, Part 1 Tues. July 1, 2014 @ 11:59PM (PST)
HW05 Project, Part 2 Sun. July 13, 2014 @ 11:59PM (PST)
HW06 Stacks and Sorting Thurs. July 17, 2014 @ 11:59PM (PST)
HW07 Project, Part 3 (Heaps and Maps) Fri. July 25, 2014 @ 11:59PM (PST)
HW08 Map and Set Implementations Fri. August 1, 2014 @ 11:59PM (PST)

Submission Instructions

In order to properly submit your assignment, please follow the course submission instructions


Each homework assignment generally asks for a set of features to be implemented in C++. It also usually asks students to specifically either use or not use some STL classes. Based on these requirements, each assignment is going to have its own grading rubric. We also have a general rubric which you need to consider for all assignments; this captures issues that will be common to most of your projects, like quality of your code.

General Rubric

Coding problems

Multiple choice problems