Overview
For this project you will implement two classes MySortedLinkedList and WeekActivities that support a
weekly calendar implementation. This calendar implementation allows users to
schedule activities, and perform typical calendar activities.
Objectives
This project will give you practice using linear data structures and the
Java Collections Framework.
Grading
- (85%) Tests
- (40%) Public JUnit tests
- (45%) Release JUnit tests
- (5%) Student Tests
- (10%) Style
Clarifications
Any clarifications or corrections associated with this project will be
available at Clarifications.
Code Distribution
The project's code distribution is available by checking out
the project named Calendar. The code distribution
provides you with the following:
- A package named calendar → In this package you will find shells
for the classes named MySortedLinkedList, and
WeekActivities. These are the classes you need to implement for
this project. In the calendar package you will also find the following
support classes and enumerated types: Activity,
ActivityComparator, Date, Day, and Time. You will use these
classes and enumerated types during the implementation of the calendar
application; you should not modify any of them.
- A package named tests → Includes the public tests
(PublicTests.java) and a shell for a class (StudentTests.java)
that you must complete with your own tests.
- PublicTests.java → This class represents the set of JUnit public
tests. Some of the tests rely on expected results that can be found in
text files beginning with a "pub" prefix.
- StudentTests.java → This class represents the tests you must
provide for your code.
Specifications
For this project you will implement the classes MySortedLinkedList and WeekActivities that support a
weekly calendar implementation. The calendar application documentation can be
found in the project's javadoc
documentation.
Requirements
- The MySortedLinkedList class
may not be implemented using the Java API ArrayList class, the Java API
LinkedList class or arrays. If you do so, you will receive 0 credit for
this project.
- You may not add any classes that support the implementation of the
classes MySortedLinkedList or WeekActivities.
- Verify that your project passes the submit server tests (https://submit.cs.umd.edu/)
- Regarding the MyIterator class:
- hasNext() → returns true if calling next() will return a value. For example, if the list has only one
element, and you just created the iterator, hasNext() should return true as calling next() will return the
first element in the list. Notice that hasNext() functionality could be confused with whether there is an element following
the current one; that is not the correct interpretation for the task associated with the method.
-
next() → should return the next value and set things up so that hasNext() can recognize whether there is
another element.
-
You can assume users will not call next() without first calling hasNext().
-
We should be able to call hasNext() as many times as we want without affecting what is considered to be the
next element. For example, for a list with three elements for which we just created an iterator, hasNext()
should return true. If we call hasNext() a second time, and then call next(), we should retrieve the first
value from the list.
- The MyIterator class is meant to be utilized by users of the MySortedLinkedList class, and you should not use it
to implement methods (e.g., size method, add, etc.) of the MySortedLinkedList class.
-
If you are having problems with your MySortedLinkedList class, try developing student tests based on a list of
integers or strings (rather than activities). For example, test whether you can insert all the permutations of three numbers
(e.g., 10, 20, 30) correctly. This is very important idea when developing code; simplify the data in order to test your code.
- You must attempt to submit your project immediately after checking out
the project (even if you have not implemented any methods). This will
allow you to verify that the submission process is working as expected.
- You should submit your project often. This will keep versions of your
project in the submit server that are easy to retrieve (you can also get
previous versions from your CVS repository). If your computer crashes or
you experience any other problem you will have a permanent backup in the
submit server.
- You have three tokens for this project in the submit server.
- IMPORTANT → If you have a problem with your code
and need assistance during office hours, you need to have a student
test(s) that illustrates the problem you are experiencing.
- See StudentTests.html
for information regarding the implementation of student tests for this
project.
- See Style Guidelines for information
regarding style.
Additional Requirements for Students in CMSC 132H (Honors)
The honor section requirements will be discussed in lecture.
Suggestions on How to Start/Implement This Programming Assignment
- Look at the PublicTests.java file so you understand the expected
functionality for the classes you must implement.
- Thorougly test your MySortedLinkedList class by writing the appropriate
student tests.
- Do not wait until the last minute to start working on the project;
there is plenty to do.