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.
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".
Each 0 on a programming assignment (for whatever reason)
shall result in a one-third of letter grade reduction in your final course
grade.
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.
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.
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.
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.
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.
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.)
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.
You must add the header and fill it in for every file you turn in or you may lose points.
Do NOT include any package statements in your programming assignment code.
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.
Delete the provided tests from the version of your program you turn in.
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.
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);
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.
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.
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
"
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.