Computer Science 314 - Spring 2017
Assignment Guidelines


Release Date Due Date Topic
1 Wednesday, January 13 Thursday, February 2, 11pm Code camp, warm up assignment. (Individual Assignment)
2 Wednesday, February 1 Thursday, February 9, 11pm Creating a stand alone class - Mathematical Matrices (Individual Assignment)
3 Wednesday, February 8 Thursday, February 16, 11pm Implementing a program with multiple classes, using ArrayLists - The Name Surfer (Individual Assignment)
4 Wednesday, February 5 Thursday, March 2, 11pm Using Data Structures - Evil Hangman (Individual Assignment)
5 Wednesday, March 1 Thursday, March 9, 11pm Linked lists (Individual Assignment)
6 Wednesday, March 8 Thursday, March 23, 11pm Recursion (Pair Assignment)
7 Wednesday, March 22 Thursday, March 30, 11pm More recursion, Anagram Solver (Individual Assignment)
8 Wednesday, March 29 Thursday, April 6, 11pm Using lists, creating data structures - Implementing a Set class (Pair Assignment)
9 Wednesday, April 5 Thursday, April 20, 11pm Binary Search Trees (Individual Assignment)
10 Wednesday, April 19 Thursday, April 27, 11pm Huffman Coding (Pair Assignment)
11 Wednesday, April 26 Thursday, May 4, 11pm Graph Algorithms (Individual Assignment) No slip days may be used on assignment 11.

General assignment requirements.

Programming Assignments: Individual assignments are to be completed on your own. You may not share solution code or experiment code with other students or other programmers. Review the class policy on improper collaboration from the class syllabus and how this applies to individual assignments.

A few of the assignments may be done in pairs using a technique called pair programming (Read the paper on pair programming to understand how the technique works.). Turn in one solution  for the pair. (Submit the assignment to one partners turnin account.) Once you start working with a partner on an assignment you may not switch partners. If you do not wish to work with a partner after starting on an assignment you must both complete it individually. You must inform your TA(s) via email if you start working on an assignment with another person and decide to finish as individuals. You may not re-pair after starting the assignment with someone else. You may NOT start working on on your own and then start working with another person. When working on pair programming assignments you are expected to spend at least 80% of your time on the assignment working with your partner, together at one computer, taking terms typing, and navigating.

If you are retaking CS314 you must start from scratch on assignments unless you worked alone on the assignment in previous semesters and are working alone this semester. You may not reuse code from a partner from previous semesters and you may not use code you created in a previous semester with a partner this semester.

Programs will be written in Java, using the Java 2 Platform Standard Edition 8.0. See the software page for information on downloading and installing Java at home.

Assignments are due by 11pm on the due date.,

You have 6 free late (slip) days in 1 day units (1 second  to 24 hours = 1 day) for the semester.

Unless prohibited by the assignment handout, you may use any component of the language or standard library up to Java level 8.0. (The Java API).

Assignments must compile and run from the command line in the GDC Microlab. When testing and grading your program we will use the CS department Linux machines and the command line. We will not use any particular IDE. To ensure your programs work you can transfer your source code (.java files) to your CS department account and then compile and run them from the command line. See this page for more help.

Assignments will require you to turn in multiple files. You will turn in a single zip file that contains all required files. This must be a flat zip file with no internal directory structureAssignments that are not in the correct format or not named correctly will be penalized as described below.

Assignments must be turned in via Canvas and must be turned in under the correct assignment. You must turn in a file with the correct name and in the proper format.

If you do not follow the instructions and specifications for assignments (name, where to turn in, zip file format) you cause extra work for the graders and myself. As a student and potential software developer you must follow instructions and specifications. When you fail to follow instructions it causes you to become a special case.

Realize there are hundreds of students in this course and only a few TAs. We use scripts to streamline some aspects of grading. Failure to follow the assignment instructions and specifications causes these scripts to fail and the graders must spend more time on your submission. The following penalties are in place because there must be consequences for failure to follow instructions. Please read this account of a student who has seen the issue from both sides.

If you fail to follow the instructions for turning in assignments you will likely lose all points. Specific penalties for failure to follow instructions and specifications on assignments:

Assignments grades are not scaled to effort or time spent working on them. (You may spend a large amount of time working on an assignment and still lose many points because your program is not correct.) The programs are not graded on a strictly linear scale. Points are deducted for failed test cases, poor style, poor efficiency, lack of necessary comments, convoluted algorithms, lack of student provided test cases, lack of answers to questions regarding the assignment, and other reasons deemed appropriate by the instructor.

Assignments will be checked for plagiarism and copying using Moss. You may discuss high level design issues with your fellow students, but sharing algorithms or code or obtaining solutions from another source constitutes academic dishonesty and will result in an F for the course. Review the class policy on cheating.

The teaching staff will grade, comment, return, and post the grade for an assignment within 6 days. If you believe an error was made in grading you must contact your grader within 5 days after grades are posted.  (This isn't a weekend bazaar. If there is an error in your grade you have one week to contact your grader. We won't go back at the end of the term to look at an assignment from early in the term.) You are responsible for contacting your grader if you assignment is not graded in a timely and accurate fashion.

All grade disputes must be made in writing by email to the grader with supporting evidence within 5 days of grades being posted. A regrade will result in the entire assignment being re-graded and the score could be lower than the original score. Note, do not use this option to quibble with your TA over points.

The teaching staff welcomes constructive feedback and comments about the course and assignments, and we will correct legitimate grading errors that are identified in a timely fashion, but whining is counter-productive and will only irritate myself and the TAs.


Assignments will be checked for correctness with more tests generated by the instructional  staff. Your assignment may pass all the provided tests and still be incorrect. Grading test cases will not be published. If you would like to see the test specific test cases your code failed on you must meet with your TA during their office hours to see the test cases.

Design, Program Hygiene, Style, and Documentation

Goal: We have program hygiene guidelines so we have readable, maintainable code. Some guidelines are tens of pages or more. Out goal is to encourage good program hygiene, without being overly prescriptive.

Lots of good tips and advice in Clean Code by "Uncle Bob".

Efficiency: Worry about this last, but your program should run as fast as possible and use as little memory as possible within the constraints of the assignment. Some tests will be based on the length of time it takes your solution to complete and you may fail a test if your solution takes too long.

To the CS 314 home page