CS 485-006, Spring 2016
Research paper
Due: Friday, 29 April, 2016 by 11:59:59 PM.
This assignment is individual work. All materials
referenced must be cited appropriately.
NOTE: This assignment is for graduate students and
students taking the class for Honors credit, for whom it is worth 5%
of the final grade.
This assignment is not available to other students for extra
credit.
Write a five- to ten-page research paper on a topic related to systems
programming or operating systems. Your paper may take the form of a
literature review, an analysis of a piece of systems software, a
(thoroughly documented and analyzed) performance experiment, or a
new piece of systems software. See below for a list of
example topics.
Papers should be written in a form that would be acceptible for
publication. I recommend typesetting your paper in LaTeX, but
Microsoft Word is also acceptible. You way wish to use a document
template or stylesheet provided by a computer science journal, but
the default LaTeX article.cls
is acceptible.
As with any academic paper, include citations for all sources you
referenced while researching your article.
All submissions for this assignment should be made
by email to Dr Moore.
- By Friday 25 March: Select a topic and
clear it with Dr Moore.
-
By Friday 8 April: Submit a short report on
your progress. Include at least three relevant citations that will
appear in your paper, at least one of which appears in a peer-reviewed
academic journal (or conference proceedings).
-
By Friday, 29 April: Submit your final paper.
Your submission should be a
.zip
or .tar.gz
file containing the following:
- A fully processed PDF version of your paper.
- Your paper's "source code", in LaTeX or Word format.
- Any figures or diagrams used in your paper, if they are
not already included in the source code.
-
Source code for any software you developed for the paper
(profiling scripts, code implementing an algorithm, etc.).
Here are a few example topics to get you thinking. You are not restricted
to these topics, and are in fact encouraged to develop your own. All
topics should be discussed with and approved by Dr Moore before beginning
your research.
-
Analyze a security vulnerability or two (for example,
Heartbleed, ShellShock, RowHammer, or even the vulnerabilities
exploited by the Morris worm of 1988) in detail. Include
technical detail at the systems programming level of the causes of the
vulnerabilities, how they were/are/can be exploited, and how
they were corrected. These should be security vulnerabilities
at the systems level, so for example a cross-site scripting
attack (which happens entirely within the web browser at the
abstract level of URLs and requests) would not qualify, but
an exploit that causes the web browser to run arbitrary machine
code would qualify.
-
How do different operating systems handle dynamic libraries?
What decisions were made differently, what constraints led to
those decisions, and what practical implications do the
differences have for programmers today? Analyze at least three
different systems (most likely GNU/Linux, Windows, and something
else: perhaps OS X, or a significantly older version of Linux or
Windows where dynamic libraries work differently). Include
technical detail about the operation of the dynamic linker and
loader.
-
Measure and analyze the performance of different levels of the
memory hierarchy across a variety of CPU families in the same
architecture (for example, Intel vs AMD, or different generations
of Intel chips). How do the cache architectures differ and how is
that reflected in the performance? This paper would require
writing some benchmarking code and producing charts and other
visualizations.
-
What different memory allocation algorithms are used inside the
Linux kernel? How do they work, how do they differ, and in what
situations is one used instead of another? How (if at all) do
the algorithms take into account 1. the memory hierarchy and
2. multiprocessor machines?