This assignment will also help you gain some experience with the integrated development environment that you will be using this semester in this course. Some of the tools you will be using this semester will be new to some of you, and we will discuss aspects of them as the semester progresses. However, at this point, regardless of whether you have used the tools in the past, you should be able to figure out everything that you need for this assignment.
This asignment will also, hopefully, lead you to improve the process that you use during the construction phase of the software engineering lifecycle. For example, it will hopefully get you to start earlier, work on a regular schedule, test properly, and ask questions appropriately.
Finally, this assignment will expose you to the kinds of software engineering documents you will be reading and writing throughout the semester, and the kinds of questions that you may need to ask while carefully reading these documents.
SagaciousMedia has observed that schools are creating new and innovative grading systems that make use of very complicated rules for combining grades for a single student and/or cohorts of related students. They are developing a product called Transcriptz to support schools in these efforts.
The terms that SagaciousMedia uses when discussing Transcriptz and its functionality are described in the following document.
When using scrum, time is divided into time intervals called sprints that typically last 1-2 weeks, and product features are organized into stories. SagaciousMedia categorizes stories as either epics (abstract stories that might take several releases, developed over the course of many months, to completely realize), and sprintable stories (that describe what will be completed in a single sprint and included in the product at the end of the sprint). The sprintable stories (which are what you are concerned with for this assignment) for Transcriptz have been collected in the following document (along with some epics that are not part of this assignment).
The team you are working with at SagaciousMedia used the sprintable stories to create a set of tasks for this assignment. The other members of your team completed some of the tasks and have left others for you to complete. The complete set of tasks is contained in the following document.
The tasks that are "checked" have already been completed by other team members, the evidence for which is contained in the following documents.
TranscriptzH1
in
the app
package) for this sprint
JMUCourseTable
class (in the
grading
package) for this sprint
LetterGrade
enum
Numerics
class
LabeledDouble
class
SizeException
class
ThresholdFilter
class
WeightedAverageCalculator
class
WeightedTotalCalculator
class
You must complete the tasks that have not been "checked-off". The code you write must be consistent with the documents prepared by the team.
testing
and each test class must include
the word "Test" in its name.
For any project you should start as follows:
TranscriptzH1
class and the
JMUCourseTable
class) so that you understand how the
classes you are implementing will be used.For this particular project, you should then:
LetterGrade
enum.LetterGrade
enum.Numerics
class.Numerics
class.LabeledDouble
class.LabeledDouble
class.SizeException
class.Calculator
interface.WeightedAverageCalculator
class.
WeightedAverageCalculator
class.
WeightedTotalCalculator
class.
WeightedTotalCalculator
class.
Filter
interface.ThresholdFilter
class.ThresholdFilter
class.
TranscriptzH1
)..zip
file that contains:
JMUCourseTable
class. Do not submit the
main classes.testing
.
The .zip
file must contain the grading
,
math
, and testing
directories/folders
at the top level.
There is no limit on the number of submissions and no penalty for excessive submissions.
Note that your submission will not be graded if it does not comply with the specifications. So, if you are unable to complete the assignment, your submission should include a stubbed-out version of all of the components. (This will allow you to get credit for the components that you do implement correctly.)
Note that some of the criteria are described as "Success Required". This means that Gradescope will not assess subsequent criteria unless this criterion is satisfied (and you will receive a grade of 0 for the criteria that aren't assessed). So, for this assignment, if your code does not conform to the style guide then nothing else will be assessed (and you will receive a grade of 0 for the assignment)
.Note also that, Gradescope will provide you with hints, but may not completely identify the defects in your code.
Also, in case you haven't seen them before, the last parameter of
a method can be of variable length. This is indicated in the
declaration of the method with ...
. What is actually
passed in is an array. So, for example, the constructor in
the ThresholdFilter
class can be implemented as follows:
public class ThresholdFilter implements Filter { private int[] sign; private LabeledDouble threshold; public ThresholdFilter(final double threshold, final int... sign) { this.threshold = new LabeledDouble("Threshold", threshold); this.sign = sign; } }
src
and bin
directories/folders,
and that you do not put your code in modules.
Help creating Java projects in Eclipse is available on the
CS Department's Wiki.
Before you create any classes, make sure that you first create the packages to hold them. Help creating packages in Eclipse is available on the CS Department's Wiki.
When you create classes in Eclipse, be careful to put them in the appropriate package.
The CS Department's Wiki provides help on many other Eclipse topics, including how to provide command-line arguments. You also may want to refer to and/or complete the "review labs" related to Eclipse that are at the top of the syllabus.
.zip
file. So, you must not compress the
directory/folder containing these directories/folders, you must compress
the directories/folders containing the packages. In other words,
if you have a directory named src
that contains the directories
grading
and math
, you must not
compress src
, you must compress grading
and math
.
Help with creating .zip
files is available on the CS Wiki.
In particular, see:
If Gradescope reports errors in the "CompileOfficialTests" section it means
that your code does not conform to the specifications. In particular,
if you get an error that says SizeException
must be caught or
re-thrown it means that your SizeException
class is not
unchecked (as required by the specifications).
Copyright 2024