Project Goals
The goal of the optional project is for you to demonstrate your understanding of cache memory design by developing a tool so that students less enlightened than you can explore the ways in which various numerical parameters that enter into the design of a cache memory system interact with one another.
I am not giving details on how the project “has” to work because the goal of the assignment is for you to figure out a design that will let users explore cache parameters in an effective manner. Nonetheless, I am giving you a small sample of the sort of thing I am looking for below so you don’t waste too much time getting started.
A Revised Requirement
The assignment document says to submit partial code on December 8th. There are several reasons for this requirement, one of which is to encourage you to start work on the assignment right away. It it too big a project for you to put it off until the end and still hope to do something worth 30% of your course grade. The second reason for this requirement is so that I can give you feedback on your approach and can verify that you are actually doing your own development.
I am altering the requirement for what is due on December 8th. You may either submit partial code as originally specified, or you may submit written documentation of what your assignment will look like when it is completed. This documentation must include a graphical representation of the user interface you plan to construct. It can be hand-drawn on paper and submitted as a scanned image, as a Photoshop, Illustrator, SketchUp, etc. document -- check with me if not sure whether I will be able to view the format you want to use for submitting it. The documentation must also include a written description of the design.
If you submit design documentation instead of partial code on December 8th (and it is acceptable), you can still “meaningful credit” for the assignment by providing only a partially coded project on December 14th. I can’t define “meaningful” and “acceptable” precisely, but the idea is that you can get enough credit for the project to make it count as much as an exam if you do a good job designing the project and also develop a working subset of the full design. Note that you must submit clean, working code no matter what, but that your code does not have to implement all the features you designed.
Sliders
I mentioned “sliders” when talking about the project in class, and several people were confused by this. The basic idea of the assignment is that the user will enter a numerical value for one parameter, and the application would show how that new value affects the numerical values of other parameters. Feel free to require the user to type in the numerical values; a slider is simply a standard graphical element that lets users adjust a numerical value by operating a GUI component using the mouse. In Java, you would use a JSlider; in JavaScript, you might use the JQuery UI Slider plugin.
Use of sliders is not a requirement for this assignment.
Policy on Originality
In the assignment document, I made explict what the requirements and restrictions are with respect to collaborative work: basically, none allowed; you have to do the assignment on your own. Here I am reminding you that the College and the University have clear standards for Academic Honesty, which make it the instructor’s decision how to handle cases of detected academic dishonesty. My policy is automatic failure in the course and to report the case to the College’s Vice President for Student Affairs.
Example
This example uses two sliders to illustrate how the number of bytes of memory and the number of bits in a memory byte address interact.
Number of Address Bits
Number of Memory Locations
Note that you can drag either slider and the other one changes in sync with it, and that the number of locations can only be set to a power of two. I’ve made the bottom slider’s scale logarithmic rather than linear.
Remember, you are free to use text input boxes instead of sliders for your project.