CSCI 104 - Summer 2016 Data Structures and Object Oriented Design

Assignments

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 3 assignments will contains pieces that contribute toward a class project, which is to build a simpler version of a microblog site 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.

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 Recursion Fri. May 27, 2015 @ 11:59AM (PST)
HW02 Linked Lists and Stacks Fri. June 3, 2015 @ 11:59PM (PST)
HW03 Copy Constructors, Operator Overloading and STL Fri. June 10, 2015 @ 11:59PM (PST)
HW04 Project, Part 1 (Twitter) Sun. June 19, 2015 @ 11:59PM (PST)
HW05 Project, Part 2 (Qt) Tues. June 28, 2015 @ 11:59PM (PST)
HW06 Project, Part 3 (Sorting & Connected Components) Tues. July 5, 2015 @ 11:59PM (PST)
HW07 Map and Set Implementations Wed. July 13, 2015 @ 11:59AM (PST)
HW08 Project, Part 4 (Heaps and Maps) Sun. July 17, 2015 @ 11:59PM (PST)

Submission Instructions

In order to properly submit your assignment, please follow the course submission instructions. Here is a quick link to the late submission form

Homework Policies

For each assignment, a precise time will be specified (usually at 11:59.59pm) on the due date. Submission must be made correctly via your github account. Each student has 3 grace days they can use over the course of the semester. A maximum of 1 grace days can be used on a single assignment. Once you have used your grace days, any late submission will not be accepted and graded as a 0.

To use a late day you MUST follow the submission policy outlined in our late submission instructions to alert the course staff to fetch your late submission.

We will grade your assignments using gcc/g++ at the command line in the virtual machine we provide for the course. You are free to use other compilers or IDEs to develop your code, but in the end, it has to work with g++ in the virtual machine. You probably want to test that it does before submitting.

Grade Disputes

We will work hard to post HW scores and feedback within 2 weeks of the homework's due date. Exams will typically be graded within at most a few days of the exam date.

Any disputes with posted grades must be raised within 2 weeks of the score posting. (If your schedule does not permit a detailed request within 2 weeks, you should register a short note that you plan to dispute, and then submit the dispute when you are ready.) Notice that any regrade request will result in us trying to give the fairest possible grade to you, which could be higher or lower than the one you received originally.

To raise an issue with your exam score, you should come to the office hours of the professor teaching your section. If you cannot make posted office hours, schedule one by e-mail. The TAs will not be allowed to grant regrades on exams.

Since we want to be able to make sure we can address all of your homework-related concerns as easily as possible, please follow the below policy for creating homework regrade requests:

  1. You will receive a grade report for your homework or project on GitHub.
  2. If you have questions, you should assign your grader to the issue, and then describe your questions in the comments for this issue.
  3. If the grader and you cannot resolve the issue, the grader will reassign the issue to one of the TAs.
  4. The TA will then review your homework and make any necessary adjustments, up or down.

Final settlement will be, if necessary, decided by the professors.

Homework Grading Policies

For each assignment, a precise time will be specified (usually at 11:59.59pm) on the due date. Submission must be made correctly via your github account. After you believe you have submitted, you should always clone your repo into a new folder and make sure everything you think you submitted was cloned into this new folder. Then compile your code in this new folder and run it to ensure we will also be able to compile and run your code.

Grading Environment

We will grade your assignments using gcc/g++ at the command line in the virtual machine we provide for the course. You are free to use other compilers or IDEs to develop your code, but in the end, it has to work with g++ in the virtual machine. You probably want to test that it does before submitting.

Assignment Rubric

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

Academic Integrity

The official language on academic integrity is on the syllabus . Here is a little more clarification.

Practically speaking, it is important to be able to seek out helpful information and collaborate, yet it is clearly wrong to pass off work done (even just in part) by others as your own. When in doubt whether some behavior you are considering is appropriate, feel free to consult with us (course staff) before engaging in it. As a general guideline, imagine that your professor is looking over your shoulder, but can't read your mind. Would it look to him like you're legitimately seeking to understand things, or trying to get a better grade than your own work warrants? That should guide your behavior.

A few things are clearly fine, while a few are clearly not fine. We are listing some of the most relevant ones here: