Labs and Projects Overview

This page has instructions and procedures for completing and submitting projects, as well as the project schedule with links to detailed project instructions.

Projects are large programming and writing assignments that you will submit either weekly or every other week (depending on the project).

Labs are ungraded assignments that prepare you to start the project. In some labs you will do exercises that the projects build on directly, but in others, you will do other types of preparation. The work you do on the lab is not directly submitted (unless the project builds on it directly in which case it is considered part of your project submission). However your work will be evaluated by showing us that your code passes a provided checkpoint script before you leave the lab period. See for additional details about the lab period procedures.

How to get help

Project Schedule

Submit projects by 10 PM on the Due Date (Wednesdays unless otherwise specified) in the associated Gradescope assignment!

Project Number Lab Link Project Link Lab Due Date Due Date Project Rubric
0 (Start project directly) Java Bootcamp -- Feb. 19 P0 Rubric
1 ArrayLists and shuffling Monte-Carlo Simulation: Blackjack -- Feb. 26 P1 Rubric
E.g. Rubric Items
2 2D Arrays Conway's Game of Life -- Mar. 5 P2 Rubric
3 Linked Lists Agent-Based Simulations -- FriMar. 14 P3 Rubric
4 Queues Modeling a Server Farm -- Thurs Mar. 20 P4 Rubric
5 Stacks Sudoku -- Apr. 9 P5 Rubric
6

Binary Search Trees

HashMaps

Word Frequency Analysis Apr. 16 Apr. 23 P6 Rubric
7 PriorityQueues and Heaps Searching on a Grid -- Apr. 30 P7 Rubric
8 Graphs Voronoi game on graphs -- Fri May 9 P8 Rubric

Project Due Dates

Projects will be due on Wednesdays at 10PM unless we specify otherwise. The usual schedule will be that we start labs during the lab sections on Wednesday and Thursday, and then you have the following week to work on the project before submitting it. Please come to Wednesday's lab ready to work on the new project even if you haven't completed the last one yet. Some projects will take 2 weeks; in these cases, you will submit code from your week 1 lab so we can check on your progress. This will be required and graded. The usual late submission policy applies for this code.

Submitting Projects

You will submit projects through Gradescope. As such, the file structure for your project is very important to get the autograder working! Your main project folder must be named "Project<project number>" Inside that folder, you should have your lab report as a PDF and 2 subfolders: "src" and "extension." You can omit the extension folder if you haven't done any. All of the code needed to compile and run your base project (i.e. everything up until the extensions) should be in your "src" folder. All of the code needed to compile and run your extensions should be in the "extension" folder. You will have some duplicated code and some code we supplied in your submission. That's not only ok, it's expected! Please also make sure not to change any of the file names. Once you have done this, please zip your "Project<project number>" folder and make sure the zipfile is named "Project<project number>" as well. You should upload this zipped file to Gradescope.

Here's an example of the expected project file structure on Mac for project 0.

project file structure

You can submit your report using any formatting as long as it contains the expected sections and you submit it as a PDF file. If you would like a template to work from, you can make a copy of this template (go to file -> make a copy).

We're not being picky for the sake of being picky; the autograder only works if you follow these constraints. The autograder lets us devote more time to giving you qualitative feedback on your work so it's a pretty useful tool for us (graders) and for you! That being said, I don't want this process to be an impediment to you. If you ever want help getting your submission in the right format, please ask me in lab, stop by my office hours, or send me an email!

Late Project Submission Policy

This class has a different policy for submitting late work than your other CS classes so please be sure to read it carefully!

You have a budget of 12 late days that you can use across any combination of projects throughout the semester. For each project, you can submit it up to a maximum of 3 days past the due date. That means that you can’t submit any project past Saturday at 10 PM for full credit since they are due on Wednesday at 10 PM. However, you can still submit projects past this point for a maximal score of 65%. You will almost always be better off to submit a partially complete project anyway, as you could very well have more than 65% of it done. Even if you score less than 65%, you can improve the score up to a 65% at any time.

My advice is not to plan to use late days. If something unexpected comes up on top of that, you may find yourself out of late days. These late days are for the unexpected and by using them in other cases, you are choosing to not have them in the case that you need them.

You do not need to tell us if you are using late days. We will track them based on when you submit your projects, but you are responsible for remembering how many you have remaining.

This policy is designed to help you do well in this class! It gives you flexibility to take your time doing good work as unexpected things come up, but it also encourages you to stay on track in the class and not fall behind. It is better to submit a partially done project on time than to wait and fall behind on your other work! Check out our advice on Submitting a partially finished project to get tips on how to get the points you deserve for your work!

If you are running out of late days and need to submit a project partly done, please take a look at this guide to maximizing your partial credit. There are many components to your project score and turning in a project with a single bug is generally not going to make a huge difference to your grade!

That being said, we know that sometimes exceptional circumstances come up. We want you to be able to succeed in this class even if circumstances beyond your control affect your ability to turn work in on this schedule. If you find yourself in this position, please come discuss it with us and we will come up with a fair solution on a case-by-case basis. You should be aware though that this is not a good solution to hold onto a project longer to track down that one last bug for full points!

Policy on Collaboration and Academic Integrity

Homework assignments and projects may be discussed between your current classmates under the condition that you write up your own answers separately. Feel free to reach out to me about clarification on this.

Your professor reserves the right to ask students to verbally explain the reasoning behind any answer or code that they submit and to modify grades based on the answers. It is vitally important that you turn in work that is your own! Reports of academic dishonesty are handled by an academic review board and a finding of academic dishonesty may result in significant sanctions. For more details on Colby’s Academic Integrity policies and procedures, see https://www.colby.edu/academicintegrity/.

Policy on Use of Generative AI

Similarly to your lecture section, the use of generative AI tools (ChatGPT, GitHub Copilot, etc.) for written language, code generation, algorithms, ideas for solutions, etc. is not permitted on CS231 labs or projects. The goals of CS231 focus on learning and demonstrating command of concepts, understanding programming techniques, analyzing programs, and understanding Computer Science from first principles / foundations; in general, the use of generative AI is inconsistent with this focus. I encourage you to think of the value of these projects as practice rather than as a polished final product. As such, I am much more interested in seeing your voice and thinking in your comments, code structure and written project report rather than seeing something "perfect."

I acknowledge that your work on projects is graded and that projects for this course can be quite challenging. I ask that instead of turning to generative AI, you turn to the many supports that we have in place to help you. These include my office hours, your lecture instructor's office hours and TA office hours, to help you work through challenges. While there are almost certainly edge cases, we really believe that these resources will be more helpful in supporting your learning goals than relying on generative AI--at least at this point in time.

I also acknowledge that the conversation around generative AI is changing incredibly quickly. We are all learning and adapting. If you have questions about this policy, or specific cases where you think using generative AI would improve the learning of course content from first principles / foundations, I am quite happy to discuss them! I am also always curious to hear about how you have used/are using generative AI outside the context of this course and what is/isn't working!