Project 1 Instructions

Project%201%20Instructions

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 3

DownloadProject 1 Instructions
Open PDF In BrowserView PDF
Project 1: Nurse Scheduling Problem
Milestone Due: September 19 by Midnight

Complete Project Due: October 3 by Midnight

Instructions
For this project you will be designing and implementing a system, in either C or C++, to help describe and determine a
schedule for a set of nurses at an emergency clinic. The clinic is open 24 hours a day, five days a week, and nurses work
in eight hour shifts. Using bit vectors and set operations, your system should provide information about the available
nurses and their potential schedules, as well as determine an actual schedule for a week.
Additionally, sample input files can instead be found on the CSE machines at
/home/jeh0289/public/csce2110/fa18/proj1/
You can cd into that directory and copy input the files
from there.
For the project you may, if you choose, work in small groups of up to three students. You will need to sign-up for a group
on Canvas by no later than midnight (9/7). This can be accessed in the Groups tab in the People section. Any student
who does not join a group will be assumed to be working on their own and will be assigned a single member group. A
group cannot be changed once created, unless it is completely dissolved. All members of a group will receive the same
grade, and all members are expected to contribute equally to the programming and report. Only one submission per
group will be required, but a group will not be penalized for having multiple members submit the completed project.
Also, as a reminder, all of the code for this assignment must be written by you. You may not share code or download
solutions off the internet, as doing so will be considered cheating.

Requirements
This assignment has two parts: a design portion and an implementation portion.
Design Document
For the design portion, you must generate documentation, in PDF format, describing your system and design process.
The purpose of this is for you to explain not just what your system is doing, and how it is doing it, but why. You will need
to justify your design decisions in a concise, informative manner. Justifications such as “I did this because it was easy”
are not sufficient, as you should actually explain why a particular data structure or algorithm was more efficient,
effective, or optimal. Additionally, commented code, while sometimes helpful in small examples, is not a sufficient
explanation in and of itself. Your explanations and justifications are expected to be presented in prose and in paragraph
format, i.e. not bulleted lists. Further, part of the evaluation of your design document is the apparent amount of thought
and effort that went into its creation.
This document should be divided into four main parts, each with an appropriate header.
In the first part, you should describe your design process. Did you work out the algorithm on paper or a whiteboard
before hand? Did you draw UML diagrams of the system? Did you create a small prototype? Did you simply start coding
away and then recode once or twice with newfound understanding? In a few paragraphs, describe in detail how you
went about designing the system, and be sure to provide sufficient justification of your methodology.

For the second part, you should describe the data structures you used in your system. What, if any, objects or structs did
you create to store data? How did you organize and manage them? What types of formal data structures did you make
use of (trees, graphs, arrays, hashes, etc)? In a few paragraphs, describe in detail how you stored the various data
elements in your system, and be sure to provide sufficient justification of your methodology.
For the third part, you should describe functionality of your system. How is data moved and transformed? How is it read
in? How is it output? What are the various major functions you constructed and how do they work? In a few paragraphs,
describe in detail how your system works, and be sure to provide sufficient justification of your methodology. You might
also consider including diagrams to more easily visualize how all of the pieces fit together.
Finally, you will need to briefly describe what share of the work was performed by each group member. Be sure to be
specific about tasks.
Implementation
Your program must provide the following functionality and adhere to the following constraints:
•

•
•

•
•
•

•
•
•

Allow the user to choose the file containing the list of nurse schedules
o For a nurse’s schedule, the first line will contain the name of the nurse
o The next four lines will contain the day and times they can work
o The times will be in 24 hour, military-style format
Your program should read in each these schedules and create five bit vectors for each nurse, one for each day of
the week, and store their availability information with each hour of the day being a slot in the bit vector
Using appropriate set operations you implement, your program should output the following
o A yes or no answer as to whether there is simple, complete coverage of all 120 hours during the week,
i.e. can at least one nurse work during each hour of the week
o A 5x24 bit matrix listing which hours during the week are more than one nurse available to work, i.e. 0 if
less than two are available to work, and 1 if two or more are available to work
o A 5x24 bit matrix listing which hours during the week are no nurses available to work, i.e. 0 if at least
one can work, and 1 if none can work
o A 5x24 bit matrix listing which hours during the week exactly one nurse can work, i.e. 0 if zero or more
than two can work, and 1 if exactly one can work
Your program should also output a 5x24 matrix that contains the initials of each nurse on the days they will
work, such that the schedule has complete coverage and the total number of used nurses is minimized
Each 5x24 bit matrix should have an appropriate vertical and horizontal labels and be easy to read and
understand
You may not use any of the set containers or set operations/algorithms provided by C or C++. You must write
your own versions of them.
o Examples: bitsets, sets, multisets, set_union, set_intersection, set_difference, etc…
Your code must be well commented.
You must provide a short README file which includes your name and explains how to compile and run your
program.
Additionally, you may write a makefile if you want your code to compile with additional flags.

Milestone Submission
Your program must be able to read in the file as well as provide the yes or no answer concerning simple, complete
coverage. You must submit a .zip file containing the following:
1. All files necessary to compile and run your program
2. A README file explaining how to compile and run your program

Complete Project Submission
Your program must provide all requested functionality. You must submit a .zip file containing the following:
1. All files necessary to compile and run your program
2. A README file explaining how to compile and run your program
3. Your design document in PDF format

Rubric
The entire assignment is worth 100 points. The breakdown of those points is as follows.
• 40 points: Design documentation
• 20 points: Code satisfies milestone requirements
• 30 points: Code satisfies complete requirements
• 10 points: Professional coding style
o 5 points: Adequate comments
o 3 points: Modularity
o 2 points: Readability
• If your code fails to compile on the CSE machines you may not receive credit for the programming portion of the
assignment. I recommend not making changes to your code without checking for compilation before you
submit.

Bonus
For 10 bonus points, your program should also output a 5x24 matrix that contains the initials of each nurse on the days
they will work, such that the schedule has complete coverage and the total number of used shifts is minimized.



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : Yes
Author                          : Jorge
Company                         : Microsoft
Create Date                     : 2018:09:05 15:33:38-05:00
Modify Date                     : 2018:09:05 15:33:39-05:00
Source Modified                 : D:20180905203324
Language                        : EN-US
Tagged PDF                      : Yes
XMP Toolkit                     : Adobe XMP Core 5.6-c015 84.159810, 2016/09/10-02:41:30
Metadata Date                   : 2018:09:05 15:33:39-05:00
Creator Tool                    : Acrobat PDFMaker 18 for Word
Document ID                     : uuid:f529dd03-0163-4d25-9597-a3faf902f685
Instance ID                     : uuid:d145b44b-746f-4f9c-b699-2adcdf783a3f
Subject                         : 53
Format                          : application/pdf
Creator                         : Jorge
Producer                        : Adobe PDF Library 15.0
Page Layout                     : OneColumn
Page Count                      : 3
EXIF Metadata provided by EXIF.tools

Navigation menu