CS 641 Paper, Dr. Lawlor
I'd like you to write a research paper. It doesn't have to be a
completely novel topic (no paper actually is), and it doesn't have to
describe only your own work (referencing other people's work is always
recommended), but it has to look like a research paper, and consist of
100% your own writing,
Elements of a Research Paper
Every single research paper on the planet has:
- A title. This is surprisingly tough to pick, since it needs to be short, unambiguous, and attention-grabbing.
- A list of authors. This is you (for now).
- An abstract, a short one-paragraph blurb describing why people
should read your paper. I usually write this last (bottom
up). Some people write this first (top down).
- An introduction, basically a longer version of the abstract.
- Comparisons and citations to prior work.
- A detailed quantitative comparison of your and prior work.
- Conclusion section, where you describe what you learned doing the work, and what remains for the future.
- A references section, where you expand your citations.
Research or Applied Topics
These topics are research of the form "Learn and present what people have done about X" rather than applied
work of the form "Build a new X".
Here are some applied
project possibilities. As long as it's even tangentially related
to something we covered in class, it counts. Do keep in mind that
the end product is not code, it's a detailed document describing prior
work on similar topics, explaining how your implementation is
different, and analyzing the performance of your code.
- Write up the rationale, history, and advantages/disadvantages of any current hardware topic, such as:
- Pipelining, especially the very deep piplines of the Pentium 4
- Out-of-order execution
- Register renaming
- Branch prediction, branch history, and execution speculation
- Cache prefetching and out-of-order loads and stores
- Describe how the design limitations and goals of nonstandard computing platforms differ from conventional computing, such as:
- High-performance computing systems, such as Blue Gene or anything on the Top500 list.
- Consumer game consoles, such as the PlayStation 3, Xbox 360, or Wii.
- Embedded systems, such as cell phones or microwave ovens.
- Pick any hardware-related article from Ars Technica. Explain what they're talking about in detail.
- Pick a CPU architecture from sandpile.org. Compare this architecture's hardware design, in terms of achievable performance, with competing architectures.
- Describe performance counters, which are useful for understanding code performance and pipelining (see PCL)
- Describe a strange fabrication substrate or nonstandard
computing scheme, such as Biological Computing, Quantum Computing,
self-organizing DNA or polymer nanofabrication, etc.
- Describe a novel data storage architecture, such as perpendicular bit recording, magnetoresistive memory, nanowire memory.
a semiconductor or PCB fabrication process in detail,
such as the problems encountered during deep-submicron
photolithography, or the interelationship between planarization and
metal layers in CMOS fabrication.
- Describe the historical evolution of some computer architecture, such as SPARC or Motorola's 68000.
- Explore the decline and fall of some popular computer architecture, such as the VAX ("All the world's a VAX!" Or, er, it was...) Be sure to cite Percy Shelly's poem Ozymandias.
- SIMD Within A Register:
- x86 SSE/AVX or ARM VFP:
- Write and tune a real implementation of any
interesting algorithm: long vector adds, dot product, matrix-vector
multiply, fractal rendering, etc.
- Write anything interesting on the GPU, using any of the GPU interfaces: GLSL, CUDA, OpenCL.
- Give me a detailed topic outline by Tuesday, February 28.
- Give me a rough draft on Thursday, March 8.
- Give me an anonymous review draft on Tuesday, March 20. I will send these around the class for anonymous peer review (double blind).
- Reviewer feedback must be returned by Tuesday, March 27.
- Give us a presentation and final draft by Thursday, March 29.