JMU JMU - Department of Computer Science
Help Tools
Java Programming Review


1 Purpose

The primary purpose of this assignment is to help you review (and demonstrate that you have acquired) the knowledge and skills required to program in Java. From a language and algorithms perspective, there is nothing new in this assignment. There is also no network programming in this assignment.

This assignment will also help you gain some experience with the kinds of tools that you will need to use this semester.

2 Overview

KitchIntel is a (fictitious) company that intends to simplify and improve all aspects of the "kitchen experience" (including the purchase of food and materials, meal preparation, and waste disposal).

They are in the process of developing a suite of products that will make kitchens more intelligent. This assignment involves the tasks that you have committed to during the first sprint for the KitchIntel Control System.

3 Preparatory Tasks

Before you do anything else you should:
  1. Install your IDE on your computer (if you have not already done so). (See the course "Tools" page for more information.)
  2. Read all policies related to programming assignments (including style guides, submission requirements, collaboration rules, etc...).

4 Documents

During the sprint planning meeting you took fairly detailed notes. (You really don't remember?) In case you lost them, they are available here: Notes from the Sprint 1 Planning Meeting

5 Tasks

You must complete all of the classes and interfaces that you committed to. (You really don't remember committing to completing them? Don't worry, I remember it clearly.)

In addition, you must develop a complete unit test suite for these classes. You must use JUnit (v5) for this purpose. Your JUnit test suite should cover all statements and all branches (as measured by EclEmma) Your tests must be in a package named testing and each test class must include the word "Test" in its name.

6 Submission

You must submit (using Autolab) a .zip file named pa1.zip that contains:
  1. Your implementation of the required interfaces/classes in the appropriate package(s).
  2. JUnit tests for all of your classes in a package named testing.

There is no limit on the number of submissions and no penalty for excessive submissions.

7 Grading

Your submission will be graded as follows:

Points will be deducted manually (i.e., outside of Autolab) for code that is unclear, inelegant, and/or poorly documented.

8 Reminders

Remember to read and follow all policies related to homework assignments (including style guides, submission requirements, collaboration rules, etc...).

9 Help

You should be a fairly proficient object-oriented programmer at this point. However, in case you've forgotten some details, help is available.

9.1 Help with Java

This assignment is a review of the material covered in CS159 that you should already understand. The course "Help" pages (see the section on "Course Content") on Java and UML contain many useful references in case you need to refresh your memory. You also may want to refer to the following CS149/CS159 lectures:

9.2 Help with Eclipse

Be careful when you create classes in Eclipse that you put them in the appropriate package. Also, do not put your code in modules.

The JMU CS Wiki on Eclipse explains how to provide an application with command-line arguments.

9.3 Help with Testing

We will be using JUnit all semester. For more information see:

9.4 Help with Coverage

In order to get 100% coverage, you sometimes have to be aware of some quirks of the language you are working in and the tool set you are using. For more information, see:

In order to get 100% coverage, you sometimes also need to change your implementation. For example, you may not be able to test a private or protected method either directly or indirectly. This may be an indication that a public method should be using those methods (e.g., a public constructor using a protected or private setter).

Copyright 2020