Plymouth State Seal
CS 4140: Software Engineering
(Fall 2021)

Syllabus

LMS

Teachers


Assignments

Assignments
Other Pages

Project 0:
More than One Song, Please


Assigned: Mon Aug 30 2021
Due: 9:00:00 AM on Fri Sep 10 2021
Team Size: 2
Language: Java
Out of: 75 points


Over the course of the semester, your team will continue to make updates to a basic mp3 player. Each new project will require you to add new functionality, easier to do if the previous code was well-designed. I will provide you with initial code, which runs a small GUI. By clicking a button, it will play a single .mp3 file. In this first project, you will add a functionality to play additional songs.

Part 0, 0 points: Sign up for a GitHub account if you don't already have one. Then send me an email with:

  • Your team's name, which must be different from all other team names I've ever had (no spaces or special characters, please), and
  • The URL to each of your accounts. (e.g. my GitHub is at: https://github.com/paithan)
I'll create a repository ("repo") for your team on the PlymouthStateCST organization.
XKCD explains Git

Part 1, 0 points: Once I have all your team's accounts, I will create a private team repo where you can store your code. You'll get an email from GitHub that everything's been set up. This git tutorial or this GitHub guide will help you get started on GitHub. I am requiring you to use GitHub to submit projects, but you don't need to learn all of git to go with it (though I highly recommend it). I've included the starting code in this public repository. Clone the code into your repo (open your team's account, click on 'import code' button, then enter the URL for the public repo I set up above). Compile and run the code, then make sure you can play the music file associated with it. This code uses JavaFX, so you'll need to make sure your machines are running Java 8.

Part 2, 0 points: Look through the code I've provided you, but don't make any changes yet. See if you can draw a class diagram for the code. What improvements could be made to the code without changing its functionality? Is there any repeated code that could be condensed? I don't recommend actually making any changes until after we've met. If you have any questions about how things work, come ask me about them.

Part 3, 0 points: The code is really brittle. It runs, but it's not well-designed, meaning there's lots of technical debt. It will save time in the long run to clean up the code before programming the new parts. Don't make changes yet, but do identify some parts of the code that are ugly or repetitive that you'd like to clean up.

Cavemen in Technical Debt

Part 4, 10 points: Initial Meeting: Choose an appointment time that works with me and everyone in your group. (Email me to make sure it works.) Ten or fifteen minutes should be fine. Make it to that appointment! We'll discuss the diagram you've drawn and any changes you're considering making to the code. Schedule this appointment as early as you can! (You can also just show up at my office hours with your whole group if I don't have another of these meetings during that time.)

Part 5, 0 points: Before you make any changes to the code, create a branch (e.g. "Development") that you'll make the changes to. Only merge your code back to the main branch when you have things working. When I grade your code, I'll download whatever is in that main branch, so only merge working code back there!

Part 6, 50 points: Time to make changes! This is where you go and start to complete those goals on the project chart! This system is spelled out on the syllabus, but please ask me if you're uncertain about anything!

Part 7, 15 points: Project 0 Meeting: When you complete the goals leading in to the Project Meeting goal, then it's time for one or more of your group to meet with me to have your Project Meeting. Remember that prior to this meeting, you need to create a Class Diagram with your current code state. You also need to generate the JavaDoc for your code and put that somewhere so we can reference it during the meeting. If you pass the meeting (this usually means you bring those documents and answer all my questions) then you will get points for this (with penalties if you're late) and I will provide you with the goals for the next project. (You should ask questions about that new project right away!)

Part 8, 0 points: After the project meeting, I recommend that you plan out some ideas about how you will achieve some of the goals of the next project and sketch out a new class diagram. If you bring me these ideas before you start coding the next project, I can help you out a bunch!

Submitting your Project:

To get graded on your project, you'll meet with me when you complete a goal. (Only at least one person from your team needs to be there.) Before the meeting, you need to have earned points for all goals with arrows leading in to that goal. At the meeting, I'll download your code from either the master or dev branch (you tell me which to use) then I'll run the code in front of you so I can check whether it does what I want it to do. (If you're not sure what any goal entails, you should ask me clarification questions ahead of time.) Some points:

  • The code needs to run on my machine. You can be there to help me run it.
  • This isn't a usability class, so I won't focus on HCI issues (unless that's specifically the point of that goal.
  • You should watch me run the code so you can see what's going to right and what's going wrong.
When the goal is completed, you'll get points for it. You should continue to have that functionality working in future versions of the code as well. If old stuff fails, you may not get points for future things.