CSE 132 (Spring 2011)
Lab 3c: Mazes Finale

Apply this change to your code (I sent email about this):
In the demo() method of the Maze class, move the call to initMaze() inside the loop, so the maze resets each time. Run your code and make sure things work. Commit.

Try this MapManager.java if you see concurrent mod exceptions on the lock management.

All groups must do the following, which will earn each member no better than a B for this lab grade:
To earn an A, you must additionally complete any one of the following (if you do more than one, extra credit is possible; talk with the instructor before proceeding):
  1. Write the method in Maze: findCheese(Room start, Room end). The "mouse" starts in room start and should eventually find the cheese in room end. The path between start and end should be highlighted (using HallViz). You can assume the maze is correct in the sense that all Rooms are connected and there are no cycles.
    Hint: you should think about doing most of the work in Room with a helper method.

  2. Add methods to the RWLock class that acquire locks with a timeout feature and return true if the lock was obtained and false if there was a timeout and no lock was obtained. Use the time-out locks in your project and describe the impact the locks have on performance.
    Experiment with timeout values.
  3. Develop a fair RWLock implementation, as discussed in class. You must document how it is more fair.

Demo and submission

The code you hand in should be as clean and simple as possible. Don't duplicate code unnecessarily. Don't use .equals where == suffices. You can earn a C for a lab that works but is very poorly written. To get an A on this lab, your code must show that you know what you are doing. A B will be awarded to labs that fall in between.
When you done with this lab, you must be cleared by the TA to receive credit.

If you worked in a team using a group– repository:
  • Your work must be committed in that repository for this demo.
  • Each team member must complete this form and have the TA authenticate.
    For example, if there are two of you, then the form must be submitted twice, so that each person's last name and 6 digit ID is captured with the repository name.
  • The repository name must be included on each of the submissions.

group– Enter the name of your group repository here
Last name 6-digit ID
Features (TA Verify!): ugly code, no A-earning features
nice code, no A-earning features
nice code, has an A-earning feature

TA: Password:

Last modified 09:20:45 CST 02 March 2011 by Ron K. Cytron