Computer Science 314 - Fall 2025
Programming Assignment Schedule and Requirments
Program
Number
Approximate Release Date Due Date
Always due by 11 pm
Topic
1 Thursday, August 20 Thursday, September 4 Code camp, warm up assignment. (Individual Assignment)
2 Wednesday, September 3 Thursday, September 11 Creating a stand-alone class - Mathematical Matrices (Individual Assignment)
3 Wednesday, September 10 Thursday, September 18 Implementing a program with multiple classes, using ArrayLists - The Name Surfer (Individual Assignment)
4 Wednesday, September 24 Thursday, October 2 Using Data Structures - Evil Hangman (Individual Assignment)
5 Wednesday, October 1 Thursday, October 9 Linked lists (Individual Assignment)
6 Wednesday, October 8 Thursday, October 16 Recursion (Pair Assignment)
7 Wednesday, October 15 Thursday, October 23 More recursion, Anagram Solver (Individual Assignment)
8 Wednesday, October 29 Thursday, November 6 Abstract Classes, Inheritance, Interfaces, Iterators, Polymorphism, Sorting, Searching, Using Lists - Implementing Set classes(Pair Assignment)
9 Wednesday, November 5 Thursday, November 13 Binary Search Trees
10 Wednesday, November 12 Thursday, November 20 Huffman Coding (Pair Assignment)
11 Wednesday, November 19 Thursday, December 4 Graph Algorithms

General assignment requirements.

Individual assignments are to be completed on your own. You may not share solution code or experiment code with other students. You may not use solutions obtained from the web or generative AI chatbots such as chatGPT. Review the class policy on improper collaboration from the class syllabus and how this applies to individual 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 or your program hygiene does not follow the CS314 standards. The programs are not graded on a strictly linear scale. Points are deducted for not following the general assignment requirements, failed test cases, not following the CS314 program hygiene requirements, 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 teaching staff.

