In this lab you will use the power of a stack and a queue to explore and find your way through a maze. The purpose of this lab is to:
- Have you implement a stack and a queue
- Build a simple linked list of nodes
- Use your stack and queue to solve a maze
- Explore the differences between the two solution strategies
- Apply software team development best practices
- Complete the CSCI 151 - Stacks and Queues Simply A-Maze-ing! lab from Oberlin.
- Changes from the lab as written for Oberlin:
- The code is in the repository you are looking at right now. You can skip all the steps under “starting point code”
- You will use Visual Studio Code and not Eclipse.
- Consider questions 2, 4, and 5 in Part 5 and answer them if you want, but it is not required.
- You will work with a partner on this summative lab and demonstrate your understanding of using GitHub as a team as well as the Agile process.
- Set up and keep up-to-date the Trello board that was created by Dr. Miller
- Hold a Sprint Planning Meeting and turn in the document after your Trello board is set up (this is summative evidence)
- Commit to GitHub frequently, at least daily, with a meaningful commit message
- You and your partner must create and use branches for your development as specified in the daily milestones
- You and your partner must issue pull requests to incorporate changes in your branch into
main
- This lab is recorded as two labs in the gradebook. One score is based on satisfying the requirements for the Maze lab. The other score is based on your sprint planning meeting.
-
(Teammate A & B) create
square
branch frommain
; implementSquare
class skeleton insquare
branch; implementSquare
class unit test; run tests (verify fails); implementSquare
class; run tests (verify passes); pull intomain
(pair programming) -
(Teammate A & B) create
mazeSkeleton
branch frommain
; implementMaze
class skeleton inmazeSkeleton
branch; pull intomain
(pair programming)
At the same time:-
(Teammate B) create
mazeTest
branch frommain
; implementMaze
unit test inmazeTest
branch1; run test (verify fails); pull intomain
-
(Teammate A) create
maze
branch frommain
; implementMaze
class inmaze
branch
(Teammate A & B) merge
main
intomaze
branch; run tests (probably fails); debugMaze
class; run tests (verify passes); pull intomain
(pair programming) -
-
At the same time:
- (Teammate A) create
stack
branch frommain
; implementMyStack
andMyStackTest
instack
branch; run tests (verify passes); pull intomain
- (Teammate B) create
queue
branch frommain
; implementMyQueue
andMyQueueTest
2 inqueue
branch; run tests (verify passes); pull intomain
- (Teammate A) create
-
(Teammate A & B) create
solver
branch frommain
; implementMazeSolver
insolver
branch (pair programming) -
At the same time:
- (Teammate A) create
stackSolver
branch fromsolver
(notmain
); implementMazeSolverStack
instackSolver
branch - (Teammate B) create
queueSolver
branch fromsolver
(notmain
); implementMazeSolverQueue
inqueueSolver
branch
- (Teammate A) create
-
(Teammate A & B) tie up loose ends; pull both branches into
solver
; run tests (verify passes); uncomment all of the lines in MazeApp.java (refer to comment at the top of the file); test MazeApp by hand (verify functionality); pull intomain
Your GitHub branching history should look similar to the following:
- Try the bonus mazes.
- Add more awesome.
- Submit a link to your GitHub repository with this assignment.
Footnotes
-
There is a maze-invalid file that contains an improperly formatted maze and should be used in the test to ensure exceptions do not go unhandled. ↩
-
To avoid future headaches, ensure that the test thoroughly tests the Queue class. Specifically, make sure to test that the last element in the queue is successfully dequeued. ↩