TO-DO LIST
ABET Assessment
- Outcome A - An Ability to Apply Knowledge of Science and Engineering Fundamentals
- (i.e. COMP 53 material)
- Outcome B - An Ability to Design and Conduct Experiments, as Well as to Analyze and Interpret Data
- Outcome K - An Ability to Use the Techniques, Skills, and Modern Engineering Tools Necessary for Engineering Practice
2017 Spring Changes
- ******* SWITCH TO ARM ******
- Use this simulator? http://salmanarif.bitbucket.org/visual/
- Use this simulator? http://armsim.cs.uvic.ca/
2016 Fall Changes
- Vivek: Lab 5 -- Image Amplification
2016 Spring Changes
- Vivek: Lab 4 - Snakes game
- Vivek: Lab 5 - Canny Edge Detector
- Jeff: Lab 12 - Hangman game
MISC IDEAS
- Lab 10 - MIPS 1
- Add a sixth exercise to the lab. Have funA() call funB() call funC(). Each should have local variables and print them before/after calling the next function in the sequence, so that students have to use the stack to store $ra and the local variables.
- Lab 11 - MIPS 2
- A few people tried really hard to avoid using the floating-point square root instruction by having a sequence of if-statements test for all squares (1, 4, 9, 16, 25, ... 81). If you want them to use floating-point square root, require it! (Also, consider dropping the simplification that they can have two human players instead of 1 human and 1 computer)
- Lab 8 - Networking
- Add a extra-credit option to download.py: Display a "progress bar" (## bytes downloaded / ## total bytes - ##% done). Warren implemented this already.
- Labs 9 (Endianness) and 12 (Networking)
- Endianness is boring. Expand the networking lab to have students implement a client and server, and then work-in endianness here (where a programmer would naturally be concerned about endianness between different computer systems).
- It would be great if there was a big-endian machine someone one campus that the students could verify interoperation with...
- Switch to MARS simulator (more syscalls, perhaps a nicer GUI?. The MIDI syscalls could be a fun lab exercise...)
- Lab: Benchmark hard drive?
- Lab: Benchmark SSD?
- Lab: Implement your own version of malloc() and free()
- Lab: Write a cache SIMULATOR to understand how caches work
- This is too hardware-oriented for the class, which is supposed to focus only on what the programmer needs to understand about hardware)
- Lab: C Programming
- The linker exercises took a lot of time for very little knowledge. Consider cutting or seriously condensing...
- Lab: Operating Systems
- What does the operating system DO for you? (Networking, device management, IO, memory, scheduling, etc...)
- Mini labs each focused on a different service provided by the kernel?
- Lots of possibilities here!!
MIPS Project Ideas:
Program 1: Implement a simple W=X*Y+Z-A*3 ... style equation
Program 2: Implement a matrix multiply equation. (Fix the array size or have it variable?)
Program 3: Implement the bubble sort as a FUNCTION? (http://www.cse.sc.edu/~jbakos/212/projects/project1.pdf)
Program 4: Implement the recursive Fibonacci function? (http://www.cs.jhu.edu/~masson/csf333/spim-labs/lab2f2002.html)
Fancy project! (CRC calculation: http://www.ee.unlv.edu/~meiyang/cpe404/project1.pdf)
Fancy project! (Vowels in your name: http://www.ecs.umass.edu/ece232/projects/lab1.pdf)
BIG project (Write Minesweep in C, and again in assembly) - http://users.ece.gatech.edu/~linda/2035/Fall12/Project%201/Project1-v2.pdf