Programming Assignment Requirements: Apologies for the long and complex nature of these requirements. They have evolved over time. One goal is to make your responsibilities as clear and unambiguous as possible. The other goal is to make it clear what the teaching staff response will be if you do not meet your responsibilities. Per my syllabus, any situation not covered here shall be adjudicated by the instructor.

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.  An account of a student who has seen the issue from both sides.

  1. Assignments are due at 11 pm local time on the due date. It is your responsibility to turn in the right thing, in the right format, with the right name, to the right place, on time. Failure to meet your responsibilities will lead to consequences, typically the loss of significant points on the assignment.

    There may be multiple versions of your program on your computer. We will grade what you turn in. If you turn in the wrong file (for example the original shell provided by the instructor with no changes) your grade will suffer accordingly. Most likely a 0. Screen shots with time stamps of "last modified" from your system are proof of nothing. It is trivial to change the system time on computers or to Photoshop "evidence".

  2. Each 0 on a programming assignment (for whatever reason) shall result in a one-third of letter grade reduction in your final course grade.

  3. A program with little or no effort on the solution code shall be assigned a score of 0. If you do not seriously attempt to complete the solution you cannot earn points for writing tests, program hygiene, or experimental results / questions about the solution.

  4. A programming assignment with a correctness score of less than 7 out of 10 is eligible for resubmission. No slip days may used on resubmissions. There will be a roughly 1 week window from when grades are completed that you may resubmit to earn up to 7/10 credit on correctness. No other part of the assignment (testing, program hygiene, experimental results / questions about the solution) shall be regraded. Note, this resubmit policy shall not be used to obtain a virtual extension on an assignment. To be eligible for the resubmit a submission must be made by the due date deadline for the assignment. This means a meaningful attempt at the solution code. A program with only tests, experiement code, and / or experimental results / questions about the solution. is NOT eligible for a resubmission. Your initial code under test, the solution code, must be a meaningful attempt to complete the programming assignment. Otherwise, any resubmitted program will NOT be regraded.

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

  5. Recall the code you write on programming assignments must be your own or taken from class examples and materials. You may not use code from any other source. Not another student, a third party programmer, a website, or a generative AI.

  6. You have 8 slip (late) days in 1 day units (1 second  to 24 hours = 1 day) for the semester. You may divide your slip days across the assignments in any way you wish to extend deadlines for the assignments except you may not use more than 2 slip days on a single assignment.

    Weekends and vacation days do not stop the slip day clock. For example if an assignment is due on Thursday the last day you may turn it in is the Saturday just after the due date.

    If you turn in an assignment late and do not have the required number of slip days, the assignment score is 0.

  7. Access and use your Gradescope account via the CS314 Canvas course. Do not create an extra Gradescope account. Programs must be turned in to the correct Gradescope assignment by the due date and time. We do not accept submissions via any other mechanism. Note, you can submit and resubmit via Gradescope multiple times until the slip day deadline ends.

  8. Programs must be written in Java, using the Java 2 Platform Standard Edition 8.0 or a later version of Java but limiting yourself to the features of Java 8. (You can typically set the compiler enforcement level to Java version 8 in most IDEs.)

  9. Assignments must compile and run in the Gradescope environment set up for each assignment. This is very similar to the environment on the CS department lab machines. We will not use any IDE when grading. Programs are run from the command line. 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. Many ways to transfer code to a CS machine. USB drive, email yourself (face-palm), logging into CS machines remotely to transfer and run code. See this handout for more help on the remote option. Connecting to a CS public machine remotely, " SSHing", requires you to set up SSH keys on your remote system (laptop, desktop) and your CS department account. See this page for help with Windows and this page for help with Linux and Macs.

  10. You must add the header and fill it in for every file you turn in or you may lose points.

  11. Do NOT include any package statements in your programming assignment code.

  12. Do NOT use classes that are not part of Java 8. This likely occurs when your IDE "helpfully" inserts import statements for non standard Java class. For example import apple.laf.JRSUIUtils; That is not a standard Java classes. Standard Java classes being with java. or javax.

  13. Delete the provided tests from the version of your program you turn in.

  14. Any required data files shall be in the same directory (current working directory) as the running program. If you add any path information to a data file, you program will very likely not work when we test it and all correctness points shall be lost.

  15. If you learn a technique, approach, or algorithm from a third party source (you didn't know it before hand and we didn't cover in in CS314 lecture, materials, etc.), you must cite that source as a comment in your code. For example, if you were not familiar with the Java conditional operator, but learned how to use it from a third party source, you would comment this in your code:

    // Learned how to use the Java conditional operator, ?:, from this post:
    // https://stackoverflow.com/questions/798545/what-is-the-java-operator-called-and-what-does-it-do
    ranks.add(rank == 0 ? UNRANKED : rank);

  16. You can use the simple autocomplete feature many IDES use for which method to call. (Selection an option from a pop up list.) You may NOT use an AI coding assistant in the IDE such as Copilot when completing programming assignments.

  17. If you are retaking the class you may re-use your assignments from previous semesters unless they were part of an academic integrity case or your worked on the assignment with a partner (Assignments 6, 8, and / or 10). However, if you are retaking the class I urge you, in the strongest possible terms, to NOT simply recycle your past attempt on assignments. You will NOT learn much if you just turn in your work from half a year ago. A huge amount of learning takes place by completing the assignments and so I urge you to redo the assignments if you are retaking the class.

  18. 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 Gradescope 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 partner 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 alone in a previous semester with a partner this semester.

    On pair assignments,  if you do not correctly add the header information for each student, then only the student that turns in the assignment will get credit.

    On pair programming assignments (See above for more information), both members of a pair use their own slip days, and both must have the required number of slip days. If both students do not have the required number of slip days it is a 0 for both students.


Program Hygiene and Best Practices (The CS314 Style Guide):

"The cleaner and nicer the program, the faster it's going to run. And if it doesn't, it'll be easy to make it fast." - Joshua Bloch

"Code is read more often than it is written. Code should always be written in a way that promotes readability." - Guido van Rossum

"It's a long-standing principle of programming style that the functional elements of a program should not be too large. If some component of a program grows beyond the stage where it's readily comprehensible, it becomes a mass of complexity which conceals errors as easily as a big city conceals fugitives. Such software will be hard to read, hard to test, and hard to debug." - Paul Graham

Follow the guidelines of the program hygiene guide. Most assignments have 6 to 8 points devoted towards how well your code is written and how well it adheres to our program hygiene and best practices guide.


Testing and Correctness:


The teaching staff will grade, comment, return, and post the grade for an assignment within 5 days after the slip day clock runs out. Typically by the end of the day on Wednesday after the assignment slip day clock runs out. A grade can only be disputed within the following 5 days. (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 earlier in the term.)

Please do not ask for a regrade lightly. Your grade could in fact go down as a result of the regrade. Do not quibble over a few points. Regrades are for serious issues due to the time required. In the past the vast majority of regrades have resulted in no change in the grade or a lower grade.

Please contact your TA, politely, if you assignment is not graded in a timely and accurate fashion. if they do not respond within a day, contact Professor Scott.

All grade disputes must be made in writing by email to the grader with supporting evidence and will result in the entire assignment being re-graded which may result in a lower grade.

CS 314 home page