Multi-Threading II
         
            
         
         
            
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 write multi-threaded applications. There is no network
  programming in this assignment.
  
         
            2 Overview
  You have already done some work for
  
KitchIntel, 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).
  
  The company is now starting to work on a smart oven and your team
  is working on the controller.
  
          
         
            3 Documents
  During the sprint planning meeting you took notes that, you think,
  contain everything you need to proceed.
  In case you lost them, they are
  available here: 
  Notes from the Sprint 5 Planning Meeting
          
         
            
4 Tasks
  You must both think about the right way to make the system thread-safe,
  implement your design, and test it (both unit tests and integration/system
  tests as appropriate).
  
         
            5 Submission
  You must submit (using 
Autolab) a 
.zip
  file 
named pa5.zip
             that contains all of your code.
  
 
         
            
6 Grading
  The grade you receive on this assignment will be based on the effort
  you devote to it. If you make a "serious" effort and have a design
  and implementation that can be argued to be correct, you will
  receive a grade of 100. If you make a "serious" effort but your
  design and/or implementation clearly has major defects, you will
  receive a grade of 75. If you make a "half-hearted" effort, you will
  receive a grade of 50. Otherwise, you will receive a grade of 0.