Menu Expand Search
CS4530, Summer 2025

Individual Project 3 Due Mon, May 26 at 6:00pm Boston time

On tasks 2, 3, and 4, you can choose whether or not to use generative AI tools such as Microsoft Copilot, Deepseek, or ChatGPT. Generative AI tools may not be used on Task 1 or Task 5. You will be expected to document and reflect on all the tools you use.

Changelog:

Objectives of this assignment

The objectives of this assignment are to:

Getting started

Start by accepting our GitHub Classroom invitation — this will be available after 6pm on May 20. It will create a GitHub repository for you which will include the starter code for this assignment. You will set up the assignment as before.

If you want to include additional dependencies (changing package.json), you may do so with permission from course staff. There will be a Piazza thread for such requests and listing allowed packages.

Tasks

Task 1: Opt-out user story

YOU MAY NOT USE GENERATIVE AI TOOLS FOR THIS TASK

You are given the following user story: “As a user, I want more control over my interactions with other participants.” We’ll call this user story 4, since the biographical-details-sharing user story was user story 0 and your group project defined user stories 1, 2, and 3.

From this user story, you have been given the following conditions of satisfaction.

Give some feedback on this user story. (This task and task 5 will be submitted on Gradescope.) Can you propose a better user story that might do a better job setting up these conditions of satisfaction?

Task 2: Implement opt-out

Implement the conditions of satisfaction for the opt-out user story from Task 1. The essential and desirable conditions are expected, and the essential ones will be given most of the weight in grading. You’re not expected to implement the extension conditions of satisfaction. For example, it’s fine if users who have opted out have to explicitly rejoin chat every time they visit a game page; that’s part of condition of satisfaction 4.7, which you’re not expected to implement.

New tests are encouraged but not required. Your implementation may require modifying existing tests; for full credit, fix these tests. (You will lose some points if you just delete the tests, but in any case don’t submit things with broken tests.)

Task 3: Implement your user story

In the first two assignments, you developed conditions of satisfaction for the following user story: “As a strategy game player who values social interactions, I want myself and other people on strategy.town to be able to share biographical details so that we can have a richer relationship with the people we play strategy games with.”

In this task, you will implement the essential components of this user story only.

New tests are encouraged but not required. Your implementation may require modifying existing tests; for full credit fix these tests. (You will lose some points if you just delete the tests, but in any case don’t submit things with broken tests.)

Task 4: User communication

In ANNOUNCEMENT_EMAIL.md, draft an email that would announce to strategy.town users the new features you have implemented, explaining how they should be accessed and used.

Keep in mind that, while not required, you can put images in a markdown file! If your repository includes a file images/option-selected.png, putting ![image description](images/option-selected.png) in ANNOUNCEMENT_EMAIL.md will display the image when the file is previewed on GitHub.

The audience for this email is your end users, but keep in mind that course staff will use this announcement email to help them understand what your new features are supposed to do! A confusing or poorly-worded email may hurt your score for Tasks 2 and 3.

Task 5: Reflection

YOU MAY NOT USE GENERATIVE AI FOR THIS TASK

If you didn’t use generative AI for the assignment, this can be pretty short: write a few sentences about why you decided not to.

For everyone else, please write a couple of paragraphs about your experience. How did it go? What tools specifically did you use, and for which parts of the assignment (Task 2, Task 3, or Task 4) did you use generative AI tools to assist you? How much experience did you have with these tools before this assignment? What went as expected? What surprised you? How much time did you spend on the assignment, and how much do you think you would have spent without using these tools?

This task and task 5 will be submitted on Gradescope.

Submission Instructions & Grading

Submit tasks 1 and 5 on Gradescope, and tasks 2-4 via GitHub.

The assignment is graded out of 120 points.

If your code fails the tests it comes with, or if it produces errors or warnings when npm run check --workspaces or npm run lint --workspaces is run in the root directory, you will get no credit on tasks 2-4 until you fix the error and resubmit with a 10 point penalty. Adding new eslint-disable statements, or modifying the linter configuration is not allowed.

Modifying package.json is allowed, but only with prior approval from course staff as described in the assignment.