We will be testing your stack implementations more generally, and you should too! Writing testing code in a main method in your ArrayStack and ListStack classes is one convenient place to put code to test your methods.
We have provided you code(Reverse.java) that allows you to USE the stacks you write to do something kind of neat - reverse a sound file in .dat format. In order for you to be able to hear the files that you reverse, you will need to convert them into something easily playable - a .wav format file (on most computers you can just click on a .wav file and it will play). Sox is a program that is installed on the lab computers, but that you can also download from the Internet (comes in a .zip file) for free that converts .dat files into .wav files and also converts .wav files into .dat files. Sox will be useful if you want to hear reversed sound files.
We have provided you a reversed sound file (secret.wav) that sounds like gibberish when played. You can run that thru sox to get a .dat file, use Reverse to reverse it, and then convert it back into a .wav file that you can play and listen to what it says.
Although it is actually not too tough, downloading and installing sox can be annoying much in the way that downloading and installing any new software can be. In particular, since sox needs parameters, typing these on a command line is needed. If you have not done much in the way of command line interaction with your computer (this is the traditional way of interacting with unix or linux systems) here is a chance to get a tiny bit of experience!
Note that there are more instructions here (in particular clarifying step three) that may be of help: http://www.cs.washington.edu/education/courses/326/10wi/projects/proj1/Sox_Usage.txt
The point of this question is to get you to think about error handling. You need to describe two ways that the situation of exceeding the max size of the array might be handled. a) asks you to describe what happens currently in your code whatever that might be (this depends on whether you did the first extra credit item or not), b) asks you to suggest (but not implement) another way of handling the situation. For part b you can change any files - Arraystack, Reverse, DStack, whatever. You don't have to actually go so far as to make actual changes to your java code and test them, but try to be fairly specific perhaps to the level of pseudo code and where it would go.
Before answering this question you should be sure to look at the written hw guidelines that give guidance on writing pseudocode: http://www.cs.washington.edu/education/courses/326/10wi/writtenhw-guidelines.shtml
The question is basically asking you to implement a stack using one or more queues. This is not necessarily something that you would be asked to do in production code, but it is an interesting exercise that shows that you know how a queue works by using one or more queues to implement push and pop operations. You do not care how the queue you are given is implemented, you just care that when you call enqueue or dequeue it does the right things that a queue should do (which you can assume it does :)! It is like you have a DQueue interface (and at least one implementation of some sort that you can instantiate) that has the operations enqueue, dequeue, isEmpty and size. Use these operations to write pseudo code for push and pop operations.