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:

  1. 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.
  2. 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.
  3. Implement Conway's game of life, redrawing the screen repeatedly using ASCII characters.
  4. Implement Dijkstra's algorithm for computing the shortest path between cities.
  5. Implement a MIDI music player. MARS includes support for sound generation using system calls. C version not required.
  6. 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.
  7. Implement a program that performs some interesting floating-point number crunching (e.g., computing sin/cos using Taylor series, successive approximation problems, etc.).
  8. 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.
  9. 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.
  10. 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:

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:

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