Lab 8: Starting your own adventure (capstone)
Problem overview
There is general enthusiasm for a more open-ended lab,
and some minor worry during class of the scope
being either too small or too big. The reality is until
you think about this, and get more experience doing less
scripted programming tasks, this
will always be the case... this lab -- which you
have requested by voting as small groups during class -- will hopefully help get you started.
Inspiration
One of the most needed skills for those of you who will work in software/CS is collaboration. All
of my former students cite their group work -- less so the data structures -- as being the most important
for getting the right internship/job.
This lab is my attempt to incorporate the learning objectives of 202 -- code design, optional OOP, and unit testing --
in a more manageable assignment, while also giving you the
option to work with others and start to get used to a
more collaborative programming project.
Deliverables
You need to submit an individual report for this assignment to earn points. We encourage you, however, to discuss
with your entire group (if you are not working alone) what
you would like to strive for/complete in the final submission so you can start dividing and conquering, and to
start setting goals starting with this week in lab.
Some examples based on last semester are:
- Simple stock picker
- Poker game
- MD5 or something more complicated with respect to hashing
- Text based game such as a choose your own adventure
- Game 2048 [link]
- Checkers
Rather than have you provide an implementation at this point, we will ask you to submit a brief report
with the following four sections:
- Rough time log describing at least 4 hours work,
including active progess during your required lab, to
encourage you to actually
get started thinking/working/planning. Any group
meetings count towards the 4 hours, but we also encourage
that you start setting up your environment, maybe develop a .h file/initial code, etc. We will not collect these but
rather 302 students have found tasks like these best
to avoid inertia/procrastination.
- What are the pros and cons of using classes (OOP) to implement this idea of yours? There is no correct answer to this but I want you to consider a more structured approach like Connect4 vs. a more open ended lab like the primes one you just completed -- mostly since this is a learning objective of 202.
- In your own words, describe at least one data
structure we have covered so far in 140 that you think
would be useful and explain why. Think outside of the box... are the data mostly strings and therefore could benefit from
a map/set? Are vectors alone good enough? Have a rationale for your choice, especially since this tends to be a student-submitted final exam question (hint, hint).
- Using words, what could you provide as test cases (aka make test/gradescript) to make sure your program
is working? Would someone have to play set games (similar to the Connect4 lab), is there defined behavior with known correct outputs
(ala the hashing lab/gradescripts), or could there be something else you can show us to demonstrate your project is working? Again no correct answer here but we want you to start
thinking more about the lab doing ** what you want ** vs.
simply successfully compiling.
Rubric
We will grade your submission relative to the rubric below.
+8 Four hours tracked towards the final lab (2 pts each)
+4 Pros and cons of using classes (OOP) for this specific idea/problem
+4 Describe at least one data structure we have covered that would be useful
and explain why.
+4 Provides at a high level least two test cases/unit
tests for the problem outlined above (2 pts each)
Submission
To submit your solution, you must submit your report.txt,
which should also contain your time log, on Canvas prior
to the deadline.