# HG changeset patch
# User Robert McIntyre <rlm@mit.edu>
# Date 1395374929 14400
# Node ID c2c28c3e27c40327b65069eb32fb8ac0ff1dfa0f
# Parent  7f3581dc58ff9b5d804d6efa19f0b6330ec1ea6e
get mit thesis template file.

diff -r 7f3581dc58ff -r c2c28c3e27c4 .hgignore
--- a/.hgignore	Thu Mar 20 22:57:06 2014 -0400
+++ b/.hgignore	Fri Mar 21 00:08:49 2014 -0400
@@ -15,6 +15,7 @@
 libbulletjme.so
 java/build/*
 java/dist/*
+thesis/tmp
 
 syntax: regexp
 ^.*blend\d$
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/README.bibliography
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/README.bibliography	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,28 @@
+This file gives an overview on what you will need to do to create a
+bibliographic database for references, as well as create the actual
+bibliography for your thesis.
+
+You should not need to touch the file biblio.tex.  This merely tells
+latex to look for the file with the bibliographic info.  The file you
+want to edit is main.bib.  For each entry, use the appropriate style
+as designated in the file.
+
+Citing your references:
+
+When you cite a reference, you need to use the ``key'' you declare in
+main.bib for the entry.  No one ever sees the keys, but you'll want to
+use something you will easily remember.  For instance, if you had an
+entry with:
+
+	key=geer1
+
+Then you would use \cite{geer1} to reference it within your thesis.
+
+NOTE: You can not include references in your bibliography that are
+never cited in your paper by default. If you need to do this, create a
+key for the entry and at the end of your thesis include the line:
+
+\nocite{key}
+
+This should be done for every entry which is not explicitly cited.
+
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/README.main
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/README.main	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,54 @@
+This file explains the options available to you for editting the file
+main.tex.
+
+The commands in the this file allow you to specify options such as
+spacing, double-sided printing, a draft copy, etc.   By default, 12pt
+and lgrind are included; lgrind is the 2e style for including code in
+your thesis.
+
+\documentclass[12pt]{mitthesis}
+\usepackage{lgrind}
+\pagestyle{plain}
+
+You can add options in the documentclass line as follows:
+
+	o  singlespace
+
+	\documentclass[12pt,singlespace]{mitthesis}
+	
+	o  twoside
+
+	\documentclass[12pt,twoside]{mitthesis}
+
+	o  draft   (make sure to change the pagestyle to drafthead as
+			well)
+
+	\documentclass[12pt,draft]{mitthesis}
+	\usepackage{lgrind}
+	\pagestyle{drafthead}
+
+	o vi   (for course vi and course viii theses)
+
+	\documentclass[12pt,vi]{mitthesis}
+
+Any options you would use for report.sty will work here as well.
+
+
+You should not need to change the first three lines and last two lines
+below.  Be sure to include an \include command for each file you are
+including in your thesis.
+  
+\include{cover}
+\pagestyle{plain}
+\include{contents}
+\include{chap1}
+\include{chap2}
+\appendix
+\include{appa}
+\include{appb}
+\include{biblio}
+\end{document}
+
+Comment: to include appendices use a single \appendix command followed by
+a number of \include{} commands as many files as needed, each of which
+should contain a \chapter{} command for the appendix title.
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/README.text
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/README.text	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,34 @@
+This file includes the basic commands you will need to use within each
+chapter of your thesis.
+
+The file chap1.tex is a sample first chapter.  To get started, you may
+just want to replace the text and commands in that file as needed.  In
+general though, for each new chapter you want to do the following:
+
+	o Make sure the name has the extension .tex .  Otherwise, you
+	can call it anything you want.  For ease of use, all the
+	examples use chap1, chap2, etc.
+
+	o Add a line to the file main.tex that reads:
+
+	\include{yourfilename}
+
+	This should not include the .tex extension, because latex
+	assumes that is there.
+
+Basic syntax:
+
+	o The first line of each chapter should be:
+
+	\chapter{Chapter Title}
+
+	o To start a new section (labeled chap#.sec# -- as in 1.1,
+	1.2, etc):
+
+	\section{Section Heading}
+
+	You can also include subsections:
+
+	\subsection{Heading}
+
+
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/abstract.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/abstract.tex	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,22 @@
+% $Log: abstract.tex,v $
+% Revision 1.1  93/05/14  14:56:25  starflt
+% Initial revision
+% 
+% Revision 1.1  90/05/04  10:41:01  lwvanels
+% Initial revision
+% 
+%
+%% The text of your abstract and nothing else (other than comments) goes here.
+%% It will be single-spaced and the rest of the text that is supposed to go on
+%% the abstract page will be generated by the abstractpage environment.  This
+%% file should be \input (not \include 'd) from cover.tex.
+In this thesis, I designed and implemented a compiler which performs
+optimizations that reduce the number of low-level floating point operations
+necessary for a specific task; this involves the optimization of chains of
+floating point operations as well as the implementation of a ``fixed'' point
+data type that allows some floating point operations to simulated with integer
+arithmetic.  The source language of the compiler is a subset of C, and the
+destination language is assembly language for a micro-floating point CPU.  An
+instruction-level simulator of the CPU was written to allow testing of the
+code.  A series of test pieces of codes was compiled, both with and without
+optimization, to determine how effective these optimizations were.
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/appa.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/appa.tex	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,15 @@
+\chapter{Tables}
+
+\begin{table}
+\caption{Armadillos}
+\label{arm:table}
+\begin{center}
+\begin{tabular}{||l|l||}\hline
+Armadillos & are \\\hline
+our	   & friends \\\hline
+\end{tabular}
+\end{center}
+\end{table}
+
+\clearpage
+\newpage
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/appb.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/appb.tex	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,19 @@
+\chapter{Figures}
+
+\vspace*{-3in}
+
+\begin{figure}
+\vspace{2.4in}
+\caption{Armadillo slaying lawyer.}
+\label{arm:fig1}
+\end{figure}
+\clearpage
+\newpage
+
+\begin{figure}
+\vspace{2.4in}
+\caption{Armadillo eradicating national debt.}
+\label{arm:fig2}
+\end{figure}
+\clearpage
+\newpage
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/biblio.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/biblio.tex	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,8 @@
+%% This defines the bibliography file (main.bib) and the bibliography style.
+%% If you want to create a bibliography file by hand, change the contents of
+%% this file to a `thebibliography' environment.  For more information 
+%% see section 4.3 of the LaTeX manual.
+\begin{singlespace}
+\bibliography{main}
+\bibliographystyle{plain}
+\end{singlespace}
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/chap1.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/chap1.tex	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,250 @@
+%% This is an example first chapter.  You should put chapter/appendix that you
+%% write into a separate file, and add a line \include{yourfilename} to
+%% main.tex, where `yourfilename.tex' is the name of the chapter/appendix file.
+%% You can process specific files by typing their names in at the 
+%% \files=
+%% prompt when you run the file main.tex through LaTeX.
+\chapter{Introduction}
+
+Micro-optimization is a technique to reduce the overall operation count of
+floating point operations.  In a standard floating point unit, floating
+point operations are fairly high level, such as ``multiply'' and ``add'';
+in a micro floating point unit ($\mu$FPU), these have been broken down into
+their constituent low-level floating point operations on the mantissas and
+exponents of the floating point numbers.
+
+Chapter two describes the architecture of the $\mu$FPU unit, and the
+motivations for the design decisions made.
+
+Chapter three describes the design of the compiler, as well as how the
+optimizations discussed in section~\ref{ch1:opts} were implemented.
+
+Chapter four describes the purpose of test code that was compiled, and which
+statistics were gathered by running it through the simulator.  The purpose
+is to measure what effect the micro-optimizations had, compared to
+unoptimized code.  Possible future expansions to the project are also
+discussed.
+
+\section{Motivations for micro-optimization}
+
+The idea of micro-optimization is motivated by the recent trends in computer
+architecture towards low-level parallelism and small, pipelineable
+instruction sets \cite{patterson:risc,rad83}.  By getting rid of more
+complex instructions and concentrating on optimizing frequently used
+instructions, substantial increases in performance were realized.
+
+Another important motivation was the trend towards placing more of the
+burden of performance on the compiler.  Many of the new architectures depend
+on an intelligent, optimizing compiler in order to realize anywhere near
+their peak performance
+\cite{ellis:bulldog,pet87,coutant:precision-compilers}.  In these cases, the
+compiler not only is responsible for faithfully generating native code to
+match the source language, but also must be aware of instruction latencies,
+delayed branches, pipeline stages, and a multitude of other factors in order
+to generate fast code \cite{gib86}.
+
+Taking these ideas one step further, it seems that the floating point
+operations that are normally single, large instructions can be further broken
+down into smaller, simpler, faster instructions, with more control in the
+compiler and less in the hardware.  This is the idea behind a
+micro-optimizing FPU; break the floating point instructions down into their
+basic components and use a small, fast implementation, with a large part of
+the burden of hardware allocation and optimization shifted towards
+compile-time.
+
+Along with the hardware speedups possible by using a $\mu$FPU, there are
+also optimizations that the compiler can perform on the code that is
+generated.  In a normal sequence of floating point operations, there are
+many hidden redundancies that can be eliminated by allowing the compiler to
+control the floating point operations down to their lowest level.  These
+optimizations are described in detail in section~\ref{ch1:opts}.
+
+\section{Description of micro-optimization}\label{ch1:opts}
+
+In order to perform a sequence of floating point operations, a normal FPU
+performs many redundant internal shifts and normalizations in the process of
+performing a sequence of operations.  However, if a compiler can
+decompose the floating point operations it needs down to the lowest level,
+it then can optimize away many of these redundant operations.  
+
+If there is some additional hardware support specifically for
+micro-optimization, there are additional optimizations that can be
+performed.  This hardware support entails extra ``guard bits'' on the
+standard floating point formats, to allow several unnormalized operations to
+be performed in a row without the loss information\footnote{A description of
+the floating point format used is shown in figures~\ref{exponent-format}
+and~\ref{mantissa-format}.}.  A discussion of the mathematics behind
+unnormalized arithmetic is in appendix~\ref{unnorm-math}.
+
+The optimizations that the compiler can perform fall into several categories:
+
+\subsection{Post Multiply Normalization}
+
+When more than two multiplications are performed in a row, the intermediate
+normalization of the results between multiplications can be eliminated.
+This is because with each multiplication, the mantissa can become
+denormalized by at most one bit.  If there are guard bits on the mantissas
+to prevent bits from ``falling off'' the end during multiplications, the
+normalization can be postponed until after a sequence of several
+multiplies\footnote{Using unnormalized numbers for math is not a new idea; a
+good example of it is the Control Data CDC 6600, designed by Seymour Cray.
+\cite{thornton:cdc6600} The CDC 6600 had all of its instructions performing
+unnormalized arithmetic, with a separate {\tt NORMALIZE} instruction.}.
+
+% This is an example of how you would use tgrind to include an example
+% of source code; it is commented out in this template since the code
+% example file does not exist.  To use it, you need to remove the '%' on the
+% beginning of the line, and insert your own information in the call.
+%
+%\tagrind[htbp]{code/pmn.s.tex}{Post Multiply Normalization}{opt:pmn}
+
+As you can see, the intermediate results can be multiplied together, with no
+need for intermediate normalizations due to the guard bit.  It is only at
+the end of the operation that the normalization must be performed, in order
+to get it into a format suitable for storing in memory\footnote{Note that
+for purposed of clarity, the pipeline delays were considered to be 0, and
+the branches were not delayed.}.
+
+\subsection{Block Exponent}
+
+In a unoptimized sequence of additions, the sequence of operations is as
+follows for each pair of numbers ($m_1$,$e_1$) and ($m_2$,$e_2$).
+\begin{enumerate}
+  \item Compare $e_1$ and $e_2$.
+  \item Shift the mantissa associated with the smaller exponent $|e_1-e_2|$
+        places to the right.
+  \item Add $m_1$ and $m_2$.
+  \item Find the first one in the resulting mantissa.
+  \item Shift the resulting mantissa so that normalized
+  \item Adjust the exponent accordingly.
+\end{enumerate}
+
+Out of 6 steps, only one is the actual addition, and the rest are involved
+in aligning the mantissas prior to the add, and then normalizing the result
+afterward.  In the block exponent optimization, the largest mantissa is
+found to start with, and all the mantissa's shifted before any additions
+take place.  Once the mantissas have been shifted, the additions can take
+place one after another\footnote{This requires that for n consecutive
+additions, there are $\log_{2}n$ high guard bits to prevent overflow.  In
+the $\mu$FPU, there are 3 guard bits, making up to 8 consecutive additions
+possible.}.  An example of the Block Exponent optimization on the expression
+X = A + B + C is given in figure~\ref{opt:be}.
+
+% This is an example of how you would use tgrind to include an example
+% of source code; it is commented out in this template since the code
+% example file does not exist.  To use it, you need to remove the '%' on the
+% beginning of the line, and insert your own information in the call.
+%
+%\tgrind[htbp]{code/be.s.tex}{Block Exponent}{opt:be}
+
+\section{Integer optimizations}
+
+As well as the floating point optimizations described above, there are
+also integer optimizations that can be used in the $\mu$FPU.  In concert
+with the floating point optimizations, these can provide a significant
+speedup.  
+
+\subsection{Conversion to fixed point}
+
+Integer operations are much faster than floating point operations; if it is
+possible to replace floating point operations with fixed point operations,
+this would provide a significant increase in speed.
+
+This conversion can either take place automatically or or based on a
+specific request from the programmer.  To do this automatically, the
+compiler must either be very smart, or play fast and loose with the accuracy
+and precision of the programmer's variables.  To be ``smart'', the computer
+must track the ranges of all the floating point variables through the
+program, and then see if there are any potential candidates for conversion
+to floating point.  This technique is discussed further in
+section~\ref{range-tracking}, where it was implemented.
+
+The other way to do this is to rely on specific hints from the programmer
+that a certain value will only assume a specific range, and that only a
+specific precision is desired.  This is somewhat more taxing on the
+programmer, in that he has to know the ranges that his values will take at
+declaration time (something normally abstracted away), but it does provide
+the opportunity for fine-tuning already working code.
+
+Potential applications of this would be simulation programs, where the
+variable represents some physical quantity; the constraints of the physical
+system may provide bounds on the range the variable can take.
+\subsection{Small Constant Multiplications}
+
+One other class of optimizations that can be done is to replace
+multiplications by small integer constants into some combination of
+additions and shifts.  Addition and shifting can be significantly faster
+than multiplication.  This is done by using some combination of
+\begin{eqnarray*}
+a_i & = & a_j + a_k \\
+a_i & = & 2a_j + a_k \\
+a_i & = & 4a_j + a_k \\
+a_i & = & 8a_j + a_k \\
+a_i & = & a_j - a_k \\
+a_i & = & a_j \ll m \mbox{shift}
+\end{eqnarray*}
+instead of the multiplication.  For example, to multiply $s$ by 10 and store
+the result in $r$, you could use:
+\begin{eqnarray*}
+r & = & 4s + s\\
+r & = & r + r
+\end{eqnarray*}
+Or by 59:
+\begin{eqnarray*}
+t & = & 2s + s \\
+r & = & 2t + s \\
+r & = & 8r + t
+\end{eqnarray*}
+Similar combinations can be found for almost all of the smaller
+integers\footnote{This optimization is only an ``optimization'', of course,
+when the amount of time spent on the shifts and adds is less than the time
+that would be spent doing the multiplication.  Since the time costs of these
+operations are known to the compiler in order for it to do scheduling, it is
+easy for the compiler to determine when this optimization is worth using.}.
+\cite{magenheimer:precision}
+
+\section{Other optimizations}
+
+\subsection{Low-level parallelism}
+
+The current trend is towards duplicating hardware at the lowest level to
+provide parallelism\footnote{This can been seen in the i860; floating point
+additions and multiplications can proceed at the same time, and the RISC
+core be moving data in and out of the floating point registers and providing
+flow control at the same time the floating point units are active. \cite{byte:i860}}
+
+Conceptually, it is easy to take advantage to low-level parallelism in the
+instruction stream by simply adding more functional units to the $\mu$FPU,
+widening the instruction word to control them, and then scheduling as many
+operations to take place at one time as possible.
+
+However, simply adding more functional units can only be done so many times;
+there is only a limited amount of parallelism directly available in the
+instruction stream, and without it, much of the extra resources will go to
+waste.  One process used to make more instructions potentially schedulable
+at any given time is ``trace scheduling''.  This technique originated in the
+Bulldog compiler for the original VLIW machine, the ELI-512.
+\cite{ellis:bulldog,colwell:vliw}  In trace scheduling, code can be
+scheduled through many basic blocks at one time, following a single
+potential ``trace'' of program execution.  In this way, instructions that
+{\em might\/} be executed depending on a conditional branch further down in
+the instruction stream are scheduled, allowing an increase in the potential
+parallelism.  To account for the cases where the expected branch wasn't
+taken, correction code is inserted after the branches to undo the effects of
+any prematurely executed instructions.
+
+\subsection{Pipeline optimizations}
+
+In addition to having operations going on in parallel across functional
+units, it is also typical to have several operations in various stages of
+completion in each unit.  This pipelining allows the throughput of the
+functional units to be increased, with no increase in latency.
+
+There are several ways pipelined operations can be optimized.  On the
+hardware side, support can be added to allow data to be recirculated back
+into the beginning of the pipeline from the end, saving a trip through the
+registers.  On the software side, the compiler can utilize several tricks to
+try to fill up as many of the pipeline delay slots as possible, as
+seendescribed by Gibbons. \cite{gib86}
+
+
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/contents.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/contents.tex	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,11 @@
+  % -*- Mode:TeX -*-
+%% This file simply contains the commands that actually generate the table of
+%% contents and lists of figures and tables.  You can omit any or all of
+%% these files by simply taking out the appropriate command.  For more
+%% information on these files, see appendix C.3.3 of the LaTeX manual. 
+\tableofcontents
+\newpage
+\listoffigures
+\newpage
+\listoftables
+
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/cover.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/cover.tex	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,132 @@
+% -*-latex-*-
+% 
+% For questions, comments, concerns or complaints:
+% thesis@mit.edu
+% 
+%
+% $Log: cover.tex,v $
+% Revision 1.8  2008/05/13 15:02:15  jdreed
+% Degree month is June, not May.  Added note about prevdegrees.
+% Arthur Smith's title updated
+%
+% Revision 1.7  2001/02/08 18:53:16  boojum
+% changed some \newpages to \cleardoublepages
+%
+% Revision 1.6  1999/10/21 14:49:31  boojum
+% changed comment referring to documentstyle
+%
+% Revision 1.5  1999/10/21 14:39:04  boojum
+% *** empty log message ***
+%
+% Revision 1.4  1997/04/18  17:54:10  othomas
+% added page numbers on abstract and cover, and made 1 abstract
+% page the default rather than 2.  (anne hunter tells me this
+% is the new institute standard.)
+%
+% Revision 1.4  1997/04/18  17:54:10  othomas
+% added page numbers on abstract and cover, and made 1 abstract
+% page the default rather than 2.  (anne hunter tells me this
+% is the new institute standard.)
+%
+% Revision 1.3  93/05/17  17:06:29  starflt
+% Added acknowledgements section (suggested by tompalka)
+% 
+% Revision 1.2  92/04/22  13:13:13  epeisach
+% Fixes for 1991 course 6 requirements
+% Phrase "and to grant others the right to do so" has been added to 
+% permission clause
+% Second copy of abstract is not counted as separate pages so numbering works
+% out
+% 
+% Revision 1.1  92/04/22  13:08:20  epeisach
+
+% NOTE:
+% These templates make an effort to conform to the MIT Thesis specifications,
+% however the specifications can change.  We recommend that you verify the
+% layout of your title page with your thesis advisor and/or the MIT 
+% Libraries before printing your final copy.
+\title{An Optimizing Compiler for Low-Level Floating Point Operations}
+
+\author{Robert McIntyre}
+% If you wish to list your previous degrees on the cover page, use the 
+% previous degrees command:
+%       \prevdegrees{A.A., Harvard University (1985)}
+% You can use the \\ command to list multiple previous degrees
+%       \prevdegrees{B.S., University of California (1978) \\
+%                    S.M., Massachusetts Institute of Technology (1981)}
+\department{Department of Electrical Engineering and Computer Science}
+
+% If the thesis is for two degrees simultaneously, list them both
+% separated by \and like this:
+% \degree{Doctor of Philosophy \and Master of Science}
+\degree{Bachelor of Science in Computer Science and Engineering}
+
+% As of the 2007-08 academic year, valid degree months are September, 
+% February, or June.  The default is June.
+\degreemonth{June}
+\degreeyear{1990}
+\thesisdate{May 18, 1990}
+
+%% By default, the thesis will be copyrighted to MIT.  If you need to copyright
+%% the thesis to yourself, just specify the `vi' documentclass option.  If for
+%% some reason you want to exactly specify the copyright notice text, you can
+%% use the \copyrightnoticetext command.  
+%\copyrightnoticetext{\copyright IBM, 1990.  Do not open till Xmas.}
+
+% If there is more than one supervisor, use the \supervisor command
+% once for each.
+\supervisor{William J. Dally}{Associate Professor}
+
+% This is the department committee chairman, not the thesis committee
+% chairman.  You should replace this with your Department's Committee
+% Chairman.
+\chairman{Arthur C. Smith}{Chairman, Department Committee on Graduate Theses}
+
+% Make the titlepage based on the above information.  If you need
+% something special and can't use the standard form, you can specify
+% the exact text of the titlepage yourself.  Put it in a titlepage
+% environment and leave blank lines where you want vertical space.
+% The spaces will be adjusted to fill the entire page.  The dotted
+% lines for the signatures are made with the \signature command.
+\maketitle
+
+% The abstractpage environment sets up everything on the page except
+% the text itself.  The title and other header material are put at the
+% top of the page, and the supervisors are listed at the bottom.  A
+% new page is begun both before and after.  Of course, an abstract may
+% be more than one page itself.  If you need more control over the
+% format of the page, you can use the abstract environment, which puts
+% the word "Abstract" at the beginning and single spaces its text.
+
+%% You can either \input (*not* \include) your abstract file, or you can put
+%% the text of the abstract directly between the \begin{abstractpage} and
+%% \end{abstractpage} commands.
+
+% First copy: start a new page, and save the page number.
+\cleardoublepage
+% Uncomment the next line if you do NOT want a page number on your
+% abstract and acknowledgments pages.
+% \pagestyle{empty}
+\setcounter{savepage}{\thepage}
+\begin{abstractpage}
+\input{abstract}
+\end{abstractpage}
+
+% Additional copy: start a new page, and reset the page number.  This way,
+% the second copy of the abstract is not counted as separate pages.
+% Uncomment the next 6 lines if you need two copies of the abstract
+% page.
+% \setcounter{page}{\thesavepage}
+% \begin{abstractpage}
+% \input{abstract}
+% \end{abstractpage}
+
+\cleardoublepage
+
+\section*{Acknowledgments}
+
+This is the acknowledgements section.  You should replace this with your
+own acknowledgements.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% -*-latex-*-
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/lgrind.sty
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/lgrind.sty	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,228 @@
+%%
+%% This is file `lgrind.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lgrind.dtx  (with options: `package')
+%% 
+%% LGrind is used to format source code of different programming
+%% languages for LaTeX.
+%% 
+%% LGrind is a minor adaptation of Jerry Leichter's tgrind for LaTeX,
+%% which was a notable improvement upon Van Jacobsen's tgrind for
+%% plain TeX, which was adapted from vgrind, a troff prettyprinter.
+%% 
+%% Based on Van Jacobson's ``tgrindmac'', a macro package for TeX.
+%% Modified, 1987 by Jerry Leichter. Put '@' in all internal names.
+%% Modified, 1991 by George Reilly. Changed name from tgrind to lgrind.
+%% Modified, 1995 by Michael Piefel. Made it work with \LaTeXe.
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\ProvidesPackage{lgrind}
+          [1997/01/30 v3.4 LGrind environment and supporting stuff]
+\newcount\lc@unt
+\newcount\ln@xt
+\newcount\LGnuminterval
+\LGnuminterval=10
+\DeclareOption{nolineno}{\LGnuminterval=50000}
+\DeclareOption{lineno5}{\LGnuminterval=5}
+\newif\ifLGleftnum
+\DeclareOption{leftnum}{\LGleftnumtrue}
+\newskip\LGindent
+\LGindent=1.6667\parindent
+\DeclareOption{noindent}{\LGindent=0pt}
+\newif\ifLGnorules
+\DeclareOption{norules}{\LGnorulestrue}
+\newlength{\LGsloppy}
+\setlength{\LGsloppy}{7.2pt}
+\DeclareOption{fussy}{\LGsloppy=0pt}
+\newcommand{\DefaultProc}{\@gobble}
+\newcommand{\DefaultProcCont}{\@gobble}
+\DeclareOption{procnames}{
+\renewcommand{\DefaultProc}[1]{\renewcommand{\Procname}{#1}%
+\global\setbox\procbox=\hbox{\PNsize #1}}
+\renewcommand{\DefaultProcCont}[1]{\renewcommand\Procname{#1}
+\global\setbox\procbox=\hbox{\PNsize\dots #1}}}
+\newbox\procbox
+\newcommand{\Procname}{}
+\ProcessOptions
+\def\BGfont{\sffamily}
+\def\CMfont{\rmfamily\itshape}
+\def\NOfont{\sffamily}
+\def\KWfont{\rmfamily\bfseries}
+\def\STfont{\ttfamily}
+\def\VRfont{\rmfamily}
+\def\PNsize{\BGfont\small}
+\def\LGsize{\small}
+\def\LGfsize{\footnotesize}
+\newif\ifLGinline
+\newif\ifLGd@fault
+\def\LGbegin{\ifLGinline$\hbox\else$$\vbox\fi\bgroup\LGd@faulttrue}
+\def\LGend{\ifLGd@fault\egroup\ifLGinline$\else$$\fi\LGd@faultfalse\fi}
+\newif\ifc@mment
+\newif\ifstr@ng
+\newif\ifright@
+\newbox\ls@far
+\newbox\tb@x
+\newdimen\TBw@d
+\newdimen\@ts
+{\catcode`\_=\active \gdef\@setunder{\let_=\sp@ce}}
+\newcommand{\lgrindheader}{}
+\newcommand{\lgrindfilename}{}\newcommand{\lgrindfilesize}{}
+\newcommand{\lgrindmodyear}{}\newcommand{\lgrindmodmonth}{}
+\newcommand{\lgrindmodday}{}\newcommand{\lgrindmodtime}{}
+\newenvironment{lgrind}[1][1]{%
+\def\Line##1{\L{\LB{##1}}}%
+\newcommand{\Head}[1]{\gdef\lgrindhead{##1}}%
+\newcommand{\File}[6]{\gdef\lgrindfilename{##1}\message{(LGround: ##1)}%
+    \gdef\lgrindmodyear{##2}\gdef\lgrindmodmonth{##3}%
+    \gdef\lgrindmodday{##4}\gdef\lgrindmodtime{##5}%
+    \gdef\lgrindfilesize{##6}}%
+\let\Proc=\DefaultProc%
+\let\ProcCont=\DefaultProcCont%
+\hfuzz=\LGsloppy
+\def\NewPage{\filbreak\bigskip}%
+\ifLGinline
+ \def\L##1{\setbox\ls@far\null{\CF\strut##1}\ignorespaces}%
+\else
+ \let\r@ghtlno\relax\let\l@ftlno\relax
+ \ifnum\LGnuminterval>\z@
+  \ifLGleftnum
+   \def\l@ftlno{\ifvoid\procbox\ifnum\lc@unt>\ln@xt
+     \global\advance\ln@xt by\LGnuminterval
+     \llap{{\normalfont\scriptsize\the\lc@unt\quad}}\fi
+     \else\llap{\box\procbox\quad}\fi}%
+  \else
+   \def\r@ghtlno{\ifvoid\procbox\ifnum\lc@unt>\ln@xt
+     \global\advance\ln@xt by\LGnuminterval
+     \rlap{{\normalfont\scriptsize\enspace\the\lc@unt}}\fi
+     \else\rlap{\enspace\box\procbox}\fi}%
+  \fi
+ \fi
+ \def\L##1{\@@par\setbox\ls@far=\null\strut
+  \global\advance\lc@unt by1%
+  \hbox to \hsize{\hskip\LGindent\l@ftlno ##1\egroup%
+  \hfil\r@ghtlno}%
+  \ignorespaces}%
+\fi
+\lc@unt=#1\advance\lc@unt by-1%
+\ln@xt=\LGnuminterval\advance\ln@xt by-1%
+\loop\ifnum\lc@unt>\ln@xt\advance\ln@xt by\LGnuminterval\repeat%
+\def\LB{\hbox\bgroup\bgroup\box\ls@far\CF\let\next=}%
+\def\Tab##1{\egroup\setbox\tb@x=\lastbox\TBw@d=\wd\tb@x%
+ \advance\TBw@d by 1\@ts\ifdim\TBw@d>##1\@ts
+  \setbox\ls@far=\hbox{\box\ls@far \box\tb@x \sp@ce}\else
+  \setbox\ls@far=\hbox to ##1\@ts{\box\ls@far \box\tb@x \hfil}\fi\LB}%
+\ifLGinline\def\sp@ce{\hskip .3333em}%
+\else \setbox\tb@x=\hbox{\texttt{0}}%
+      \@ts=0.8\wd\tb@x \def\sp@ce{\hskip 1\@ts}\fi
+\catcode`\_=\active \@setunder
+\def\CF{\ifc@mment\CMfont\else\ifstr@ng\STfont\fi\fi}
+\def\N##1{{\NOfont ##1}\global\futurelet\next\ic@r}%
+\def\K##1{{\KWfont ##1}\global\futurelet\next\ic@r}%
+\def\V##1{{\VRfont ##1}\global\futurelet\next\ic@r}%
+\def\ic@r{\let\@tempa\/\ifx.\next\let\@tempa\relax%
+ \else\ifx,\next\let\@tempa\relax\fi\fi\@tempa}%
+\def\C{\egroup\bgroup\CMfont \global\c@mmenttrue \global\right@false}%
+\def\CE{\egroup\bgroup \global\c@mmentfalse}%
+\def\S{\egroup\bgroup\STfont \global\str@ngtrue}%
+\def\SE{\egroup\bgroup \global\str@ngfalse}%
+\def\,{\relax \ifmmode\mskip\thinmuskip \else\thinspace \fi}%
+\def\!{\relax \ifmmode\mskip-\thinmuskip \else\negthinspace \fi}%
+\def\CH##1##2##3{\relax\ifmmode ##1\relax
+\else\ifstr@ng ##2\relax\else$##3$\fi\fi }%
+\def\{{\CH\lbrace {\char'173}\lbrace }%
+\def\}{\CH\rbrace {\char'175}\rbrace }%
+\def\1{\CH///}%                                % /
+\def\2{\CH\backslash {\char'134}\backslash }%  % \
+\def\|{\CH|{\char'174}|}%
+\def\<{\CH<<<}%
+\def\>{\CH>>>}%
+\def\*{\CH***}\relax %\relax for DOCSTY
+\def\-{\CH---}%
+\def\_{\ifstr@ng {\char'137}\else
+  \leavevmode \kern.06em \vbox{\hrule width.35em}%
+  \ifdim\fontdimen\@ne\font=\z@ \kern.06em \fi\fi }%
+\def\&{\textsf{\char'046}}%
+\def\#{{\STfont\char'043}}%
+\def\%{{\char'045}}%
+\def\~{{\char'176}}%
+\def\3{\ifc@mment\ifright@ ''\global\right@false%
+                      \else``\global\right@true \fi
+   \else{\texttt{\char'042}}\fi}%
+\def\4{\ifc@mment'\else {\texttt{\char'015}}\fi}%
+\def\5{{\texttt{\char'136}}}%
+\def\${{\ifmmode\slshape\else\ifdim\fontdimen\@ne\font>\z@\slshape\fi\fi
+  \char'044}}% %No $ in \it, use \sl
+\parindent\z@\parskip\z@ plus 1pt\hsize\linewidth%
+\bgroup\BGfont
+}
+{\egroup\@@par}           % end of environment lgrind
+\def\lgrinde{\ifLGinline\else\LGsize\fi\begin{lgrind}}
+\def\endlgrinde{\end{lgrind}}
+\def\lagrind{\@ifstar{\@slagrind}{\@lagrind}}
+
+\def\@lagrind{\@ifnextchar[{\@@lagrind}{\@@lagrind[t]}}
+\def\@slagrind{\@ifnextchar[{\@@slagrind}{\@@slagrind[t]}}
+\def\@@lagrind[#1]#2#3#4{%
+    \begin{figure}[#1]
+\ifLGnorules\else\hrule\fi
+\vskip .5\baselineskip
+\begin{minipage}\columnwidth\LGsize\LGindent\z@
+    \begin{lgrind}
+\input #2\relax
+    \end{lgrind}
+\end{minipage}
+\vskip .5\baselineskip plus .5\baselineskip
+\ifLGnorules\else\hrule\fi\vskip .5\baselineskip
+\begingroup
+    \setbox\z@=\hbox{#4}%
+    \ifdim\wd\z@>\z@
+\caption{#3}%
+\label{#4}%
+    \else
+\captcont{#3}%
+    \fi
+\endgroup
+\vskip 2pt
+    \end{figure}
+}
+\def\@@slagrind[#1]#2#3#4{%
+    \begin{figure*}[#1]
+\ifLGnorules\else\hrule\fi
+\vskip .5\baselineskip
+\begin{minipage}\linewidth\LGsize\LGindent\z@
+    \begin{lgrind}
+\input #2\relax
+    \end{lgrind}
+\end{minipage}
+\vskip .5\baselineskip plus .5\baselineskip
+\ifLGnorules\else\hrule\fi\vskip .5\baselineskip
+\begingroup
+    \setbox\z@=\hbox{#4}%
+    \ifdim\wd\z@>\z@
+\caption{#3}%
+\label{#4}%
+    \else
+\captcont{#3}%
+    \fi
+\endgroup
+\vskip 2pt
+    \end{figure*}
+}
+\def\lgrindfile#1{%
+    \par\addvspace{0.1in}
+    \ifLGnorules\else\hrule\fi
+    \vskip .5\baselineskip
+    \begingroup\LGfsize\LGindent\z@
+\begin{lgrind}
+    \input #1\relax
+\end{lgrind}
+    \endgroup
+    \vskip .5\baselineskip
+    \ifLGnorules\else\hrule\fi
+    \addvspace{0.1in}
+}
+\endinput
+%%
+%% End of file `lgrind.sty'.
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/main.bib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/main.bib	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,356 @@
+@preamble{ "\newcommand{\noopsort}[1]{} "
+	# "\newcommand{\printfirst}[2]{#1} "
+	# "\newcommand{\singleletter}[1]{#1} "
+	# "\newcommand{\switchargs}[2]{#2#1} " }
+
+@ARTICLE{article-minimal,
+   author = {L[eslie] A. Aamport},
+   title = {The Gnats and Gnus Document Preparation System},
+   journal = {\mbox{G-Animal's} Journal},
+   year = 1986,
+}
+
+@ARTICLE{article-full,
+   author = {L[eslie] A. Aamport},
+   title = {The Gnats and Gnus Document Preparation System},
+   journal = {\mbox{G-Animal's} Journal},
+   year = 1986,
+   volume = 41,
+   number = 7,
+   pages = "73+",
+   month = jul,
+   note = "This is a full ARTICLE entry",
+}
+
+The KEY field is here to override the KEY field in the journal being
+cross referenced (so is the NOTE field, in addition to its imparting
+information).
+
+@ARTICLE{article-crossref,
+   crossref = {WHOLE-JOURNAL},
+   key = "",
+   author = {L[eslie] A. Aamport},
+   title = {The Gnats and Gnus Document Preparation System},
+   pages = "73+",
+   note = "This is a cross-referencing ARTICLE entry",
+}
+
+@ARTICLE{whole-journal,
+   key = "GAJ",
+   journal = {\mbox{G-Animal's} Journal},
+   year = 1986,
+   volume = 41,
+   number = 7,
+   month = jul,
+   note = {The entire issue is devoted to gnats and gnus
+		(this entry is a cross-referenced ARTICLE (journal))},
+}
+
+@INBOOK{inbook-minimal,
+   author = "Donald E. Knuth",
+   title = "Fundamental Algorithms",
+   publisher = "Addison-Wesley",
+   year = "{\noopsort{1973b}}1973",
+   chapter = "1.2",
+}
+
+@INBOOK{inbook-full,
+   author = "Donald E. Knuth",
+   title = "Fundamental Algorithms",
+   volume = 1,
+   series = "The Art of Computer Programming",
+   publisher = "Addison-Wesley",
+   address = "Reading, Massachusetts",
+   edition = "Second",
+   month = "10~" # jan,
+   year = "{\noopsort{1973b}}1973",
+   type = "Section",
+   chapter = "1.2",
+   pages = "10--119",
+   note = "This is a full INBOOK entry",
+}
+
+@INBOOK{inbook-crossref,
+   crossref = "whole-set",
+   title = "Fundamental Algorithms",
+   volume = 1,
+   series = "The Art of Computer Programming",
+   edition = "Second",
+   year = "{\noopsort{1973b}}1973",
+   type = "Section",
+   chapter = "1.2",
+   note = "This is a cross-referencing INBOOK entry",
+}
+
+@BOOK{book-minimal,
+   author = "Donald E. Knuth",
+   title = "Seminumerical Algorithms",
+   publisher = "Addison-Wesley",
+   year = "{\noopsort{1973c}}1981",
+}
+
+@BOOK{book-full,
+   author = "Donald E. Knuth",
+   title = "Seminumerical Algorithms",
+   volume = 2,
+   series = "The Art of Computer Programming",
+   publisher = "Addison-Wesley",
+   address = "Reading, Massachusetts",
+   edition = "Second",
+   month = "10~" # jan,
+   year = "{\noopsort{1973c}}1981",
+   note = "This is a full BOOK entry",
+}
+
+@BOOK{book-crossref,
+   crossref = "whole-set",
+   title = "Seminumerical Algorithms",
+   volume = 2,
+   series = "The Art of Computer Programming",
+   edition = "Second",
+   year = "{\noopsort{1973c}}1981",
+   note = "This is a cross-referencing BOOK entry",
+}
+
+@BOOK{whole-set,
+   author = "Donald E. Knuth",
+   publisher = "Addison-Wesley",
+   title = "The Art of Computer Programming",
+   series = "Four volumes",
+   year = "{\noopsort{1973a}}{\switchargs{--90}{1968}}",
+   note = "Seven volumes planned (this is a cross-referenced set of BOOKs)",
+}
+
+@BOOKLET{booklet-minimal,
+   key = "Kn{\printfirst{v}{1987}}",
+   title = "The Programming of Computer Art",
+}
+
+@BOOKLET{booklet-full,
+   author = "Jill C. Knvth",
+   title = "The Programming of Computer Art",
+   howpublished = "Vernier Art Center",
+   address = "Stanford, California",
+   month = feb,
+   year = 1988,
+   note = "This is a full BOOKLET entry",
+}
+
+@INCOLLECTION{incollection-minimal,
+   author = "Daniel D. Lincoll",
+   title = "Semigroups of Recurrences",
+   booktitle = "High Speed Computer and Algorithm Organization",
+   publisher = "Academic Press",
+   year = 1977,
+}
+
+@INCOLLECTION{incollection-full,
+   author = "Daniel D. Lincoll",
+   title = "Semigroups of Recurrences",
+   editor = "David J. Lipcoll and D. H. Lawrie and A. H. Sameh",
+   booktitle = "High Speed Computer and Algorithm Organization",
+   number = 23,
+   series = "Fast Computers",
+   chapter = 3,
+   type = "Part",
+   pages = "179--183",
+   publisher = "Academic Press",
+   address = "New York",
+   edition = "Third",
+   month = sep,
+   year = 1977,
+   note = "This is a full INCOLLECTION entry",
+}
+
+@INCOLLECTION{incollection-crossref,
+   crossref = "whole-collection",
+   author = "Daniel D. Lincoll",
+   title = "Semigroups of Recurrences",
+   pages = "179--183",
+   note = "This is a cross-referencing INCOLLECTION entry",
+}
+
+@BOOK{whole-collection,
+   editor = "David J. Lipcoll and D. H. Lawrie and A. H. Sameh",
+   title = "High Speed Computer and Algorithm Organization",
+   booktitle = "High Speed Computer and Algorithm Organization",
+   number = 23,
+   series = "Fast Computers",
+   publisher = "Academic Press",
+   address = "New York",
+   edition = "Third",
+   month = sep,
+   year = 1977,
+   note = "This is a cross-referenced BOOK (collection) entry",
+}
+
+@MANUAL{manual-minimal,
+   key = "Manmaker",
+   title = "The Definitive Computer Manual",
+}
+
+@MANUAL{manual-full,
+   author = "Larry Manmaker",
+   title = "The Definitive Computer Manual",
+   organization = "Chips-R-Us",
+   address = "Silicon Valley",
+   edition = "Silver",
+   month = apr # "-" # may,
+   year = 1986,
+   note = "This is a full MANUAL entry",
+}
+
+@MASTERSTHESIS{mastersthesis-minimal,
+   author = "{\'{E}}douard Masterly",
+   title = "Mastering Thesis Writing",
+   school = "Stanford University",
+   year = 1988,
+}
+
+@MASTERSTHESIS{mastersthesis-full,
+   author = "{\'{E}}douard Masterly",
+   title = "Mastering Thesis Writing",
+   school = "Stanford University",
+   type = "Master's project",
+   address = "English Department",
+   month = jun # "-" # aug,
+   year = 1988,
+   note = "This is a full MASTERSTHESIS entry",
+}
+
+@MISC{misc-minimal,
+   key = "Missilany",
+   note = "This is a minimal MISC entry",
+}
+
+@MISC{misc-full,
+   author = "Joe-Bob Missilany",
+   title = "Handing out random pamphlets in airports",
+   howpublished = "Handed out at O'Hare",
+   month = oct,
+   year = 1984,
+   note = "This is a full MISC entry",
+}
+
+@STRING{STOC-key = "OX{\singleletter{stoc}}"}
+
+@STRING{ACM = "The OX Association for Computing Machinery"}
+
+@STRING{STOC = " Symposium on the Theory of Computing"}
+
+@INPROCEEDINGS{inproceedings-minimal,
+   author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis",
+   title = "On Notions of Information Transfer in {VLSI} Circuits",
+   booktitle = "Proc. Fifteenth Annual ACM" # STOC,
+   year = 1983,
+}
+
+@INPROCEEDINGS{inproceedings-full,
+   author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis",
+   title = "On Notions of Information Transfer in {VLSI} Circuits",
+   editor = "Wizard V. Oz and Mihalis Yannakakis",
+   booktitle = "Proc. Fifteenth Annual ACM" # STOC,
+   number = 17,
+   series = "All ACM Conferences",
+   pages = "133--139",
+   month = mar,
+   year = 1983,
+   address = "Boston",
+   organization = ACM,
+   publisher = "Academic Press",
+   note = "This is a full INPROCEDINGS entry",
+}
+
+@INPROCEEDINGS{inproceedings-crossref,
+   crossref = "whole-proceedings",
+   author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis",
+   title = "On Notions of Information Transfer in {VLSI} Circuits",
+   organization = "",
+   pages = "133--139",
+   note = "This is a cross-referencing INPROCEEDINGS entry",
+}
+
+@PROCEEDINGS{proceedings-minimal,
+   key = STOC-key,
+   title = "Proc. Fifteenth Annual" # STOC,
+   year = 1983,
+}
+
+@PROCEEDINGS{proceedings-full,
+   editor = "Wizard V. Oz and Mihalis Yannakakis",
+   title = "Proc. Fifteenth Annual" # STOC,
+   number = 17,
+   series = "All ACM Conferences",
+   month = mar,
+   year = 1983,
+   address = "Boston",
+   organization = ACM,
+   publisher = "Academic Press",
+   note = "This is a full PROCEEDINGS entry",
+}
+
+@PROCEEDINGS{whole-proceedings,
+   key = STOC-key,
+   organization = ACM,
+   title = "Proc. Fifteenth Annual" # STOC,
+   address = "Boston",
+   year = 1983,
+   booktitle = "Proc. Fifteenth Annual ACM" # STOC,
+   note = "This is a cross-referenced PROCEEDINGS",
+}
+
+@PHDTHESIS{phdthesis-minimal,
+   author = "F. Phidias Phony-Baloney",
+   title = "Fighting Fire with Fire: Festooning {F}rench Phrases",
+   school = "Fanstord University",
+   year = 1988,
+}
+
+@PHDTHESIS{phdthesis-full,
+   author = "F. Phidias Phony-Baloney",
+   title = "Fighting Fire with Fire: Festooning {F}rench Phrases",
+   school = "Fanstord University",
+   type = "{PhD} Dissertation",
+   address = "Department of French",
+   month = jun # "-" # aug,
+   year = 1988,
+   note = "This is a full PHDTHESIS entry",
+}
+
+@TECHREPORT{techreport-minimal,
+   author = "Tom Terrific",
+   title = "An {$O(n \log n / \! \log\log n)$} Sorting Algorithm",
+   institution = "Fanstord University",
+   year = 1988,
+}
+
+@TECHREPORT{techreport-full,
+   author = "Tom T{\'{e}}rrific",
+   title = "An {$O(n \log n / \! \log\log n)$} Sorting Algorithm",
+   institution = "Fanstord University",
+   type = "Wishful Research Result",
+   number = "7",
+   address = "Computer Science Department, Fanstord, California",
+   month = oct,
+   year = 1988,
+   note = "This is a full TECHREPORT entry",
+}
+
+@UNPUBLISHED{unpublished-minimal,
+   author = "Ulrich {\"{U}}nderwood and Ned {\~N}et and Paul {\={P}}ot",
+   title = "Lower Bounds for Wishful Research Results",
+   note = "Talk at Fanstord University (this is a minimal UNPUBLISHED entry)",
+}
+
+@UNPUBLISHED{unpublished-full,
+   author = "Ulrich {\"{U}}nderwood and Ned {\~N}et and Paul {\={P}}ot",
+   title = "Lower Bounds for Wishful Research Results",
+   month = nov # ", " # dec,
+   year = 1988,
+   note = "Talk at Fanstord University (this is a full UNPUBLISHED entry)",
+}
+
+@MISC{random-note-crossref,
+   key = {Volume-2},
+   note = "Volume~2 is listed under Knuth \cite{book-full}"
+}
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/main.bib.info
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/main.bib.info	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,67 @@
+To comment out part of an entry in BibTeX, you can use:
+
+	@Comment{body of text}
+
+If you wish to comment out the entire entry, just remove the @ sign in
+front of the entry type (i.e., get rid of the '@' in "@Book").
+
+*************************************************************************
+
+You can specify fixed strings (say if you needed to use it multiple
+times in your BibTeX file) with the @String command:
+
+	@String(Leslie-Lamport = {Leslie Lamport})
+
+and then you could use it in various entries:
+
+	@Book{latex,
+		Author = Leslie-Lamport,
+		Title = "\LaTeX",
+		...
+		Year = "1993"}
+
+*************************************************************************
+
+The required fields are not prefaced with OPT.  Those that are optional
+*are* prefaced with OPT (remember to delete those three characters should
+you wish to use those fields).
+
+[Note:
+     For most entry types the "author" information is simply the AUTHOR
+field.  However:  For the @Book and @Inbook entry types it's the AUTHOR
+field, but if there's no author then it's the EDITOR field; for the
+@Manual entry type it's the AUTHOR field, but if there's no author then
+it's the ORGANIZATION field; and for the @Proceedings entry type it's
+the EDITOR filed, but if there's no editor then it's the ORGANIZATION
+field.]
+
+To use this, just have your main.tex specify the following:
+
+	\bibliography{main}
+	\bibliographystyle{plain}
+
+There are several options for bibliographystyle:
+
+        plain   normal style - listed in ABC order and labeled numerically
+        unsrt   same as plain except entries appear in order of citation
+        alpha   same as plain except entry labels are used
+        abbrv   same as plain except uses abbreviations for first names,
+                month names, and journal names
+
+Now that you have the basis for a bibliography, you have to run both
+latex and bibtex on the document.  First, you should run latex (to
+create a foo.aux file, which bibtex reads).  Then run bibtex once to get
+some of the citations and create a .bbl file.  Then run latex again so
+that the cross references between the text file and the bibliography are
+correct.  You may want to repeat running bibtex and latex on the file to
+make sure that all cross references are correct.  Be warned that
+adding/deleting citations and sources will require running bibtex again.
+
+For more information on this topic, please refer the following pages in
+the LaTeX manual by Leslie Lamport:
+
+        72-74    Bibliography and Citation
+        74-74    BibTeX
+        140-147  Format of the .bib File (also gives info on other entry types)        187-188  Bibliography and Citation
+
+                 ----------------------------------------
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/main.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/main.tex	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,57 @@
+% -*- Mode:TeX -*-
+
+%% IMPORTANT: The official thesis specifications are available at:
+%%            http://libraries.mit.edu/archives/thesis-specs/
+%%
+%%            Please verify your thesis' formatting and copyright
+%%            assignment before submission.  If you notice any
+%%            discrepancies between these templates and the 
+%%            MIT Libraries' specs, please let us know
+%%            by e-mailing thesis@mit.edu
+
+%% The documentclass options along with the pagestyle can be used to generate
+%% a technical report, a draft copy, or a regular thesis.  You may need to
+%% re-specify the pagestyle after you \include  cover.tex.  For more
+%% information, see the first few lines of mitthesis.cls. 
+
+%\documentclass[12pt,vi,twoside]{mitthesis}
+%%
+%%  If you want your thesis copyright to you instead of MIT, use the
+%%  ``vi'' option, as above.
+%%
+%\documentclass[12pt,twoside,leftblank]{mitthesis}
+%%
+%% If you want blank pages before new chapters to be labelled ``This
+%% Page Intentionally Left Blank'', use the ``leftblank'' option, as
+%% above. 
+
+\documentclass[12pt,twoside]{mitthesis}
+\usepackage{lgrind}
+\pagestyle{plain}
+
+%% This bit allows you to either specify only the files which you wish to
+%% process, or `all' to process all files which you \include.
+%% Krishna Sethuraman (1990).
+
+\typein [\files]{Enter file names to process, (chap1,chap2 ...), or `all' to
+process all files:}
+\def\all{all}
+\ifx\files\all \typeout{Including all files.} \else \typeout{Including only \files.} \includeonly{\files} \fi
+
+\begin{document}
+
+\include{cover}
+% Some departments (e.g. 5) require an additional signature page.  See
+% signature.tex for more information and uncomment the following line if
+% applicable.
+% \include{signature}
+\pagestyle{plain}
+\include{contents}
+\include{chap1}
+\include{chap2}
+\appendix
+\include{appa}
+\include{appb}
+\include{biblio}
+\end{document}
+
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/mitthesis.cls
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/mitthesis.cls	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,535 @@
+% $Log: mitthesis.cls,v $
+% Revision 1.9  2012/02/15 15:48:16  jdreed
+% Tweak the "permission" statement per the Libraries' specs
+% retrieved 15-Feb-2012
+%
+% Revision 1.8  2009/07/27 14:23:50  boojum
+% added changing draft mark
+%
+% Revision 1.6  2005/05/13 19:57:40  boojum
+% added leftblank option
+%
+% Revision 1.5  2002/04/18 14:10:08  boojum
+% changed doublespace into setspace for 2e compliance
+%
+% Revision 1.4  2001/02/08 18:57:13  boojum
+% turned two newpages into cleardoublepages
+%
+% Revision 1.3  2000/08/14 14:53:29  boojum
+% commented out footheight, which is relevant for drafthead
+%
+% Revision 1.2  1999/10/21 14:51:33  boojum
+% changed references to documentstyle to documentclass in comments
+%
+% Revision 1.1  1999/10/21 14:39:31  boojum
+% Initial revision
+%
+%Revision 1.7  1998/04/01  20:45:34  othomas
+%removed offending phrase ", and to grant others the right to do so" from copyright notice.
+%
+%Revision 1.6  96/06/26  15:07:29  othomas
+%safety checkin.
+%
+%Revision 1.5  93/06/07  15:38:50  starflt
+%Altered 'vi' option copyright wording to comply with new Institute
+%Archives requirements and MIT lawyers.
+%
+%Revision 1.4  92/08/19  16:51:06  lwvanels
+%Updated Course 6 title page for new permissions.
+%
+%Revision 1.3  92/04/23  10:16:15  epeisach
+%Fixed comment character in rcs file
+%
+%Revision 1.2  92/04/22  13:12:02  epeisach
+%Fixes for 1991 course 6 requirements
+%Phrase "and to grant others the right to do so" has been added to 
+%permission clause
+%Second copy of abstract is not counted as separate pages so numbering works
+%out
+%
+%Revision 1.1  90/05/04  11:45:53  lwvanels
+%Initial revision
+
+%
+% LaTeX format for theses at MIT
+% Based on "Specifications for Thesis Preparation" 
+
+% `vi' and `upcase' options by Krishna Sethuraman - krishna@athena.mit.edu
+% Margins and heading types by Peter Nuth  - nuth@ai.mit.edu
+% Title and abstract page by Stephen Gildea - gildea@erl.mit.edu
+% Look in this directory for example file mitthesis.doc
+% Also for propcover.tex - Boilerplate for PHD proposal.
+
+% To use this style - say something like:
+%  for dull, boring thesis format:
+%	\documentclass[12pt]{mitthesis}
+%       \pagestyle{plain}
+% OR for fast drafts: 
+%	\documentclass[11pt,singlespace,draft]{mitthesis}
+%	\pagestyle{drafthead}
+% OR for Tech Reports:
+%	\documentclass[12pt,twoside]{mitthesis}	
+%	\pagestyle{headings}
+% OR
+%  some other combination...
+%
+%%%% New options:
+% 
+% Option `twoside':
+%   Good for producing Tech Reports.
+%   The default is single-sided printing, which is what M.I.T. wants on the
+%   thesis document itself.
+%
+% Option `singlespace':
+%   Good for drafts.
+%   Double-spaced theses are the default.
+%   That is what M.I.T. asks for in the formal specifications.
+%
+% 	Note that MIT does not REQUIRE all theses to be double-spaced anymore.
+% 	Someone in the library system said that it's OK to be single-spaced.
+% 	(Regardless of what the specs. say...)
+%   To get singlespacing in an area - Use  the 'singlespace' environment. 
+%
+% Option `draft':
+%   Puts `overfull' boxes at the end of lines that are too long. 
+%
+% Pagestyle `drafthead':
+%   Puts the date and the label ``*DRAFT*'' in the footer.
+%
+%%%%%%%%%%
+%
+%%%% Parameters to initialize for boilerplate page:
+%
+%	\title{Mixed Circular Cylindrical Shells}
+% 	\author{J. Casey Salas}
+% 	\prevdegrees{B.S., University of California (1978) \\
+%		     S.M., Massachusetts Institute of Technology (1981)}
+% 	\department{Department of Electrical Engineering and Computer Science}
+% 	\degree{Doctor of Philosophy}
+%% If the thesis is for two degrees simultaneously, list them both
+%% separated by \and like this:
+% 	\degree{Doctor of Philosophy \and Master of Science}
+% 	\degreemonth{February}
+% 	\degreeyear{1987}
+% 	\thesisdate{December 10, 1986}
+%% If the thesis is copyright by the Institute, leave this line out and
+%% the standard copyright line will be used instead.
+% 	\copyrightnotice{J. Casey Salas, 1986}
+%% If there is more than one supervisor, use the \supervisor command
+%% once for each.
+% 	\supervisor{John D. Galli}{Director, Sound Instrument Laboratory}
+%% This is the department committee chairman, not the thesis committee chairman
+% 	\chairman{Arthur C. Smith}
+%		 {Chairman, Departmental Committee on Graduate Students}
+%% Make the titlepage based on the above information.  If you need
+%% something special and can't use the standard form, you can specify
+%% the exact text of the titlepage yourself.  Put it in a titlepage
+%% environment and leave blank lines where you want vertical space.
+%% The spaces will be adjusted to fill the entire page.  The dotted
+%% lines for the signatures are made with the \signature command.
+%
+%% The abstractpage environment sets up everything on the page except
+%% the text itself.  The title and other header material are put at the
+%% top of the page, and the supervisors are listed at the bottom.  A
+%% new page is begun both before and after.  Of course, an abstract may
+%% be more than one page itself.  If you need more control over the
+%% format of the page, you can use the abstract environment, which puts
+%% the word "Abstract" at the beginning and single spaces its text.
+%
+% 	\begin{abstractpage}
+%	    Abstract goes here.
+%	\end{abstractpage}
+%
+%%%%%%%% Newer additions 
+%
+% documentclass options - 
+% vi		For MIT course VI or VIII thesis - will copyright the thesis to
+% 		you while giving MIT permission to copy and distribute it.
+% upcase	Will put much of the cover page in uppercase, as per the
+% 		example on page 17 of the *Specifications for Thesis
+% 		Preparation*, (revised 1989)
+% Also added ``All Rights Reserved'' to default copyright notice.
+%
+%%%%%%%%%%%
+% 
+% Documentclass options (vi and upcase) and changes to copyright notice
+%	Copyright (c) 1990, by Krishna Sethuraman.
+%
+% Pagestyle and header generation
+%	Copyright (c) 1987, 1988 by Peter Nuth
+%
+% Original version
+%	 Copyright (c) 1987 by Stephen Gildea
+% Permission to copy all or part of this work is granted, provided
+% that the copies are not made or distributed for resale, and that
+% the copyright notice and this notice are retained.
+% 
+% THIS WORK IS PROVIDED ON AN "AS IS" BASIS.  THE AUTHOR PROVIDES NO
+% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
+% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
+% FOR ANY PARTICULAR PURPOSE.
+%%%%%%%%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{mitthesis}[1999/10/20]
+
+\def\mystretch{1.5}		% Double spacing hack
+\DeclareOption{doublespace}{}	% This is default
+				% So we do not read this style twice
+\DeclareOption{singlespace}{		% If he explicitly wants single spacing
+    \typeout{Single spaced}
+    \def\mystretch{1}}	
+
+%% `vi' and `upcase' document style options.  Krishna Sethuraman (1990)
+\newcount\vithesis
+\DeclareOption{vi}{\typeout{Course VI/VIII thesis style.}\advance\vithesis by1}
+\vithesis=0
+
+\DeclareOption{upcase}{\typeout{Uppercase cover page.}
+	\gdef\choosecase#1{\uppercase\expandafter{#1}}}
+\def\choosecase#1{#1}
+
+%% leftblank option by Kevin Fu
+\newif\if@leftblank \@leftblankfalse
+
+\DeclareOption{leftblank}{\typeout{Intentionally Leaving Pages Blank}
+\@leftblanktrue}
+
+%  Thesis looks much like report
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
+\ProcessOptions
+\LoadClass{report}
+
+% If the user wants single spacing, set baselinestretch=1.
+
+\usepackage{setspace}
+
+% Note - doublespace.sty has some float-related troubles in
+% combination with graphics or color, and is not officially compliant
+% with 2e.  setspace is a replacement which is 2e-compliant.
+
+% Read the doublespace style that we got from Rochester:
+%\input setdoublespace.sty 		
+
+\def\baselinestretch{\mystretch}	% Double spacing hack
+
+%%%%%%%  Set up margins and formatting params %%%
+
+% Margins.
+%  Note we want 1in top margin assuming no header line, so push header
+%	into 1in margin.
+%  Draft mode brings the header back down.
+
+\setlength{\oddsidemargin}{0.25in}	% 1.25in left margin 
+\setlength{\evensidemargin}{0.25in}	% 1.25in left margin (even pages)
+\setlength{\topmargin}{0.0in}		% 1in top margin
+\setlength{\textwidth}{6.0in}		% 6.0in text - 1.25in rt margin
+\setlength{\textheight}{9in}		% Body ht for 1in margins
+\addtolength{\topmargin}{-\headheight}	% No header, so compensate
+\addtolength{\topmargin}{-\headsep}	% for header height and separation
+
+% The next two macros compensate page style for headers and footers
+% We only need them in page styles that USE headers and footers.
+    % If we have a header, it must be 1in from top of page.
+\def\pulldownheader{			% Shift header down 1in from top
+    \addtolength{\topmargin}{\headheight}	
+    \addtolength{\topmargin}{\headsep}	
+    \addtolength{\textheight}{-\headheight}
+    \addtolength{\textheight}{-\headsep}
+}
+    % If we have a footer, put it 1in up from bottom
+\def\pullupfooter{				% Shift footer up
+    \addtolength{\textheight}{-\footskip}
+%    \addtolength{\textheight}{-\footheight}  %footheight doesn't
+%    						exist in 2e
+}
+
+%%%%%%%  End of margins and formatting params %%%
+
+%%%%%%%  Fix various header and footer problems %%%
+
+% Draft mark on the right side of left pages (outside)
+% this mark is also the only one visible on single sided.
+\newcommand{\draftrmark}{**DRAFT**} 
+% Draft mark on the left side of right pages (outside)
+\newcommand{\draftlmark}{**DRAFT**} % 
+
+% Macros to make changing the Draft easier
+\newcommand{\drmark}[1]{\renewcommand{\draftrmark}{#1}}
+\newcommand{\dlmark}[1]{\renewcommand{\draftlmark}{#1}}
+\newcommand{\dmark}[1]{\drmark{#1}\dlmark{#1}}
+
+% Format for draft of thesis.  Define our own PageStyle -
+% Just like headings, but has foot lines with the date and warning
+
+\if@twoside         % If two-sided printing.
+\def\ps@drafthead{
+    \let\@mkboth\markboth
+    \def\@oddfoot{\rm \today \hfil \sc \draftrmark}
+    \def\@evenfoot{\sc \draftlmark \hfil \rm \today }
+    \def\@evenhead{\rm \thepage\hfil \sl \leftmark}
+    \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}
+    \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
+	\@chapapp\ \thechapter. \ \fi ##1}}{}}
+    \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
+	\thesection. \ \fi ##1}}}
+    \pulldownheader				% Bring header down from edge
+    \pullupfooter				% Bring footer up
+}
+\else               % If one-sided printing.
+\def\ps@drafthead{
+    \let\@mkboth\markboth
+    \def\@oddfoot{\rm \today \hfil \sc \draftrmark}
+    \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}
+    \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
+	\@chapapp\ \thechapter. \ \fi ##1}}}
+    \pulldownheader				% Bring header down from edge
+    \pullupfooter				% Bring footer up
+}
+\fi
+
+% I redefine these formats that were defined in report.sty
+% Definition of 'headings' page style 
+%  Note the use of ##1 for parameter of \def\chaptermark inside the
+%  \def\ps@headings.
+%
+
+\if@twoside					% If two-sided printing.
+\def\ps@headings{\let\@mkboth\markboth
+    \def\@oddfoot{}
+    \def\@evenfoot{}		% No feet.
+    \def\@evenhead{\rm \thepage\hfil \sl \leftmark}	% Left heading.
+    \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}	% Right heading.
+    \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
+	\@chapapp\ \thechapter. \ \fi ##1}}{}}	
+    \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
+	\thesection. \ \fi ##1}}}
+    \pulldownheader				% Bring header down from edge
+}
+\else						% If one-sided printing.
+\def\ps@headings{\let\@mkboth\markboth
+    \def\@oddfoot{}
+    \def\@evenfoot{}		%     No feet.
+    \def\@oddhead{\hbox {}\sl \rightmark \hfil \rm\thepage}	% Heading.
+    \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
+	\@chapapp\ \thechapter. \ \fi ##1}}}
+    \pulldownheader				% Bring header down from edge
+}
+\fi
+
+% Redefinition of 'myheadings' page style.  
+%
+\def\ps@myheadings{\let\@mkboth\@gobbletwo
+    \def\@oddfoot{}
+    \def\@evenfoot{}
+    \def\sectionmark##1{}
+    \def\subsectionmark##1{}
+    \def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox {}}	%
+    \def\@oddhead{\hbox{}\sl\rightmark \hfil \rm\thepage}	%
+    \pulldownheader				% Bring header down from edge
+}						
+
+% Redefine '/chapter' to always start on an odd page.
+% Should make no difference in singleside mode.
+%
+\if@leftblank
+% Prints "THIS PAGE INTENTIONALLY LEFT BLANK" on blank pages.
+\def\chapter{\clearpage\ifodd\c@page\else
+   \hbox{}\par\vfill\centerline%
+   {THIS PAGE INTENTIONALLY LEFT BLANK}%
+   \vfill\newpage\fi
+   \thispagestyle{plain}	% Page style of chapter page is 'plain'
+   \global\@topnum\z@		% Prevents figures from going at top of page.
+   \@afterindentfalse		% Suppresses indent in first paragraph.  Change
+   \secdef\@chapter\@schapter}	% to \@afterindenttrue to have indent.
+\else
+\def\chapter{\cleardoublepage	% Starts new page.
+   \thispagestyle{plain}	% Page style of chapter page is 'plain'
+   \global\@topnum\z@		% Prevents figures from going at top of page.
+   \@afterindentfalse		% Suppresses indent in first paragraph.  Change
+   \secdef\@chapter\@schapter}	% to \@afterindenttrue to have indent.
+\fi
+% If using the report style, use - instead of . in the figure number.
+\@ifundefined{thechapter}{}{\def\thefigure{\thechapter-\arabic{figure}}}
+
+
+%%%%%%%%%  End of Style parameters %%%%
+
+% Here's Gildea's Boilerplate Stuff.
+% Copyright (c) 1987 by Stephen Gildea
+% Permission to copy all or part of this work is granted, provided
+% that the copies are not made or distributed for resale, and that
+% the copyright notice and this notice are retained.
+
+%% Define all the pieces that go on the title page and the abstract.
+
+% \title and \author already exist
+
+\def\prevdegrees#1{\gdef\@prevdegrees{#1}}
+\def\@prevdegrees{}
+
+\def\department#1{\gdef\@department{#1}}
+
+% If you are getting two degrees, use \and between the names.
+\def\degree#1{\setbox0\hbox{#1}	 %for side effect of setting \@degreeword
+  \gdef\@degree{#1}}
+
+% \and is used inside the \degree argument to separate two degrees
+\def\and{\gdef\@degreeword{degrees} \par and \par}
+\def\@degreeword{degree}
+
+% The copyright notice stuff is a tremendous mess.
+%
+% \@copyrightnotice is used by \maketitle to actually put text on the
+% page; it defaults to ``Copyright MIT 19xx.  All rights reserved.''
+% \copyrightnoticetext takes an argument and defined \@copyrightnotice
+% to that argument.  \copyrightnotice takes an argument, and calls
+% \copyrightnoticetext with that argument, preceeded by a copyright
+% symbol and followed by ``All rights reserved.'' and the standard
+% permission notice.
+% 
+% If you use the 'vi' option, \copyrightnoticetext is used to set the
+% copyright to ``(C) Your Name, Current Year in Roman Numerals.''
+% followed by the permission notice.
+
+% If there is no \copyrightnotice command, it is asssumed that MIT
+% holds the copyright.  This commands adds the copyright symbol to the
+% beginning, and puts the standard permission notice below.
+%% ``All rights reserved'' added.  Krishna Sethuraman (1990)
+\def\copyrightnotice#1{\copyrightnoticetext{\copyright\ #1.  All rights
+reserved.\par\permission}}
+
+% Occacionally you will need to exactly specify the text of the 
+% copyright notice.  The \copyrightnoticetext command is then useful.
+\long\def\copyrightnoticetext#1{\gdef\@copyrightnotice{#1}}
+\def\@copyrightnotice{\copyright\ \Mit\ \@degreeyear.  All rights reserved.}
+
+%% `vi' documentclass option: Specifying this option automatically
+%% copyrights the thesis to the author and gives MIT permission to copy and
+%% distribute the document.  If you want, you can still specify
+%% \copyrightnotice{stuff} to copyright to someone else, or
+%% \copyrightnoticetext{stuff} to specify the exact text of the copyright
+%% notice.
+\ifodd\vithesis \copyrightnoticetext{\copyright\ \@author,
+\uppercase\expandafter{\romannumeral\@degreeyear}.  All rights reserved.\par\permission}
+%% or just
+%%\@degreeyear}}
+\typeout{Copyright given to author,
+	permission to copy/distribute given to MIT.}
+\else \typeout{Thesis document copyright MIT unless otherwise (manually) specified}
+\fi
+
+\def\thesisdate#1{\gdef\@thesisdate{#1}}
+
+% typically just a month and year
+\def\degreemonth#1{\gdef\@degreemonth{#1}}
+\def\degreeyear#1{\gdef\@degreeyear{#1}}
+
+% Usage: \supervisor{name}{title}
+%        \chairman{name}{title}
+
+% since there can be more than one supervisor,
+% we build the appropriate boxes for the titlepage and
+% the abstractpage as the user makes multiple calls
+% to \supervisor
+\newbox\@titlesupervisor 	\newbox\@abstractsupervisor
+
+\def\supervisor#1#2{\setbox\@titlesupervisor\vbox
+  {\unvbox\@titlesupervisor \vskip 10pt% plus 1fil minus 1fil
+  \def\baselinestretch{1}\large
+  \signature{Certified by}{#1 \\ #2 \\ Thesis Supervisor}}
+  \setbox\@abstractsupervisor\vbox{\unvbox\@abstractsupervisor
+  \vskip\baselineskip \def\baselinestretch{1}\@normalsize 
+  \par\noindent Thesis Supervisor: #1 \\ Title: #2}}
+
+% department chairman, not thesis committee chairman
+\def\chairman#1#2{\gdef\@chairmanname{#1}\gdef\@chairmantitle{#2}}
+
+%% `upcase' documentclass option: \choosecase is defined either as a dummy or
+%% a macro to change the (expanded) argument to uppercase.
+\def\maketitle{\begin{titlepage}
+\large
+{\def\baselinestretch{1.2}\Large\bf \choosecase{\@title} \par}
+by\par
+{\Large  \choosecase{\@author}}
+\par
+\@prevdegrees
+\par
+\choosecase{Submitted to the} \choosecase{\@department} \\
+\choosecase{in partial fulfillment of the requirements for the}
+\choosecase{\@degreeword} 
+\choosecase{of}
+\par
+\choosecase{\@degree}
+\par
+at the
+\par\MIT\par
+\@degreemonth\ \@degreeyear
+\par
+\@copyrightnotice
+\par
+\vskip 3\baselineskip
+\signature{Author}{\@department \\ \@thesisdate}
+\par
+\vfill
+\unvbox\@titlesupervisor
+\par
+\vfill
+\signature{Accepted by}{\@chairmanname \\ \@chairmantitle}
+\vfill
+\end{titlepage}}
+
+% this environment should probably be called abstract,
+% but we want people to also be able to get at the more
+% basic abstract environment
+\def\abstractpage{\cleardoublepage
+\begin{center}{\large{\bf \@title} \\
+by \\
+\@author \\[\baselineskip]}
+\par
+\def\baselinestretch{1}\@normalsize
+Submitted to the \@department \\
+on \@thesisdate, in partial fulfillment of the \\
+requirements for the \@degreeword\ of \\
+\@degree
+\end{center}
+\par
+\begin{abstract}}
+
+%% Changed from \unvbox to \unvcopy for use with multiple copies of abstract
+%% page.
+%% Krishna Sethuraman (1990)
+\def\endabstractpage{\end{abstract}\noindent
+ \unvcopy\@abstractsupervisor \newpage}
+
+%% This counter is used to save the page number for the second copy of
+%% the abstract.
+\newcounter{savepage}
+
+% You can use the titlepage environment to do it all yourself if you
+% don't want to use \maketitle.  If the titlepage environment, the
+% paragraph skip is infinitely stretchable, so if you leave a blank line
+% between lines that you want space between, the space will stretch so
+% that the title page fills up the entire page.
+\def\titlepage{\cleardoublepage\centering
+  \thispagestyle{empty}
+  \parindent 0pt \parskip 10pt plus 1fil minus 1fil
+  \def\baselinestretch{1}\@normalsize\vbox to \vsize\bgroup\vbox to 9in\bgroup}
+% The \kern0pt pushes any depth into the height.  Thanks to Richard Stone.
+\def\endtitlepage{\par\kern 0pt\egroup\vss\egroup\newpage}
+
+\def\MIT{MASSACHUSETTS INSTITUTE OF TECHNOLOGY}
+\def\Mit{Massachusetts Institute of Technology}
+
+\def\permission{\par\noindent{\centering
+   The author hereby grants to MIT permission to reproduce and to
+   distribute publicly paper and electronic copies of this thesis
+   document in whole or in part in any medium now known or hereafter
+   created.}\par}
+
+\def\signature#1#2{\par\noindent#1\dotfill\null\\*
+  {\raggedleft #2\par}}
+
+\def\abstract{\subsection*{Abstract}\small\def\baselinestretch{1}\@normalsize}
+\def\endabstract{\par}
+
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/propcover.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/propcover.tex	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,346 @@
+%% This file is for producing a Doctoral Thesis proposal.  It should be fairly
+%% self-explanatory.  
+
+\documentclass{article}
+\begin{document}
+
+\bibliographystyle{plain}
+\pagestyle{empty}
+\markboth{{\sc thesis proposal}}{{\sc thesis proposal}}
+\def\title{Parallel Processor Architecture}
+\def\author{Peter Nuth}
+\def\addrone{305 Memorial Drive, 606C}
+\def\addrtwo{Cambridge, MA  02139}
+
+\def\degree{Doctor of Philosophy}
+%% Added \deptname for PhD proposals in other fields.
+%% Krishna Sethuraman (1990)
+\def\deptname{Electrical Engineering \\ and Computer Science}
+\def\laboratory{Artificial Intelligence Laboratory}
+
+\def\submissiondate{\today}
+\def\completiondate{September 1990}
+
+\def\supervisor{Professor William J. Dally}
+\def\supertitleone{Associate Professor of Electrical Engineering}
+\def\supertitletwo{and Computer Science}
+
+\def\readerone{Professor Arvind}
+\def\readeronetitleone{Professor of Electrical Engineering}
+\def\readeronetitletwo{and Computer Science}
+
+\def\readertwo{Professor Thomas Knight}
+\def\readertwotitleone{Assistant Professor of Electrical Engineering}
+\def\readertwotitletwo{and Computer Science}
+
+\def\readerthree{Professor William J. Dally}
+\def\readerthreetitleone{Associate Professor of Electrical Engineering}
+\def\readerthreetitletwo{and Computer Science}
+
+
+\def\abstract{
+The proposed research
+is a study of processor architecture for 
+large scale parallel computer systems.
+The thesis introduces mechanisms
+for fast context switching, 
+synchronization between tasks,
+and run-time binding of 
+variable names to processor memory.
+Various design tradeoffs are evaluated 
+through simulation of a processor running a typical load.
+This work contains
+estimates of
+the speed and complexity of the different 
+alternatives as implemented in  VLSI.
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%% You Should Not Need To Modify Anything Below Here %%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Cover Page - Author signs %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{center}
+{\Large \bf 
+   Massachusetts Institute of Technology
+\\ Department of \deptname \\}
+\vspace{.25in}
+{\Large \bf
+   Proposal for Thesis Research in Partial Fulfillment
+\\ of the Requirements for the Degree of
+\\ \degree \\}
+\end{center}
+
+\vspace{.5in}
+
+\def\sig{{\small \sc (Signature of Author)}}
+
+\begin{tabular}{rlc}
+   {\small \sc Title:}                       & \multicolumn{2}{l}{\title}
+\\ {\small \sc Submitted by:}
+                            & \author  & \\
+                            & \addrone & \\
+                            & \addrtwo & \\ \cline{3-3}
+			    &	       & \makebox[2in][c]{\sig}
+\\ {\small \sc Date of Submission:}          & \multicolumn{2}{l}{\submissiondate}
+\\ {\small \sc Expected Date of Completion:} & \multicolumn{2}{l}{\completiondate}
+\\ {\small \sc Laboratory:}                  & \multicolumn{2}{l}{\laboratory}
+\end{tabular}
+
+
+\vspace{.75in}
+{\bf \sc Brief Statement of the Problem:}
+
+\abstract
+
+         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage %%% Supervision Agreement %%%
+         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{flushright}
+   Massachusetts Institute of Technology
+\\ Department of \deptname
+\\ Cambridge, Massachusetts 02139
+\end{flushright}
+
+\underline{\bf Doctoral Thesis Supervision Agreement}
+
+\vspace{.25in}
+\begin{tabular}{rl}
+   {\small \sc To:}   & Department Graduate Committee
+\\ {\small \sc From:} & \supervisor
+\end{tabular}
+
+\vspace{.25in}
+The program outlined in the proposal:
+
+\vspace{.25in}
+\begin{tabular}{rl}
+   {\small \sc Title:}  & \title
+\\ {\small \sc Author:} & \author
+\\ {\small \sc Date:}   & \submissiondate
+\end{tabular}
+
+\vspace{.25in}
+is adequate for a Doctoral thesis.
+I believe that appropriate readers for this thesis would be:
+
+\vspace{.25in}
+\begin{tabular}{rl}
+   {\small \sc Reader 1:} & \readerone
+\\ {\small \sc Reader 2:} & \readertwo
+%\\ {\small \sc Reader 3:} & \readerthree
+\end{tabular}
+
+\vspace{.25in}
+Facilities and support for the research outlined in the proposal are available.
+I am willing to supervise the thesis and evaluate the thesis report.
+
+\vspace{.25in}
+\begin{tabular}{crc}
+  \hspace{2in} & {\sc Signed:} & \\ \cline{3-3}
+               &               & {\small \sc \supertitleone} \\
+               &               & {\small \sc \supertitletwo} \\
+               &               &                             \\
+               & {\sc Date:}   & \\ \cline{3-3}
+\end{tabular}
+
+\vspace{0in plus 1fill}
+
+Comments: \\
+\begin{tabular}{c}
+  \hspace{6.25in} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+%  \mbox{} \\ \cline{1-1} \mbox{} \\
+%  \mbox{} \\ \cline{1-1} \mbox{} \\
+%  \mbox{} \\ \cline{1-1} \mbox{} \\
+\end{tabular}
+
+          %%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage  %%% Reader I Agreement %%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{flushright}
+   Massachusetts Institute of Technology
+\\ Department of \deptname
+\\ Cambridge, Massachusetts 02139
+\end{flushright}
+
+\underline{\bf Doctoral Thesis Reader Agreement}
+
+\vspace{.25in}
+\begin{tabular}{rl}
+   {\small \sc To:}   & Department Graduate Committee
+\\ {\small \sc From:} & \readerone
+\end{tabular}
+
+\vspace{.25in}
+The program outlined in the proposal:
+
+\vspace{.25in}
+\begin{tabular}{rl}
+   {\small \sc Title:}          & \title
+\\ {\small \sc Author:}         & \author
+\\ {\small \sc Date:}           & \submissiondate
+\\ {\small \sc Supervisor:}     & \supervisor
+\\ {\small \sc Other Reader:}   & \readertwo
+%\\ {\small \sc Other Reader:}   & \readerthree
+\end{tabular}
+
+\vspace{.25in}
+is adequate for a Doctoral thesis.
+I am willing to aid in guiding the research
+and in evaluating the thesis report as a reader.
+
+\vspace{.25in}
+\begin{tabular}{crc}
+  \hspace{2in} & {\sc Signed:} & \\ \cline{3-3}
+               &               & {\small \sc \readeronetitleone} \\
+               &               & {\small \sc \readeronetitletwo} \\
+               &               &                                 \\
+               & {\sc Date:}   & \\ \cline{3-3}
+\end{tabular}
+
+\vspace{0in plus 1fill}
+
+Comments: \\
+\begin{tabular}{c}
+  \hspace{6.25in} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+\end{tabular}
+
+
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage  %%% Reader II Agreement %%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\begin{flushright}
+   Massachusetts Institute of Technology
+\\ Department of \deptname
+\\ Cambridge, Massachusetts 02139
+\end{flushright}
+
+\underline{\bf Doctoral Thesis Reader Agreement}
+
+\vspace{.25in}
+\begin{tabular}{rl}
+   {\small \sc To:}   & Department Graduate Committee
+\\ {\small \sc From:} & \readertwo
+\end{tabular}
+
+\vspace{.25in}
+The program outlined in the proposal:
+
+\vspace{.25in}
+\begin{tabular}{rl}
+   {\small \sc Title:}          & \title
+\\ {\small \sc Author:}         & \author
+\\ {\small \sc Date:}           & \submissiondate
+\\ {\small \sc Supervisor:}     & \supervisor
+\\ {\small \sc Other Reader:}   & \readerone
+%\\ {\small \sc Other Reader:}   & \readerthree
+\end{tabular}
+
+\vspace{.25in}
+is adequate for a Doctoral thesis.
+I am willing to aid in guiding the research
+and in evaluating the thesis report as a reader.
+
+\vspace{.25in}
+\begin{tabular}{crc}
+  \hspace{2in} & {\sc Signed:} & \\ \cline{3-3}
+               &               & {\small \sc \readertwotitleone} \\
+               &               & {\small \sc \readertwotitletwo} \\
+               &               &                                 \\
+               & {\sc Date:}   & \\ \cline{3-3}
+\end{tabular}
+
+\vspace{0in plus 1fill}
+
+Comments: \\
+\begin{tabular}{c}
+  \hspace{6.25in} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+\end{tabular}
+\newpage
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage  %%% Reader III Agreement %%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\begin{flushright}
+   Massachusetts Institute of Technology
+\\ Department of \deptname
+\\ Cambridge, Massachusetts 02139
+\end{flushright}
+
+\underline{\bf Doctoral Thesis Reader Agreement}
+
+\vspace{.25in}
+\begin{tabular}{rl}
+   {\small \sc To:}   & Department Graduate Committee
+\\ {\small \sc From:} & \readerthree
+\end{tabular}
+
+\vspace{.25in}
+The program outlined in the proposal:
+
+\vspace{.25in}
+\begin{tabular}{rl}
+   {\small \sc Title:}          & \title
+\\ {\small \sc Author:}         & \author
+\\ {\small \sc Date:}           & \submissiondate
+\\ {\small \sc Supervisor:}     & \supervisor
+\\ {\small \sc Other Reader:}   & \readerone
+\\ {\small \sc Other Reader:}   & \readertwo
+\end{tabular}
+
+\vspace{.25in}
+is adequate for a Doctoral thesis.
+I am willing to aid in guiding the research
+and in evaluating the thesis report as a reader.
+
+\vspace{.25in}
+\begin{tabular}{crc}
+  \hspace{2in} & {\sc Signed:} & \\ \cline{3-3}
+               &               & {\small \sc \readerthreetitleone} \\
+               &               & {\small \sc \readerthreetitletwo} \\
+               &               &                                 \\
+               & {\sc Date:}   & \\ \cline{3-3}
+\end{tabular}
+
+\vspace{0in plus 1fill}
+
+Comments: \\
+\begin{tabular}{c}
+  \hspace{6.25in} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+  \mbox{} \\ \cline{1-1} \mbox{} \\
+\end{tabular}
+\newpage
+
+\end{document}
+
+
+
+
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/sample.org
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/sample.org	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,7 @@
+#+TITLE: asdhfklasdfkljasdf
+#+AUTHOR: asdhfkjasdhfkljdasf
+
+* Section one
+asdfasdfasdf
+* Another section
+aqghowahaoshfwhowehorwer
\ No newline at end of file
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/sample.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/sample.tex	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,40 @@
+% Created 2014-03-20 Thu 23:12
+\documentclass[11pt]{article}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{fixltx2e}
+\usepackage{graphicx}
+\usepackage{longtable}
+\usepackage{float}
+\usepackage{wrapfig}
+\usepackage{rotating}
+\usepackage[normalem]{ulem}
+\usepackage{amsmath}
+\usepackage{textcomp}
+\usepackage{marvosym}
+\usepackage{wasysym}
+\usepackage{amssymb}
+\usepackage{hyperref}
+\tolerance=1000
+\author{asdhfkjasdhfkljdasf}
+\date{\today}
+\title{asdhfklasdfkljasdf}
+\hypersetup{
+  pdfkeywords={},
+  pdfsubject={},
+  pdfcreator={Emacs 24.2.1 (Org mode 8.2.5h)}}
+\begin{document}
+
+\maketitle
+\tableofcontents
+
+
+\section{Section one}
+\label{sec-1}
+asdfasdfasdf
+
+\section{Another section}
+\label{sec-2}
+aqghowahaoshfwhowehorwer
+% Emacs 24.2.1 (Org mode 8.2.5h)
+\end{document}
\ No newline at end of file
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/signature.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thesis/mitthesis/signature.tex	Fri Mar 21 00:08:49 2014 -0400
@@ -0,0 +1,31 @@
+% -*- Mode:TeX -*-
+%
+% Some departments (e.g. Chemistry) require an additional cover page
+% with signatures of the thesis committee.  Please check with your
+% thesis advisor or other appropriate person to determine if such a 
+% page is required for your thesis.  
+%
+% If you choose not to use the "titlepage" environment, a \newpage
+% commands, and several \vspace{\fill} commands may be necessary to
+% achieve the required spacing.  The \signature command is defined in
+% the "mitthesis" class
+%
+% The following sample appears courtesy of Ben Kaduk <kaduk@mit.edu> and
+% was used in his June 2012 doctoral thesis in Chemistry. 
+
+\begin{titlepage}
+\begin{large}
+This doctoral thesis has been examined by a Committee of the Department
+of Chemistry as follows:
+
+\signature{Professor Jianshu Cao}{Chairman, Thesis Committee \\
+   Professor of Chemistry}
+
+\signature{Professor Troy Van Voorhis}{Thesis Supervisor \\
+   Associate Professor of Chemistry}
+
+\signature{Professor Robert W. Field}{Member, Thesis Committee \\
+   Haslam and Dewey Professor of Chemistry}
+\end{large}
+\end{titlepage}
+
diff -r 7f3581dc58ff -r c2c28c3e27c4 thesis/mitthesis/templates.zip
Binary file thesis/mitthesis/templates.zip has changed