Assembly Language: Class Project 2
CS 301 Project, Dr. Lawlor
From the syllabus:
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!
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.
Su Mo Tu We Th Fr Sa
18 19 20 21 22 23 24
25 26 27 28 29 30 <- topic email
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, 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
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
Style and clean code count! Due by midnight the day of the final exam, Friday, December 14.
- "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.
Typical grade breakdown: project grade = 30% rough draft + 20% presentation + 50% final code
Example Project TopicsPick 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!