CS 115 Project 1, Spring 2015:
Time Management


Summary

In this project, you will get information from the user about the tasks on their to-do list. You will analyze this list of tasks to compute the total time, the time when they'll be finished, the longest task, and the mean task length.

Note that there is a Python datetime library, but it's overkill for our purposes. You are welcome to investigate it for the purpose of checking your calculations, but your project should do these calculations using only the basic math operators.

Due dates:

CheckpointDue as an in-person demo in tutoring, lab, or workshop; see the Moodle schedule for times. Your last chance is the workshop on Thursday, Feb. 12.
Final code:Due on the CS department server (see Moodle instructions), on Tuesday, Feb. 24 at 11:00 PM

Checkpoint (10 points)

We'll start with examples of user input and your program's expected output. A detailed specification is below the samples.

Throughout this document, sample user input is in italics and underlined. Any other text shown in a a fixed-width font should be printed by your program.

Checkpoint – Sample 1

*** TIME MANAGEMENT ASSISTANT ***
Number of tasks: 3
What time will you start (on a 24-hour clock)?
Hour: 8
Minute: 10

TASK 1
Task description: Create project1 files
How many minutes will this task take? 30

TASK 2
Task description: Get the initial user input
How many minutes will this task take? 30

TASK 3
Task description: Prompt for each task
How many minutes will this task take? 75

TOTAL TIME: 2 hour(s), 15 minute(s)

In this sample, notice that the start time and task times come from the user, and the total time is computed by your program.

Checkpoint – Sample 2

*** TIME MANAGEMENT ASSISTANT ***
Number of tasks: 2
What time will you start (on a 24-hour clock)?
Hour: 14
Minute: 00

TASK 1
Task description: Non-stop party
How many minutes will this task take? 2161

TASK 2
Task description: The party don't stop
How many minutes will this task take? 855

TOTAL TIME: 50 hour(s), 16 minute(s)

We will use additional sample inputs to test your program, and so should you.

For the checkpoint, you will need to demonstrate a program that does the following:

Your program's spelling, capitalization, and punctuation will need to match the sample output EXACTLY to get credit.

The only way to get credit for the checkpoint is to demo it in person for the course staff during workshop, lab (any section), or tutoring by the deadline at the top of this page. Check the top of the Moodle page for the exact times and locations.


Final Code

Your final code will extend your checkpoint code in the following 3 ways:

Remember that your program's spelling, capitalization, and punctuation will need to match the sample output EXACTLY for this project.

Here is sample input and output for your final code. Again, these are just samples; we will test your code using additional inputs.

Final Code – Sample 1

*** TIME MANAGEMENT ASSISTANT ***
Number of tasks: 3
What time will you start (on a 24-hour clock)?
Hour: 8
Minute: 10

TASK 1
Task description: Create project1 files in IDLE
How many minutes will this task take? 30

TASK 2
Task description: Get the initial user input
How many minutes will this task take? 30

TASK 3
Task description: Prompt for each task
How many minutes will this task take? 75

TOTAL TIME: 0 day(s), 2 hour(s), 15 minute(s)
END TIME: Today at 10:25
LONGEST TASK: Prompt for each task (75 minutes)
AVERAGE TASK LENGTH: 45.0 minutes

Final Code – Sample 2

*** TIME MANAGEMENT ASSISTANT ***
Number of tasks: 2
What time will you start (on a 24-hour clock)?
Hour: 14
Minute: 00

TASK 1
Task description: Non-stop party
How many minutes will this task take? 2161

TASK 2
Task description: The party don't stop
How many minutes will this task take? 855

TOTAL TIME: 2 day(s), 2 hour(s), 16 minute(s)
END TIME: In 2 day(s) at 16:16
LONGEST TASK: Non-stop party (2161 minutes)
AVERAGE TASK LENGTH: 1508.0 minutes

There is no demo for your final code. See the end of this specification for submission instructions.

Testing suggestions

We strongly suggest implementing and fully testing each calculation before starting with the next one. It will keep your code simple, and it will maximize your points if you run out of time – it's better to have 2 calculations fully working than 4 partially implemented calculations that never quite give you the right answer.

We will test your program on many more cases than the two above. Here is an incomplete list of things to check your code for – if you have any other good suggestions, let us know and we'll add them to the list:

Extra Credit (up to 5 points)

You can get extra credit for checking the user's inputs for errors. For example, you could reject non-numeric or negative inputs, invalid times of day, etc.

You can also earn extra credit for formatting the end time so that it has 2 digits for the minute. For example, it would print 8:01 as 8:01 instead of 8:1.

If you have other ideas for how to extend this project, just ask!

To make sure that your extra credit counts, add a line to your docstring beginning with 'XC:' and describing the extra work you did.


Grading

Correctness [60%]

The most important part of your grade is the correctness of your final program. Your program will be tested numerous times, using different inputs, to be sure that it meets the specification. You will not get full credit for correctness unless your output matches the sample output exactly for every case, including capitalization and spacing. Attention to detail will pay off on this assignment.

Programming Design and Style [30%]

In addition to being correct, your program should be easy to understand and well documented. A detailed grading sheet for this part of your project is posted at
http://rivoire.cs.sonoma.edu/cs115/proj/cs115_p1_rubric_partial.html

Checkpoint [10%]

Your checkpoint is worth 10 points, as described above. The checkpoint cannot be submitted late.


Submitting your final code

If your project code is on your computer, you must copy your final code to the CS department server using FileZilla BEFORE following the instructions in the next paragraph. Every lab has instructions on how to do this.

Once your project code is on the cwolf server, you must submit it for grading by logging onto cwolf and running this command:

~srivoire/bin/submit 115

Type P1 when prompted for the assignment, and then type the name of the file you want to submit. Be sure that you confirm your submission by visiting
http://rivoire.cs.sonoma.edu/cs115/submit/proj1.txt
and looking for a file with your name, your cwolf username, and the correct timestamp.

You may resubmit as many times as you like, and only the last submission before the due date will be graded.

Collaboration policy

Programming projects must be your own work, and academic misconduct is taken very seriously. You may discuss ideas and approaches with other students and the course staff, but you should work out all details and write up all solutions on your own. The following actions will be penalized as academic dishonesty:

Late policy

There is a 48-hour grace period associated with the final project deadline. This grace period is designed to cover small personal emergencies and other unexpected events. No other consideration will be given for these small emergencies.