Assembly Language: Class Project 2
CS 301 Project, Dr. Lawlor
From the syllabus:
PROJ: Two
sizable class projects--big programs written in, or relating to
assembly, with a short in-class presentation.
Each project is 10% of your course grade, so it should have some pretty good stuff! Conversely, the total end-to-end time for the project is only a few weeks, so keep it manageable!
Project Deliverables
November 2012
Su Mo Tu We Th Fr Sa
18 19 20 21 22 23 24
25 26 27 28 29 30 <- topic email
December 2012
Su Mo Tu We Th Fr Sa
2 3 4 5 6 7 8 <- working draft; in-class presentations
9 10 11 12 13 14 15 <- final exam & final code
By Monday, November 26 I'd like you to send me a brief topic email describing what you want to do, and how you want to do it.
By Monday, December 3 I'd like some rough draft code,
which should work and do most of what you want, but not necessarily do
everything you want to do, or be fully polished or tuned.
The presentation is a
very short, 3-minute presentation in class on Friday, December 7. Your
presentation should clearly describe WHO you are, WHAT you did, HOW you
did it, and WHY you chose to do it that way. Bring a laptop to
project your code, demo, slides, and/or figures, or email me your presentation materials the day before if you'd like to present from my laptop.
The final code should
be fully debugged, polished, tuned, commented, and include at least a
short README
explaining what
it does, how fast it runs (and how you measured this), where it runs (e.g., Win32 using Code::Blocks), and what its results mean. You'll be graded on a
combination of:
- "ambition": doing something interesting. A two-input four
operation integer calculator isn't very ambitious; a floating point
calculator with base conversion and builtin memory is more ambitious.
- "correctness": making your code bulletproof. No crashes, even if the user enters bad input. No bugs, even for tricky corner cases.
- "style": doing things well, with clear comments, documentation, and program structure. No duplicate code. Cleanly factored classes, with user interface code separated from actual processing.
Style and clean code count! Due by midnight the day of the final exam, Friday, December 14.
Typical grade breakdown: project grade = 30% rough draft + 20% presentation + 50% final code
Example Project Topics
Pick one! Anything
assembly-related, or related to any of the many things we've discussed
in class, are fair game. Remember you will need to tell me how
fast it runs, so leave time for a performance analysis!
- Extend your project 1 project: make it faster, more interesting,
more parameterizable, or run on a different language or machine.
- Do something interesting with SSE. Almost any code where
different floats do different things very
interesting under SSE.
- Build a working dynamic translation engine, for any processor.
- Use signals or mmap to do something weird in any program.
- Benchmark and then tune any existing program. No assembly code is needed!