Labs 11 and 12: Your Own Mini-Project
This will be the last lab assignment. You are asked to propose your own mini-project, and complete it in about two weeks. The complexity of what you propose should be roughly equivalent to two of the regular lab assignments.
You will demonstrate your working program during November 16-19 (C version), and during the period of November 18-23 (MIPS version). The demonstrations will take place during office hours or times arranged for this purpose and posted on the class website.
Here are just a few examples to help you in proposing your own mini-project:
- Building upon Lab 7 to develop a picture manipulation program. For example, given a PPM or PGM image (you can specify maximum size your program will handle), your program could enlarge or shrink it (by simple factors of 2, 3 or 4, for example), or implement a simple blur filter, etc.
- Implement a program that calculates statistics of a set of numbers, e.g., mean, variance, etc. You should either include floating-point calculations (in C and assembly), or some other feature to make this non-trivial.
- Implement Conway's game of life, redrawing the screen repeatedly using ASCII characters.
- Implement Dijkstra's algorithm for computing the shortest path between cities.
- Implement a MIDI music player. MARS includes support for sound generation using system calls. C version not required.
- Design an RPN (reverse Polish notation) calculator. It must handle at least the following operations: add, subtract, multiply and divide over integers. For example, the expression 16 10 - 5 3 - / should give you 3.
- Implement a program that performs some interesting floating-point number crunching (e.g., computing sin/cos using Taylor series, successive approximation problems, etc.).
- Implement a program that solves the Towers of Hanoi problem using recursion. Be sure the number of disks can be varied during the demo, and that the output is easy to understand.
- Implement a program with sorting and searching capabilities beyond the basic sort of Labs 4 and 5. For example, you could implement quick-sort or merge-sort recursively.
- Implement a 2-player tic-tac-toe game in which your program manages and displays the board and announces the result; your program need not play against you.
The above are just a few examples. You are encouraged to propose any other interesting problem you would like to solve. You will likely have a lot more fun with the project if you come up with your own idea. But, be sure that it can be completed within the time-frame! The work involved should be approximately equal to that of two lab assignments. If you are thinking of proposing a project that will likely require more than 25 lines of C code and/or more than 100 lines of MIPS assembly, you are strongly encouraged to propose something simpler!
As a general guide, in order to make your project be of adequate complexity/challenge, please try to incorporate at least one (or more) of the following:
- Recursion
- Data structures (e.g., stacks, queues, structures, multidimensional arrays, etc.)
- Fancy I/O (e.g., file I/O, or nicely formatted text output, ASCII art, etc.)
- Non-trivial arithmetic (e.g., floating-point, matrix operations, etc.)
- Complex decision making (e.g., deeply nested conditionals typical of AI)
Your project will be graded on (i) adequacy of difficulty/challenge; and (ii) quality of implementation. Exceptionally good projects may receive extra credit. You must first implement your mini-project as a C program, and only then in MIPS assembly.
Timeline:
- Proposal (November 12, 11:55pm): Submit a brief (1-2 paras only) proposal on what you intend to implement. Include enough detail so we can judge the level of difficulty and give you feedback. Include your rough estimate of how many lines of C code and MIPS assembly code will be needed. Submit your proposal using Sakai.
- C Demo (November 16-19): You will demonstrate your C implementation during the times made available in this period. Sign up for a slot on the class website.
- MIPS Demo (November 18-23): You will demonstrate your MIPS implementation during the times made available in this period. Sign up for a slot on the class website. There will be no demos after Nov 23.
What to submit: We will update the website with submission instructions and a schedule for demonstrations as we get closer to the deadline.
9 November 2015, Montek Singh, montek@cs.unc.edu