Project 1a

Due Date: Mon 8 Oct

Pair Project


Familiarity with
  • event-driven program execution
  • state dependence in application
  • Model-View-Adapter architecture
  • Android framework


In this project, you will implement a very simple timer as an Android application.

Functional Requirements (55%)

The timer has the following controls:
  • (0.5) One two-digit display of the form 88.
  • (0.5) One multi-function button.
The timer behaves as follows:
  • (0.5) The timer always displays the remaining time.
  • (0.5) Initially, the timer is stopped and the (remaining) time is zero.
  • (0.5) If the button is pressed when the timer is stopped, the time is incremented by one up to a preset maximum of 99. (The button acts as an increment button.)
  • (1) If the time is greater than zero and three seconds elapse from the most recent time the button was pressed, then the timer beeps once and starts running.
  • (0.5) While running, the timer subtracts one from the time for every second that elapses.
  • (0.5) If the timer is running and the button is pressed, the timer stops and the time is reset to zero. (The button acts as a cancel button.)
  • (0.5) If the timer is running and the time reaches zero by itself (without the button being pressed), then the timer stops and the alarm starts beeping continually and indefinitely.
  • (0.5) If the alarm is sounding and the button is pressed, the alarm stops sounding; the timer is now stopped and the (remaining) time is zero. (The button acts as a stop button.)

Nonfunctional Requirements (30%)

  • Ensure your application is testable.
  • (1.5) Ensure your application includes comprehensive unit and integration tests. (See also here.)
  • (0.5 for SRP) Follow the design principles discussed so far.
  • Maintain a clear, responsibility-based separation among the different building blocks. 
    • The adapter should be lean (as in the stopwatch example).
    • (0.5) Most of the complexity should be buried in the model (also as in the stopwatch example)..
    • (0.5 extra credit) Use of the state pattern (APPP chapter 36) is optional.
  • Generally follow good Android development practice.
  • Use this CountDownTimer class.
  • (0.5) Use sound notifications for beeping.

Documentation (15%)

  • (0.25) Use inline comments to document design details in the code.
  • (0.25) Use javadoc comments to document how to use the abstractions (interfaces, classes) you designed.
  • (1) Provide a brief (2-300 words) description of your pair development journey during this project. Focus on aspects you find noteworthy, e.g., process, pairing, testing, design decisions, refactoring, use of the repository. 

Repository Setup and Submission

  • Verify that your repository is named cs313f12p1a. Please follow the updated repository layout of the clickcounter example.
  • Share your repository with the instructor (laufer) and the TA (ejburns) through admin > access management. Notification will occur automatically.
  • You should already have been using your repository to collaborate. There should be exactly one repository per pair.
  • When your project is ready for evaluation, send the instructor and the TA a brief email notification.

Grading Criteria

  • Stated percentages for the major categories
  • Stated points for the specific items
  • Total 10 points
  • Deductions of up to 1 point for 
    • deviation from the required project structure
    • inability to run and/or test