Labs

... or homeworks, or torture, or whatever you want to call them. This is where the bulk of your work in this class will take place, and the bulk of your grade. The labs are where hands-on learning takes place. 

Remember: ask lots of questions. There is no shame in not understanding; there is only shame in not trying.

Lab One: Pennywise

As this was written up after the lab was complete, I won't go into detail.

If you completed the lab, your efforts receive an A. 

The lab served its purpose: it got you back into the swing of programming in Java, you practiced pair programming, and you built up your confidence. Those things all matter.

We'll add some structure to the next lab.

Lab Two: Game On!

Our first lab (Pennywise) got us back into the swing of things. The implementation itself followed closely from the Beetle Game that Drake presented in the text. We talked about design, encapsulation, and many other topics (equality, process, etc.). 

In this lab, you're going to have a bit more freedom.

Lab Three: Adding Testing

You've implemented a game, and it works. But what confidence do you have in it? Does your game recover gracefully from bogus/unexpected input?

This week, you'll revisit a classmate's code, do some refactoring, and add some testing. 

Lab Four: Postfix Language

Problem 4.20 from Drake's Data Structures and Algorithms in Java. To be backfilled.

Lab Five Bee: Musical Planets

This lab is about linked lists. And some music. And a bit about planets, maybe. And definitely about the old gods of Greek mythology.

I want to start, however, with a bit of metacognitive ramble as to why I wrote this lab, and why I'm encouraging you to engage with it fully.

[ UPDATE 20091111 ] In practice, this lab was about linked list implementation and testing. Perhaps because it fell at the midterm, or perhaps because it was challenging (both are likely part of the equation) the implementation and testing took two weeks. Future revisions of CMPSC112 should think about spacing this lab out more explicitly.

Lab 6: List Practice, Reading

You've implemented a LinkedList<E>, and now its time to demonstrate that you know how to use it. This is a paper-based set of questions—that means you should work your problems out on paper, present your solutions to me in a 1-on-1 meeting, and answer any questions that I might have about your implementation.

It isn't massive in scope, but it represents the end of our dealings with lists (but not linked structures in general). After you're done, it's time for some reading.

Lab 7A: Bitwise Operations

Back in the day, bitwise operations gave me the screaming heebie-jeebies. I'd look at something like

field |= ~(val & (5 << 1))

and pass out. People would have to scrape me off the pavement. Then again, I did a degree in Physics as an undergraduate. But now that I'm the one writing the websites, well... just you watch.

Lab 7B: Building Trees, Evaluating Boards

In this lab, we'll build up the tree. Doing this involves first deciding how we will represent the tree. Then, we'll need to write a method that allows us to generate all the possible moves from a given game board. Lastly, we'll need to be able to evaluate which move we should make given a game position by searching down the tree and deciding which direction makes the most sense.

Lab X: Algorithm Video

So, you want to be in movies, eh? Oh, I see... your "professor made you do it." You know, we hear that all the time around these parts... 

A bit of structure will go a long way on your videos. Lets see if we can't put a few reasonable requirements on your algorithms video to help frame your production.

Creative Commons License Creative Commons BY-NC-SA 3.0 Licensed where possible.