changeset 422:6b0f77df0e53

building latex scaffolding for thesis.
author Robert McIntyre <rlm@mit.edu>
date Fri, 21 Mar 2014 01:17:41 -0400
parents c2c28c3e27c4
children f0da8b550b65
files .hgignore thesis/Makefile thesis/abstract.tex thesis/aux/images/cat-drinking.jpg thesis/aux/images/finger-UV.png thesis/aux/mitthesis/README.bibliography thesis/aux/mitthesis/README.main thesis/aux/mitthesis/README.text thesis/aux/mitthesis/abstract.tex thesis/aux/mitthesis/biblio.tex thesis/aux/mitthesis/chap1.tex thesis/aux/mitthesis/contents.tex thesis/aux/mitthesis/cover.tex thesis/aux/mitthesis/main.bib thesis/aux/mitthesis/main.tex thesis/aux/mitthesis/mitthesis.cls thesis/aux/mitthesis/sample.org thesis/aux/mitthesis/sample.tex thesis/aux/mitthesis/signature.tex thesis/aux/mitthesis/templates.zip thesis/aux/org/first-chapter.html thesis/aux/org/first-chapter.org thesis/aux/org/roadmap.org thesis/cortex.org thesis/cortex.tex thesis/cover.tex thesis/images/cat-drinking.jpg thesis/images/finger-UV.png thesis/mitthesis.cls thesis/mitthesis/README.bibliography thesis/mitthesis/README.main thesis/mitthesis/README.text thesis/mitthesis/abstract.tex thesis/mitthesis/appa.tex thesis/mitthesis/appb.tex thesis/mitthesis/biblio.tex thesis/mitthesis/chap1.tex thesis/mitthesis/contents.tex thesis/mitthesis/cover.tex thesis/mitthesis/lgrind.sty thesis/mitthesis/main.bib thesis/mitthesis/main.bib.info thesis/mitthesis/main.tex thesis/mitthesis/mitthesis.cls thesis/mitthesis/propcover.tex thesis/mitthesis/sample.org thesis/mitthesis/sample.tex thesis/mitthesis/signature.tex thesis/mitthesis/templates.zip thesis/org/first-chapter.html thesis/org/first-chapter.org thesis/org/roadmap.org thesis/thesis.pdf thesis/thesis.tex thesis/weave-thesis.sh
diffstat 55 files changed, 3242 insertions(+), 3154 deletions(-) [+]
line wrap: on
line diff
     1.1 --- a/.hgignore	Fri Mar 21 00:08:49 2014 -0400
     1.2 +++ b/.hgignore	Fri Mar 21 01:17:41 2014 -0400
     1.3 @@ -15,7 +15,7 @@
     1.4  libbulletjme.so
     1.5  java/build/*
     1.6  java/dist/*
     1.7 -thesis/tmp
     1.8 +
     1.9  
    1.10  syntax: regexp
    1.11  ^.*blend\d$
     2.1 --- a/thesis/Makefile	Fri Mar 21 00:08:49 2014 -0400
     2.2 +++ b/thesis/Makefile	Fri Mar 21 01:17:41 2014 -0400
     2.3 @@ -0,0 +1,10 @@
     2.4 +all:
     2.5 +	./weave-thesis.sh
     2.6 +	rsync -avz --delete /home/r/proj/cortex/thesis "r@aurellem.org:~"
     2.7 +	ssh r@aurellem.org "cd ~/thesis; pdflatex thesis.tex; pdflatex thesis.tex"
     2.8 +	scp "r@aurellem.org:/home/r/thesis/thesis.pdf" .
     2.9 +
    2.10 +
    2.11 +
    2.12 +
    2.13 +
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/thesis/abstract.tex	Fri Mar 21 01:17:41 2014 -0400
     3.3 @@ -0,0 +1,22 @@
     3.4 +% $Log: abstract.tex,v $
     3.5 +% Revision 1.1  93/05/14  14:56:25  starflt
     3.6 +% Initial revision
     3.7 +% 
     3.8 +% Revision 1.1  90/05/04  10:41:01  lwvanels
     3.9 +% Initial revision
    3.10 +% 
    3.11 +%
    3.12 +%% The text of your abstract and nothing else (other than comments) goes here.
    3.13 +%% It will be single-spaced and the rest of the text that is supposed to go on
    3.14 +%% the abstract page will be generated by the abstractpage environment.  This
    3.15 +%% file should be \input (not \include 'd) from cover.tex.
    3.16 +In this thesis, I designed and implemented a compiler which performs
    3.17 +optimizations that reduce the number of low-level floating point operations
    3.18 +necessary for a specific task; this involves the optimization of chains of
    3.19 +floating point operations as well as the implementation of a ``fixed'' point
    3.20 +data type that allows some floating point operations to simulated with integer
    3.21 +arithmetic.  The source language of the compiler is a subset of C, and the
    3.22 +destination language is assembly language for a micro-floating point CPU.  An
    3.23 +instruction-level simulator of the CPU was written to allow testing of the
    3.24 +code.  A series of test pieces of codes was compiled, both with and without
    3.25 +optimization, to determine how effective these optimizations were.
     4.1 Binary file thesis/aux/images/cat-drinking.jpg has changed
     5.1 Binary file thesis/aux/images/finger-UV.png has changed
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/thesis/aux/mitthesis/README.bibliography	Fri Mar 21 01:17:41 2014 -0400
     6.3 @@ -0,0 +1,28 @@
     6.4 +This file gives an overview on what you will need to do to create a
     6.5 +bibliographic database for references, as well as create the actual
     6.6 +bibliography for your thesis.
     6.7 +
     6.8 +You should not need to touch the file biblio.tex.  This merely tells
     6.9 +latex to look for the file with the bibliographic info.  The file you
    6.10 +want to edit is main.bib.  For each entry, use the appropriate style
    6.11 +as designated in the file.
    6.12 +
    6.13 +Citing your references:
    6.14 +
    6.15 +When you cite a reference, you need to use the ``key'' you declare in
    6.16 +main.bib for the entry.  No one ever sees the keys, but you'll want to
    6.17 +use something you will easily remember.  For instance, if you had an
    6.18 +entry with:
    6.19 +
    6.20 +	key=geer1
    6.21 +
    6.22 +Then you would use \cite{geer1} to reference it within your thesis.
    6.23 +
    6.24 +NOTE: You can not include references in your bibliography that are
    6.25 +never cited in your paper by default. If you need to do this, create a
    6.26 +key for the entry and at the end of your thesis include the line:
    6.27 +
    6.28 +\nocite{key}
    6.29 +
    6.30 +This should be done for every entry which is not explicitly cited.
    6.31 +
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/thesis/aux/mitthesis/README.main	Fri Mar 21 01:17:41 2014 -0400
     7.3 @@ -0,0 +1,54 @@
     7.4 +This file explains the options available to you for editting the file
     7.5 +main.tex.
     7.6 +
     7.7 +The commands in the this file allow you to specify options such as
     7.8 +spacing, double-sided printing, a draft copy, etc.   By default, 12pt
     7.9 +and lgrind are included; lgrind is the 2e style for including code in
    7.10 +your thesis.
    7.11 +
    7.12 +\documentclass[12pt]{mitthesis}
    7.13 +\usepackage{lgrind}
    7.14 +\pagestyle{plain}
    7.15 +
    7.16 +You can add options in the documentclass line as follows:
    7.17 +
    7.18 +	o  singlespace
    7.19 +
    7.20 +	\documentclass[12pt,singlespace]{mitthesis}
    7.21 +	
    7.22 +	o  twoside
    7.23 +
    7.24 +	\documentclass[12pt,twoside]{mitthesis}
    7.25 +
    7.26 +	o  draft   (make sure to change the pagestyle to drafthead as
    7.27 +			well)
    7.28 +
    7.29 +	\documentclass[12pt,draft]{mitthesis}
    7.30 +	\usepackage{lgrind}
    7.31 +	\pagestyle{drafthead}
    7.32 +
    7.33 +	o vi   (for course vi and course viii theses)
    7.34 +
    7.35 +	\documentclass[12pt,vi]{mitthesis}
    7.36 +
    7.37 +Any options you would use for report.sty will work here as well.
    7.38 +
    7.39 +
    7.40 +You should not need to change the first three lines and last two lines
    7.41 +below.  Be sure to include an \include command for each file you are
    7.42 +including in your thesis.
    7.43 +  
    7.44 +\include{cover}
    7.45 +\pagestyle{plain}
    7.46 +\include{contents}
    7.47 +\include{chap1}
    7.48 +\include{chap2}
    7.49 +\appendix
    7.50 +\include{appa}
    7.51 +\include{appb}
    7.52 +\include{biblio}
    7.53 +\end{document}
    7.54 +
    7.55 +Comment: to include appendices use a single \appendix command followed by
    7.56 +a number of \include{} commands as many files as needed, each of which
    7.57 +should contain a \chapter{} command for the appendix title.
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/thesis/aux/mitthesis/README.text	Fri Mar 21 01:17:41 2014 -0400
     8.3 @@ -0,0 +1,34 @@
     8.4 +This file includes the basic commands you will need to use within each
     8.5 +chapter of your thesis.
     8.6 +
     8.7 +The file chap1.tex is a sample first chapter.  To get started, you may
     8.8 +just want to replace the text and commands in that file as needed.  In
     8.9 +general though, for each new chapter you want to do the following:
    8.10 +
    8.11 +	o Make sure the name has the extension .tex .  Otherwise, you
    8.12 +	can call it anything you want.  For ease of use, all the
    8.13 +	examples use chap1, chap2, etc.
    8.14 +
    8.15 +	o Add a line to the file main.tex that reads:
    8.16 +
    8.17 +	\include{yourfilename}
    8.18 +
    8.19 +	This should not include the .tex extension, because latex
    8.20 +	assumes that is there.
    8.21 +
    8.22 +Basic syntax:
    8.23 +
    8.24 +	o The first line of each chapter should be:
    8.25 +
    8.26 +	\chapter{Chapter Title}
    8.27 +
    8.28 +	o To start a new section (labeled chap#.sec# -- as in 1.1,
    8.29 +	1.2, etc):
    8.30 +
    8.31 +	\section{Section Heading}
    8.32 +
    8.33 +	You can also include subsections:
    8.34 +
    8.35 +	\subsection{Heading}
    8.36 +
    8.37 +
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/thesis/aux/mitthesis/abstract.tex	Fri Mar 21 01:17:41 2014 -0400
     9.3 @@ -0,0 +1,22 @@
     9.4 +% $Log: abstract.tex,v $
     9.5 +% Revision 1.1  93/05/14  14:56:25  starflt
     9.6 +% Initial revision
     9.7 +% 
     9.8 +% Revision 1.1  90/05/04  10:41:01  lwvanels
     9.9 +% Initial revision
    9.10 +% 
    9.11 +%
    9.12 +%% The text of your abstract and nothing else (other than comments) goes here.
    9.13 +%% It will be single-spaced and the rest of the text that is supposed to go on
    9.14 +%% the abstract page will be generated by the abstractpage environment.  This
    9.15 +%% file should be \input (not \include 'd) from cover.tex.
    9.16 +In this thesis, I designed and implemented a compiler which performs
    9.17 +optimizations that reduce the number of low-level floating point operations
    9.18 +necessary for a specific task; this involves the optimization of chains of
    9.19 +floating point operations as well as the implementation of a ``fixed'' point
    9.20 +data type that allows some floating point operations to simulated with integer
    9.21 +arithmetic.  The source language of the compiler is a subset of C, and the
    9.22 +destination language is assembly language for a micro-floating point CPU.  An
    9.23 +instruction-level simulator of the CPU was written to allow testing of the
    9.24 +code.  A series of test pieces of codes was compiled, both with and without
    9.25 +optimization, to determine how effective these optimizations were.
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/thesis/aux/mitthesis/biblio.tex	Fri Mar 21 01:17:41 2014 -0400
    10.3 @@ -0,0 +1,8 @@
    10.4 +%% This defines the bibliography file (main.bib) and the bibliography style.
    10.5 +%% If you want to create a bibliography file by hand, change the contents of
    10.6 +%% this file to a `thebibliography' environment.  For more information 
    10.7 +%% see section 4.3 of the LaTeX manual.
    10.8 +\begin{singlespace}
    10.9 +\bibliography{main}
   10.10 +\bibliographystyle{plain}
   10.11 +\end{singlespace}
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/thesis/aux/mitthesis/chap1.tex	Fri Mar 21 01:17:41 2014 -0400
    11.3 @@ -0,0 +1,250 @@
    11.4 +%% This is an example first chapter.  You should put chapter/appendix that you
    11.5 +%% write into a separate file, and add a line \include{yourfilename} to
    11.6 +%% main.tex, where `yourfilename.tex' is the name of the chapter/appendix file.
    11.7 +%% You can process specific files by typing their names in at the 
    11.8 +%% \files=
    11.9 +%% prompt when you run the file main.tex through LaTeX.
   11.10 +\chapter{Introduction}
   11.11 +
   11.12 +Micro-optimization is a technique to reduce the overall operation count of
   11.13 +floating point operations.  In a standard floating point unit, floating
   11.14 +point operations are fairly high level, such as ``multiply'' and ``add'';
   11.15 +in a micro floating point unit ($\mu$FPU), these have been broken down into
   11.16 +their constituent low-level floating point operations on the mantissas and
   11.17 +exponents of the floating point numbers.
   11.18 +
   11.19 +Chapter two describes the architecture of the $\mu$FPU unit, and the
   11.20 +motivations for the design decisions made.
   11.21 +
   11.22 +Chapter three describes the design of the compiler, as well as how the
   11.23 +optimizations discussed in section~\ref{ch1:opts} were implemented.
   11.24 +
   11.25 +Chapter four describes the purpose of test code that was compiled, and which
   11.26 +statistics were gathered by running it through the simulator.  The purpose
   11.27 +is to measure what effect the micro-optimizations had, compared to
   11.28 +unoptimized code.  Possible future expansions to the project are also
   11.29 +discussed.
   11.30 +
   11.31 +\section{Motivations for micro-optimization}
   11.32 +
   11.33 +The idea of micro-optimization is motivated by the recent trends in computer
   11.34 +architecture towards low-level parallelism and small, pipelineable
   11.35 +instruction sets \cite{patterson:risc,rad83}.  By getting rid of more
   11.36 +complex instructions and concentrating on optimizing frequently used
   11.37 +instructions, substantial increases in performance were realized.
   11.38 +
   11.39 +Another important motivation was the trend towards placing more of the
   11.40 +burden of performance on the compiler.  Many of the new architectures depend
   11.41 +on an intelligent, optimizing compiler in order to realize anywhere near
   11.42 +their peak performance
   11.43 +\cite{ellis:bulldog,pet87,coutant:precision-compilers}.  In these cases, the
   11.44 +compiler not only is responsible for faithfully generating native code to
   11.45 +match the source language, but also must be aware of instruction latencies,
   11.46 +delayed branches, pipeline stages, and a multitude of other factors in order
   11.47 +to generate fast code \cite{gib86}.
   11.48 +
   11.49 +Taking these ideas one step further, it seems that the floating point
   11.50 +operations that are normally single, large instructions can be further broken
   11.51 +down into smaller, simpler, faster instructions, with more control in the
   11.52 +compiler and less in the hardware.  This is the idea behind a
   11.53 +micro-optimizing FPU; break the floating point instructions down into their
   11.54 +basic components and use a small, fast implementation, with a large part of
   11.55 +the burden of hardware allocation and optimization shifted towards
   11.56 +compile-time.
   11.57 +
   11.58 +Along with the hardware speedups possible by using a $\mu$FPU, there are
   11.59 +also optimizations that the compiler can perform on the code that is
   11.60 +generated.  In a normal sequence of floating point operations, there are
   11.61 +many hidden redundancies that can be eliminated by allowing the compiler to
   11.62 +control the floating point operations down to their lowest level.  These
   11.63 +optimizations are described in detail in section~\ref{ch1:opts}.
   11.64 +
   11.65 +\section{Description of micro-optimization}\label{ch1:opts}
   11.66 +
   11.67 +In order to perform a sequence of floating point operations, a normal FPU
   11.68 +performs many redundant internal shifts and normalizations in the process of
   11.69 +performing a sequence of operations.  However, if a compiler can
   11.70 +decompose the floating point operations it needs down to the lowest level,
   11.71 +it then can optimize away many of these redundant operations.  
   11.72 +
   11.73 +If there is some additional hardware support specifically for
   11.74 +micro-optimization, there are additional optimizations that can be
   11.75 +performed.  This hardware support entails extra ``guard bits'' on the
   11.76 +standard floating point formats, to allow several unnormalized operations to
   11.77 +be performed in a row without the loss information\footnote{A description of
   11.78 +the floating point format used is shown in figures~\ref{exponent-format}
   11.79 +and~\ref{mantissa-format}.}.  A discussion of the mathematics behind
   11.80 +unnormalized arithmetic is in appendix~\ref{unnorm-math}.
   11.81 +
   11.82 +The optimizations that the compiler can perform fall into several categories:
   11.83 +
   11.84 +\subsection{Post Multiply Normalization}
   11.85 +
   11.86 +When more than two multiplications are performed in a row, the intermediate
   11.87 +normalization of the results between multiplications can be eliminated.
   11.88 +This is because with each multiplication, the mantissa can become
   11.89 +denormalized by at most one bit.  If there are guard bits on the mantissas
   11.90 +to prevent bits from ``falling off'' the end during multiplications, the
   11.91 +normalization can be postponed until after a sequence of several
   11.92 +multiplies\footnote{Using unnormalized numbers for math is not a new idea; a
   11.93 +good example of it is the Control Data CDC 6600, designed by Seymour Cray.
   11.94 +\cite{thornton:cdc6600} The CDC 6600 had all of its instructions performing
   11.95 +unnormalized arithmetic, with a separate {\tt NORMALIZE} instruction.}.
   11.96 +
   11.97 +% This is an example of how you would use tgrind to include an example
   11.98 +% of source code; it is commented out in this template since the code
   11.99 +% example file does not exist.  To use it, you need to remove the '%' on the
  11.100 +% beginning of the line, and insert your own information in the call.
  11.101 +%
  11.102 +%\tagrind[htbp]{code/pmn.s.tex}{Post Multiply Normalization}{opt:pmn}
  11.103 +
  11.104 +As you can see, the intermediate results can be multiplied together, with no
  11.105 +need for intermediate normalizations due to the guard bit.  It is only at
  11.106 +the end of the operation that the normalization must be performed, in order
  11.107 +to get it into a format suitable for storing in memory\footnote{Note that
  11.108 +for purposed of clarity, the pipeline delays were considered to be 0, and
  11.109 +the branches were not delayed.}.
  11.110 +
  11.111 +\subsection{Block Exponent}
  11.112 +
  11.113 +In a unoptimized sequence of additions, the sequence of operations is as
  11.114 +follows for each pair of numbers ($m_1$,$e_1$) and ($m_2$,$e_2$).
  11.115 +\begin{enumerate}
  11.116 +  \item Compare $e_1$ and $e_2$.
  11.117 +  \item Shift the mantissa associated with the smaller exponent $|e_1-e_2|$
  11.118 +        places to the right.
  11.119 +  \item Add $m_1$ and $m_2$.
  11.120 +  \item Find the first one in the resulting mantissa.
  11.121 +  \item Shift the resulting mantissa so that normalized
  11.122 +  \item Adjust the exponent accordingly.
  11.123 +\end{enumerate}
  11.124 +
  11.125 +Out of 6 steps, only one is the actual addition, and the rest are involved
  11.126 +in aligning the mantissas prior to the add, and then normalizing the result
  11.127 +afterward.  In the block exponent optimization, the largest mantissa is
  11.128 +found to start with, and all the mantissa's shifted before any additions
  11.129 +take place.  Once the mantissas have been shifted, the additions can take
  11.130 +place one after another\footnote{This requires that for n consecutive
  11.131 +additions, there are $\log_{2}n$ high guard bits to prevent overflow.  In
  11.132 +the $\mu$FPU, there are 3 guard bits, making up to 8 consecutive additions
  11.133 +possible.}.  An example of the Block Exponent optimization on the expression
  11.134 +X = A + B + C is given in figure~\ref{opt:be}.
  11.135 +
  11.136 +% This is an example of how you would use tgrind to include an example
  11.137 +% of source code; it is commented out in this template since the code
  11.138 +% example file does not exist.  To use it, you need to remove the '%' on the
  11.139 +% beginning of the line, and insert your own information in the call.
  11.140 +%
  11.141 +%\tgrind[htbp]{code/be.s.tex}{Block Exponent}{opt:be}
  11.142 +
  11.143 +\section{Integer optimizations}
  11.144 +
  11.145 +As well as the floating point optimizations described above, there are
  11.146 +also integer optimizations that can be used in the $\mu$FPU.  In concert
  11.147 +with the floating point optimizations, these can provide a significant
  11.148 +speedup.  
  11.149 +
  11.150 +\subsection{Conversion to fixed point}
  11.151 +
  11.152 +Integer operations are much faster than floating point operations; if it is
  11.153 +possible to replace floating point operations with fixed point operations,
  11.154 +this would provide a significant increase in speed.
  11.155 +
  11.156 +This conversion can either take place automatically or or based on a
  11.157 +specific request from the programmer.  To do this automatically, the
  11.158 +compiler must either be very smart, or play fast and loose with the accuracy
  11.159 +and precision of the programmer's variables.  To be ``smart'', the computer
  11.160 +must track the ranges of all the floating point variables through the
  11.161 +program, and then see if there are any potential candidates for conversion
  11.162 +to floating point.  This technique is discussed further in
  11.163 +section~\ref{range-tracking}, where it was implemented.
  11.164 +
  11.165 +The other way to do this is to rely on specific hints from the programmer
  11.166 +that a certain value will only assume a specific range, and that only a
  11.167 +specific precision is desired.  This is somewhat more taxing on the
  11.168 +programmer, in that he has to know the ranges that his values will take at
  11.169 +declaration time (something normally abstracted away), but it does provide
  11.170 +the opportunity for fine-tuning already working code.
  11.171 +
  11.172 +Potential applications of this would be simulation programs, where the
  11.173 +variable represents some physical quantity; the constraints of the physical
  11.174 +system may provide bounds on the range the variable can take.
  11.175 +\subsection{Small Constant Multiplications}
  11.176 +
  11.177 +One other class of optimizations that can be done is to replace
  11.178 +multiplications by small integer constants into some combination of
  11.179 +additions and shifts.  Addition and shifting can be significantly faster
  11.180 +than multiplication.  This is done by using some combination of
  11.181 +\begin{eqnarray*}
  11.182 +a_i & = & a_j + a_k \\
  11.183 +a_i & = & 2a_j + a_k \\
  11.184 +a_i & = & 4a_j + a_k \\
  11.185 +a_i & = & 8a_j + a_k \\
  11.186 +a_i & = & a_j - a_k \\
  11.187 +a_i & = & a_j \ll m \mbox{shift}
  11.188 +\end{eqnarray*}
  11.189 +instead of the multiplication.  For example, to multiply $s$ by 10 and store
  11.190 +the result in $r$, you could use:
  11.191 +\begin{eqnarray*}
  11.192 +r & = & 4s + s\\
  11.193 +r & = & r + r
  11.194 +\end{eqnarray*}
  11.195 +Or by 59:
  11.196 +\begin{eqnarray*}
  11.197 +t & = & 2s + s \\
  11.198 +r & = & 2t + s \\
  11.199 +r & = & 8r + t
  11.200 +\end{eqnarray*}
  11.201 +Similar combinations can be found for almost all of the smaller
  11.202 +integers\footnote{This optimization is only an ``optimization'', of course,
  11.203 +when the amount of time spent on the shifts and adds is less than the time
  11.204 +that would be spent doing the multiplication.  Since the time costs of these
  11.205 +operations are known to the compiler in order for it to do scheduling, it is
  11.206 +easy for the compiler to determine when this optimization is worth using.}.
  11.207 +\cite{magenheimer:precision}
  11.208 +
  11.209 +\section{Other optimizations}
  11.210 +
  11.211 +\subsection{Low-level parallelism}
  11.212 +
  11.213 +The current trend is towards duplicating hardware at the lowest level to
  11.214 +provide parallelism\footnote{This can been seen in the i860; floating point
  11.215 +additions and multiplications can proceed at the same time, and the RISC
  11.216 +core be moving data in and out of the floating point registers and providing
  11.217 +flow control at the same time the floating point units are active. \cite{byte:i860}}
  11.218 +
  11.219 +Conceptually, it is easy to take advantage to low-level parallelism in the
  11.220 +instruction stream by simply adding more functional units to the $\mu$FPU,
  11.221 +widening the instruction word to control them, and then scheduling as many
  11.222 +operations to take place at one time as possible.
  11.223 +
  11.224 +However, simply adding more functional units can only be done so many times;
  11.225 +there is only a limited amount of parallelism directly available in the
  11.226 +instruction stream, and without it, much of the extra resources will go to
  11.227 +waste.  One process used to make more instructions potentially schedulable
  11.228 +at any given time is ``trace scheduling''.  This technique originated in the
  11.229 +Bulldog compiler for the original VLIW machine, the ELI-512.
  11.230 +\cite{ellis:bulldog,colwell:vliw}  In trace scheduling, code can be
  11.231 +scheduled through many basic blocks at one time, following a single
  11.232 +potential ``trace'' of program execution.  In this way, instructions that
  11.233 +{\em might\/} be executed depending on a conditional branch further down in
  11.234 +the instruction stream are scheduled, allowing an increase in the potential
  11.235 +parallelism.  To account for the cases where the expected branch wasn't
  11.236 +taken, correction code is inserted after the branches to undo the effects of
  11.237 +any prematurely executed instructions.
  11.238 +
  11.239 +\subsection{Pipeline optimizations}
  11.240 +
  11.241 +In addition to having operations going on in parallel across functional
  11.242 +units, it is also typical to have several operations in various stages of
  11.243 +completion in each unit.  This pipelining allows the throughput of the
  11.244 +functional units to be increased, with no increase in latency.
  11.245 +
  11.246 +There are several ways pipelined operations can be optimized.  On the
  11.247 +hardware side, support can be added to allow data to be recirculated back
  11.248 +into the beginning of the pipeline from the end, saving a trip through the
  11.249 +registers.  On the software side, the compiler can utilize several tricks to
  11.250 +try to fill up as many of the pipeline delay slots as possible, as
  11.251 +seendescribed by Gibbons. \cite{gib86}
  11.252 +
  11.253 +
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/thesis/aux/mitthesis/contents.tex	Fri Mar 21 01:17:41 2014 -0400
    12.3 @@ -0,0 +1,11 @@
    12.4 +  % -*- Mode:TeX -*-
    12.5 +%% This file simply contains the commands that actually generate the table of
    12.6 +%% contents and lists of figures and tables.  You can omit any or all of
    12.7 +%% these files by simply taking out the appropriate command.  For more
    12.8 +%% information on these files, see appendix C.3.3 of the LaTeX manual. 
    12.9 +\tableofcontents
   12.10 +\newpage
   12.11 +\listoffigures
   12.12 +\newpage
   12.13 +\listoftables
   12.14 +
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/thesis/aux/mitthesis/cover.tex	Fri Mar 21 01:17:41 2014 -0400
    13.3 @@ -0,0 +1,132 @@
    13.4 +% -*-latex-*-
    13.5 +% 
    13.6 +% For questions, comments, concerns or complaints:
    13.7 +% thesis@mit.edu
    13.8 +% 
    13.9 +%
   13.10 +% $Log: cover.tex,v $
   13.11 +% Revision 1.8  2008/05/13 15:02:15  jdreed
   13.12 +% Degree month is June, not May.  Added note about prevdegrees.
   13.13 +% Arthur Smith's title updated
   13.14 +%
   13.15 +% Revision 1.7  2001/02/08 18:53:16  boojum
   13.16 +% changed some \newpages to \cleardoublepages
   13.17 +%
   13.18 +% Revision 1.6  1999/10/21 14:49:31  boojum
   13.19 +% changed comment referring to documentstyle
   13.20 +%
   13.21 +% Revision 1.5  1999/10/21 14:39:04  boojum
   13.22 +% *** empty log message ***
   13.23 +%
   13.24 +% Revision 1.4  1997/04/18  17:54:10  othomas
   13.25 +% added page numbers on abstract and cover, and made 1 abstract
   13.26 +% page the default rather than 2.  (anne hunter tells me this
   13.27 +% is the new institute standard.)
   13.28 +%
   13.29 +% Revision 1.4  1997/04/18  17:54:10  othomas
   13.30 +% added page numbers on abstract and cover, and made 1 abstract
   13.31 +% page the default rather than 2.  (anne hunter tells me this
   13.32 +% is the new institute standard.)
   13.33 +%
   13.34 +% Revision 1.3  93/05/17  17:06:29  starflt
   13.35 +% Added acknowledgements section (suggested by tompalka)
   13.36 +% 
   13.37 +% Revision 1.2  92/04/22  13:13:13  epeisach
   13.38 +% Fixes for 1991 course 6 requirements
   13.39 +% Phrase "and to grant others the right to do so" has been added to 
   13.40 +% permission clause
   13.41 +% Second copy of abstract is not counted as separate pages so numbering works
   13.42 +% out
   13.43 +% 
   13.44 +% Revision 1.1  92/04/22  13:08:20  epeisach
   13.45 +
   13.46 +% NOTE:
   13.47 +% These templates make an effort to conform to the MIT Thesis specifications,
   13.48 +% however the specifications can change.  We recommend that you verify the
   13.49 +% layout of your title page with your thesis advisor and/or the MIT 
   13.50 +% Libraries before printing your final copy.
   13.51 +\title{An Optimizing Compiler for Low-Level Floating Point Operations}
   13.52 +
   13.53 +\author{Robert McIntyre}
   13.54 +% If you wish to list your previous degrees on the cover page, use the 
   13.55 +% previous degrees command:
   13.56 +%       \prevdegrees{A.A., Harvard University (1985)}
   13.57 +% You can use the \\ command to list multiple previous degrees
   13.58 +%       \prevdegrees{B.S., University of California (1978) \\
   13.59 +%                    S.M., Massachusetts Institute of Technology (1981)}
   13.60 +\department{Department of Electrical Engineering and Computer Science}
   13.61 +
   13.62 +% If the thesis is for two degrees simultaneously, list them both
   13.63 +% separated by \and like this:
   13.64 +% \degree{Doctor of Philosophy \and Master of Science}
   13.65 +\degree{Bachelor of Science in Computer Science and Engineering}
   13.66 +
   13.67 +% As of the 2007-08 academic year, valid degree months are September, 
   13.68 +% February, or June.  The default is June.
   13.69 +\degreemonth{June}
   13.70 +\degreeyear{1990}
   13.71 +\thesisdate{May 18, 1990}
   13.72 +
   13.73 +%% By default, the thesis will be copyrighted to MIT.  If you need to copyright
   13.74 +%% the thesis to yourself, just specify the `vi' documentclass option.  If for
   13.75 +%% some reason you want to exactly specify the copyright notice text, you can
   13.76 +%% use the \copyrightnoticetext command.  
   13.77 +%\copyrightnoticetext{\copyright IBM, 1990.  Do not open till Xmas.}
   13.78 +
   13.79 +% If there is more than one supervisor, use the \supervisor command
   13.80 +% once for each.
   13.81 +\supervisor{William J. Dally}{Associate Professor}
   13.82 +
   13.83 +% This is the department committee chairman, not the thesis committee
   13.84 +% chairman.  You should replace this with your Department's Committee
   13.85 +% Chairman.
   13.86 +\chairman{Arthur C. Smith}{Chairman, Department Committee on Graduate Theses}
   13.87 +
   13.88 +% Make the titlepage based on the above information.  If you need
   13.89 +% something special and can't use the standard form, you can specify
   13.90 +% the exact text of the titlepage yourself.  Put it in a titlepage
   13.91 +% environment and leave blank lines where you want vertical space.
   13.92 +% The spaces will be adjusted to fill the entire page.  The dotted
   13.93 +% lines for the signatures are made with the \signature command.
   13.94 +\maketitle
   13.95 +
   13.96 +% The abstractpage environment sets up everything on the page except
   13.97 +% the text itself.  The title and other header material are put at the
   13.98 +% top of the page, and the supervisors are listed at the bottom.  A
   13.99 +% new page is begun both before and after.  Of course, an abstract may
  13.100 +% be more than one page itself.  If you need more control over the
  13.101 +% format of the page, you can use the abstract environment, which puts
  13.102 +% the word "Abstract" at the beginning and single spaces its text.
  13.103 +
  13.104 +%% You can either \input (*not* \include) your abstract file, or you can put
  13.105 +%% the text of the abstract directly between the \begin{abstractpage} and
  13.106 +%% \end{abstractpage} commands.
  13.107 +
  13.108 +% First copy: start a new page, and save the page number.
  13.109 +\cleardoublepage
  13.110 +% Uncomment the next line if you do NOT want a page number on your
  13.111 +% abstract and acknowledgments pages.
  13.112 +\pagestyle{empty}
  13.113 +\setcounter{savepage}{\thepage}
  13.114 +\begin{abstractpage}
  13.115 +\input{abstract}
  13.116 +\end{abstractpage}
  13.117 +
  13.118 +% Additional copy: start a new page, and reset the page number.  This way,
  13.119 +% the second copy of the abstract is not counted as separate pages.
  13.120 +% Uncomment the next 6 lines if you need two copies of the abstract
  13.121 +% page.
  13.122 +% \setcounter{page}{\thesavepage}
  13.123 +% \begin{abstractpage}
  13.124 +% \input{abstract}
  13.125 +% \end{abstractpage}
  13.126 +
  13.127 +\cleardoublepage
  13.128 +
  13.129 +\section*{Acknowledgments}
  13.130 +
  13.131 +This is the acknowledgements section.  You should replace this with your
  13.132 +own acknowledgements.
  13.133 +
  13.134 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  13.135 +% -*-latex-*-
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/thesis/aux/mitthesis/main.bib	Fri Mar 21 01:17:41 2014 -0400
    14.3 @@ -0,0 +1,356 @@
    14.4 +@preamble{ "\newcommand{\noopsort}[1]{} "
    14.5 +	# "\newcommand{\printfirst}[2]{#1} "
    14.6 +	# "\newcommand{\singleletter}[1]{#1} "
    14.7 +	# "\newcommand{\switchargs}[2]{#2#1} " }
    14.8 +
    14.9 +@ARTICLE{article-minimal,
   14.10 +   author = {L[eslie] A. Aamport},
   14.11 +   title = {The Gnats and Gnus Document Preparation System},
   14.12 +   journal = {\mbox{G-Animal's} Journal},
   14.13 +   year = 1986,
   14.14 +}
   14.15 +
   14.16 +@ARTICLE{article-full,
   14.17 +   author = {L[eslie] A. Aamport},
   14.18 +   title = {The Gnats and Gnus Document Preparation System},
   14.19 +   journal = {\mbox{G-Animal's} Journal},
   14.20 +   year = 1986,
   14.21 +   volume = 41,
   14.22 +   number = 7,
   14.23 +   pages = "73+",
   14.24 +   month = jul,
   14.25 +   note = "This is a full ARTICLE entry",
   14.26 +}
   14.27 +
   14.28 +The KEY field is here to override the KEY field in the journal being
   14.29 +cross referenced (so is the NOTE field, in addition to its imparting
   14.30 +information).
   14.31 +
   14.32 +@ARTICLE{article-crossref,
   14.33 +   crossref = {WHOLE-JOURNAL},
   14.34 +   key = "",
   14.35 +   author = {L[eslie] A. Aamport},
   14.36 +   title = {The Gnats and Gnus Document Preparation System},
   14.37 +   pages = "73+",
   14.38 +   note = "This is a cross-referencing ARTICLE entry",
   14.39 +}
   14.40 +
   14.41 +@ARTICLE{whole-journal,
   14.42 +   key = "GAJ",
   14.43 +   journal = {\mbox{G-Animal's} Journal},
   14.44 +   year = 1986,
   14.45 +   volume = 41,
   14.46 +   number = 7,
   14.47 +   month = jul,
   14.48 +   note = {The entire issue is devoted to gnats and gnus
   14.49 +		(this entry is a cross-referenced ARTICLE (journal))},
   14.50 +}
   14.51 +
   14.52 +@INBOOK{inbook-minimal,
   14.53 +   author = "Donald E. Knuth",
   14.54 +   title = "Fundamental Algorithms",
   14.55 +   publisher = "Addison-Wesley",
   14.56 +   year = "{\noopsort{1973b}}1973",
   14.57 +   chapter = "1.2",
   14.58 +}
   14.59 +
   14.60 +@INBOOK{inbook-full,
   14.61 +   author = "Donald E. Knuth",
   14.62 +   title = "Fundamental Algorithms",
   14.63 +   volume = 1,
   14.64 +   series = "The Art of Computer Programming",
   14.65 +   publisher = "Addison-Wesley",
   14.66 +   address = "Reading, Massachusetts",
   14.67 +   edition = "Second",
   14.68 +   month = "10~" # jan,
   14.69 +   year = "{\noopsort{1973b}}1973",
   14.70 +   type = "Section",
   14.71 +   chapter = "1.2",
   14.72 +   pages = "10--119",
   14.73 +   note = "This is a full INBOOK entry",
   14.74 +}
   14.75 +
   14.76 +@INBOOK{inbook-crossref,
   14.77 +   crossref = "whole-set",
   14.78 +   title = "Fundamental Algorithms",
   14.79 +   volume = 1,
   14.80 +   series = "The Art of Computer Programming",
   14.81 +   edition = "Second",
   14.82 +   year = "{\noopsort{1973b}}1973",
   14.83 +   type = "Section",
   14.84 +   chapter = "1.2",
   14.85 +   note = "This is a cross-referencing INBOOK entry",
   14.86 +}
   14.87 +
   14.88 +@BOOK{book-minimal,
   14.89 +   author = "Donald E. Knuth",
   14.90 +   title = "Seminumerical Algorithms",
   14.91 +   publisher = "Addison-Wesley",
   14.92 +   year = "{\noopsort{1973c}}1981",
   14.93 +}
   14.94 +
   14.95 +@BOOK{book-full,
   14.96 +   author = "Donald E. Knuth",
   14.97 +   title = "Seminumerical Algorithms",
   14.98 +   volume = 2,
   14.99 +   series = "The Art of Computer Programming",
  14.100 +   publisher = "Addison-Wesley",
  14.101 +   address = "Reading, Massachusetts",
  14.102 +   edition = "Second",
  14.103 +   month = "10~" # jan,
  14.104 +   year = "{\noopsort{1973c}}1981",
  14.105 +   note = "This is a full BOOK entry",
  14.106 +}
  14.107 +
  14.108 +@BOOK{book-crossref,
  14.109 +   crossref = "whole-set",
  14.110 +   title = "Seminumerical Algorithms",
  14.111 +   volume = 2,
  14.112 +   series = "The Art of Computer Programming",
  14.113 +   edition = "Second",
  14.114 +   year = "{\noopsort{1973c}}1981",
  14.115 +   note = "This is a cross-referencing BOOK entry",
  14.116 +}
  14.117 +
  14.118 +@BOOK{whole-set,
  14.119 +   author = "Donald E. Knuth",
  14.120 +   publisher = "Addison-Wesley",
  14.121 +   title = "The Art of Computer Programming",
  14.122 +   series = "Four volumes",
  14.123 +   year = "{\noopsort{1973a}}{\switchargs{--90}{1968}}",
  14.124 +   note = "Seven volumes planned (this is a cross-referenced set of BOOKs)",
  14.125 +}
  14.126 +
  14.127 +@BOOKLET{booklet-minimal,
  14.128 +   key = "Kn{\printfirst{v}{1987}}",
  14.129 +   title = "The Programming of Computer Art",
  14.130 +}
  14.131 +
  14.132 +@BOOKLET{booklet-full,
  14.133 +   author = "Jill C. Knvth",
  14.134 +   title = "The Programming of Computer Art",
  14.135 +   howpublished = "Vernier Art Center",
  14.136 +   address = "Stanford, California",
  14.137 +   month = feb,
  14.138 +   year = 1988,
  14.139 +   note = "This is a full BOOKLET entry",
  14.140 +}
  14.141 +
  14.142 +@INCOLLECTION{incollection-minimal,
  14.143 +   author = "Daniel D. Lincoll",
  14.144 +   title = "Semigroups of Recurrences",
  14.145 +   booktitle = "High Speed Computer and Algorithm Organization",
  14.146 +   publisher = "Academic Press",
  14.147 +   year = 1977,
  14.148 +}
  14.149 +
  14.150 +@INCOLLECTION{incollection-full,
  14.151 +   author = "Daniel D. Lincoll",
  14.152 +   title = "Semigroups of Recurrences",
  14.153 +   editor = "David J. Lipcoll and D. H. Lawrie and A. H. Sameh",
  14.154 +   booktitle = "High Speed Computer and Algorithm Organization",
  14.155 +   number = 23,
  14.156 +   series = "Fast Computers",
  14.157 +   chapter = 3,
  14.158 +   type = "Part",
  14.159 +   pages = "179--183",
  14.160 +   publisher = "Academic Press",
  14.161 +   address = "New York",
  14.162 +   edition = "Third",
  14.163 +   month = sep,
  14.164 +   year = 1977,
  14.165 +   note = "This is a full INCOLLECTION entry",
  14.166 +}
  14.167 +
  14.168 +@INCOLLECTION{incollection-crossref,
  14.169 +   crossref = "whole-collection",
  14.170 +   author = "Daniel D. Lincoll",
  14.171 +   title = "Semigroups of Recurrences",
  14.172 +   pages = "179--183",
  14.173 +   note = "This is a cross-referencing INCOLLECTION entry",
  14.174 +}
  14.175 +
  14.176 +@BOOK{whole-collection,
  14.177 +   editor = "David J. Lipcoll and D. H. Lawrie and A. H. Sameh",
  14.178 +   title = "High Speed Computer and Algorithm Organization",
  14.179 +   booktitle = "High Speed Computer and Algorithm Organization",
  14.180 +   number = 23,
  14.181 +   series = "Fast Computers",
  14.182 +   publisher = "Academic Press",
  14.183 +   address = "New York",
  14.184 +   edition = "Third",
  14.185 +   month = sep,
  14.186 +   year = 1977,
  14.187 +   note = "This is a cross-referenced BOOK (collection) entry",
  14.188 +}
  14.189 +
  14.190 +@MANUAL{manual-minimal,
  14.191 +   key = "Manmaker",
  14.192 +   title = "The Definitive Computer Manual",
  14.193 +}
  14.194 +
  14.195 +@MANUAL{manual-full,
  14.196 +   author = "Larry Manmaker",
  14.197 +   title = "The Definitive Computer Manual",
  14.198 +   organization = "Chips-R-Us",
  14.199 +   address = "Silicon Valley",
  14.200 +   edition = "Silver",
  14.201 +   month = apr # "-" # may,
  14.202 +   year = 1986,
  14.203 +   note = "This is a full MANUAL entry",
  14.204 +}
  14.205 +
  14.206 +@MASTERSTHESIS{mastersthesis-minimal,
  14.207 +   author = "{\'{E}}douard Masterly",
  14.208 +   title = "Mastering Thesis Writing",
  14.209 +   school = "Stanford University",
  14.210 +   year = 1988,
  14.211 +}
  14.212 +
  14.213 +@MASTERSTHESIS{mastersthesis-full,
  14.214 +   author = "{\'{E}}douard Masterly",
  14.215 +   title = "Mastering Thesis Writing",
  14.216 +   school = "Stanford University",
  14.217 +   type = "Master's project",
  14.218 +   address = "English Department",
  14.219 +   month = jun # "-" # aug,
  14.220 +   year = 1988,
  14.221 +   note = "This is a full MASTERSTHESIS entry",
  14.222 +}
  14.223 +
  14.224 +@MISC{misc-minimal,
  14.225 +   key = "Missilany",
  14.226 +   note = "This is a minimal MISC entry",
  14.227 +}
  14.228 +
  14.229 +@MISC{misc-full,
  14.230 +   author = "Joe-Bob Missilany",
  14.231 +   title = "Handing out random pamphlets in airports",
  14.232 +   howpublished = "Handed out at O'Hare",
  14.233 +   month = oct,
  14.234 +   year = 1984,
  14.235 +   note = "This is a full MISC entry",
  14.236 +}
  14.237 +
  14.238 +@STRING{STOC-key = "OX{\singleletter{stoc}}"}
  14.239 +
  14.240 +@STRING{ACM = "The OX Association for Computing Machinery"}
  14.241 +
  14.242 +@STRING{STOC = " Symposium on the Theory of Computing"}
  14.243 +
  14.244 +@INPROCEEDINGS{inproceedings-minimal,
  14.245 +   author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis",
  14.246 +   title = "On Notions of Information Transfer in {VLSI} Circuits",
  14.247 +   booktitle = "Proc. Fifteenth Annual ACM" # STOC,
  14.248 +   year = 1983,
  14.249 +}
  14.250 +
  14.251 +@INPROCEEDINGS{inproceedings-full,
  14.252 +   author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis",
  14.253 +   title = "On Notions of Information Transfer in {VLSI} Circuits",
  14.254 +   editor = "Wizard V. Oz and Mihalis Yannakakis",
  14.255 +   booktitle = "Proc. Fifteenth Annual ACM" # STOC,
  14.256 +   number = 17,
  14.257 +   series = "All ACM Conferences",
  14.258 +   pages = "133--139",
  14.259 +   month = mar,
  14.260 +   year = 1983,
  14.261 +   address = "Boston",
  14.262 +   organization = ACM,
  14.263 +   publisher = "Academic Press",
  14.264 +   note = "This is a full INPROCEDINGS entry",
  14.265 +}
  14.266 +
  14.267 +@INPROCEEDINGS{inproceedings-crossref,
  14.268 +   crossref = "whole-proceedings",
  14.269 +   author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis",
  14.270 +   title = "On Notions of Information Transfer in {VLSI} Circuits",
  14.271 +   organization = "",
  14.272 +   pages = "133--139",
  14.273 +   note = "This is a cross-referencing INPROCEEDINGS entry",
  14.274 +}
  14.275 +
  14.276 +@PROCEEDINGS{proceedings-minimal,
  14.277 +   key = STOC-key,
  14.278 +   title = "Proc. Fifteenth Annual" # STOC,
  14.279 +   year = 1983,
  14.280 +}
  14.281 +
  14.282 +@PROCEEDINGS{proceedings-full,
  14.283 +   editor = "Wizard V. Oz and Mihalis Yannakakis",
  14.284 +   title = "Proc. Fifteenth Annual" # STOC,
  14.285 +   number = 17,
  14.286 +   series = "All ACM Conferences",
  14.287 +   month = mar,
  14.288 +   year = 1983,
  14.289 +   address = "Boston",
  14.290 +   organization = ACM,
  14.291 +   publisher = "Academic Press",
  14.292 +   note = "This is a full PROCEEDINGS entry",
  14.293 +}
  14.294 +
  14.295 +@PROCEEDINGS{whole-proceedings,
  14.296 +   key = STOC-key,
  14.297 +   organization = ACM,
  14.298 +   title = "Proc. Fifteenth Annual" # STOC,
  14.299 +   address = "Boston",
  14.300 +   year = 1983,
  14.301 +   booktitle = "Proc. Fifteenth Annual ACM" # STOC,
  14.302 +   note = "This is a cross-referenced PROCEEDINGS",
  14.303 +}
  14.304 +
  14.305 +@PHDTHESIS{phdthesis-minimal,
  14.306 +   author = "F. Phidias Phony-Baloney",
  14.307 +   title = "Fighting Fire with Fire: Festooning {F}rench Phrases",
  14.308 +   school = "Fanstord University",
  14.309 +   year = 1988,
  14.310 +}
  14.311 +
  14.312 +@PHDTHESIS{phdthesis-full,
  14.313 +   author = "F. Phidias Phony-Baloney",
  14.314 +   title = "Fighting Fire with Fire: Festooning {F}rench Phrases",
  14.315 +   school = "Fanstord University",
  14.316 +   type = "{PhD} Dissertation",
  14.317 +   address = "Department of French",
  14.318 +   month = jun # "-" # aug,
  14.319 +   year = 1988,
  14.320 +   note = "This is a full PHDTHESIS entry",
  14.321 +}
  14.322 +
  14.323 +@TECHREPORT{techreport-minimal,
  14.324 +   author = "Tom Terrific",
  14.325 +   title = "An {$O(n \log n / \! \log\log n)$} Sorting Algorithm",
  14.326 +   institution = "Fanstord University",
  14.327 +   year = 1988,
  14.328 +}
  14.329 +
  14.330 +@TECHREPORT{techreport-full,
  14.331 +   author = "Tom T{\'{e}}rrific",
  14.332 +   title = "An {$O(n \log n / \! \log\log n)$} Sorting Algorithm",
  14.333 +   institution = "Fanstord University",
  14.334 +   type = "Wishful Research Result",
  14.335 +   number = "7",
  14.336 +   address = "Computer Science Department, Fanstord, California",
  14.337 +   month = oct,
  14.338 +   year = 1988,
  14.339 +   note = "This is a full TECHREPORT entry",
  14.340 +}
  14.341 +
  14.342 +@UNPUBLISHED{unpublished-minimal,
  14.343 +   author = "Ulrich {\"{U}}nderwood and Ned {\~N}et and Paul {\={P}}ot",
  14.344 +   title = "Lower Bounds for Wishful Research Results",
  14.345 +   note = "Talk at Fanstord University (this is a minimal UNPUBLISHED entry)",
  14.346 +}
  14.347 +
  14.348 +@UNPUBLISHED{unpublished-full,
  14.349 +   author = "Ulrich {\"{U}}nderwood and Ned {\~N}et and Paul {\={P}}ot",
  14.350 +   title = "Lower Bounds for Wishful Research Results",
  14.351 +   month = nov # ", " # dec,
  14.352 +   year = 1988,
  14.353 +   note = "Talk at Fanstord University (this is a full UNPUBLISHED entry)",
  14.354 +}
  14.355 +
  14.356 +@MISC{random-note-crossref,
  14.357 +   key = {Volume-2},
  14.358 +   note = "Volume~2 is listed under Knuth \cite{book-full}"
  14.359 +}
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/thesis/aux/mitthesis/main.tex	Fri Mar 21 01:17:41 2014 -0400
    15.3 @@ -0,0 +1,46 @@
    15.4 +% -*- Mode:TeX -*-
    15.5 +
    15.6 +%% IMPORTANT: The official thesis specifications are available at:
    15.7 +%%            http://libraries.mit.edu/archives/thesis-specs/
    15.8 +%%
    15.9 +%%            Please verify your thesis' formatting and copyright
   15.10 +%%            assignment before submission.  If you notice any
   15.11 +%%            discrepancies between these templates and the 
   15.12 +%%            MIT Libraries' specs, please let us know
   15.13 +%%            by e-mailing thesis@mit.edu
   15.14 +
   15.15 +%% The documentclass options along with the pagestyle can be used to generate
   15.16 +%% a technical report, a draft copy, or a regular thesis.  You may need to
   15.17 +%% re-specify the pagestyle after you \include  cover.tex.  For more
   15.18 +%% information, see the first few lines of mitthesis.cls. 
   15.19 +
   15.20 +%\documentclass[12pt,vi,twoside]{mitthesis}
   15.21 +%%
   15.22 +%%  If you want your thesis copyright to you instead of MIT, use the
   15.23 +%%  ``vi'' option, as above.
   15.24 +%%
   15.25 +%\documentclass[12pt,twoside,leftblank]{mitthesis}
   15.26 +%%
   15.27 +%% If you want blank pages before new chapters to be labelled ``This
   15.28 +%% Page Intentionally Left Blank'', use the ``leftblank'' option, as
   15.29 +%% above. 
   15.30 +
   15.31 +\documentclass[12pt,twoside]{mitthesis}
   15.32 +%\usepackage{lgrind}
   15.33 +\pagestyle{plain}
   15.34 +
   15.35 +\begin{document}
   15.36 +
   15.37 +\include{cover}
   15.38 +% Some departments (e.g. 5) require an additional signature page.  See
   15.39 +% signature.tex for more information and uncomment the following line if
   15.40 +% applicable.
   15.41 +% \include{signature}
   15.42 +\pagestyle{plain}
   15.43 +\include{contents}
   15.44 +\include{chap1}
   15.45 +\include{chap2}
   15.46 +\appendix
   15.47 +\include{biblio}
   15.48 +\end{document}
   15.49 +
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/thesis/aux/mitthesis/mitthesis.cls	Fri Mar 21 01:17:41 2014 -0400
    16.3 @@ -0,0 +1,535 @@
    16.4 +% $Log: mitthesis.cls,v $
    16.5 +% Revision 1.9  2012/02/15 15:48:16  jdreed
    16.6 +% Tweak the "permission" statement per the Libraries' specs
    16.7 +% retrieved 15-Feb-2012
    16.8 +%
    16.9 +% Revision 1.8  2009/07/27 14:23:50  boojum
   16.10 +% added changing draft mark
   16.11 +%
   16.12 +% Revision 1.6  2005/05/13 19:57:40  boojum
   16.13 +% added leftblank option
   16.14 +%
   16.15 +% Revision 1.5  2002/04/18 14:10:08  boojum
   16.16 +% changed doublespace into setspace for 2e compliance
   16.17 +%
   16.18 +% Revision 1.4  2001/02/08 18:57:13  boojum
   16.19 +% turned two newpages into cleardoublepages
   16.20 +%
   16.21 +% Revision 1.3  2000/08/14 14:53:29  boojum
   16.22 +% commented out footheight, which is relevant for drafthead
   16.23 +%
   16.24 +% Revision 1.2  1999/10/21 14:51:33  boojum
   16.25 +% changed references to documentstyle to documentclass in comments
   16.26 +%
   16.27 +% Revision 1.1  1999/10/21 14:39:31  boojum
   16.28 +% Initial revision
   16.29 +%
   16.30 +%Revision 1.7  1998/04/01  20:45:34  othomas
   16.31 +%removed offending phrase ", and to grant others the right to do so" from copyright notice.
   16.32 +%
   16.33 +%Revision 1.6  96/06/26  15:07:29  othomas
   16.34 +%safety checkin.
   16.35 +%
   16.36 +%Revision 1.5  93/06/07  15:38:50  starflt
   16.37 +%Altered 'vi' option copyright wording to comply with new Institute
   16.38 +%Archives requirements and MIT lawyers.
   16.39 +%
   16.40 +%Revision 1.4  92/08/19  16:51:06  lwvanels
   16.41 +%Updated Course 6 title page for new permissions.
   16.42 +%
   16.43 +%Revision 1.3  92/04/23  10:16:15  epeisach
   16.44 +%Fixed comment character in rcs file
   16.45 +%
   16.46 +%Revision 1.2  92/04/22  13:12:02  epeisach
   16.47 +%Fixes for 1991 course 6 requirements
   16.48 +%Phrase "and to grant others the right to do so" has been added to 
   16.49 +%permission clause
   16.50 +%Second copy of abstract is not counted as separate pages so numbering works
   16.51 +%out
   16.52 +%
   16.53 +%Revision 1.1  90/05/04  11:45:53  lwvanels
   16.54 +%Initial revision
   16.55 +
   16.56 +%
   16.57 +% LaTeX format for theses at MIT
   16.58 +% Based on "Specifications for Thesis Preparation" 
   16.59 +
   16.60 +% `vi' and `upcase' options by Krishna Sethuraman - krishna@athena.mit.edu
   16.61 +% Margins and heading types by Peter Nuth  - nuth@ai.mit.edu
   16.62 +% Title and abstract page by Stephen Gildea - gildea@erl.mit.edu
   16.63 +% Look in this directory for example file mitthesis.doc
   16.64 +% Also for propcover.tex - Boilerplate for PHD proposal.
   16.65 +
   16.66 +% To use this style - say something like:
   16.67 +%  for dull, boring thesis format:
   16.68 +%	\documentclass[12pt]{mitthesis}
   16.69 +%       \pagestyle{plain}
   16.70 +% OR for fast drafts: 
   16.71 +%	\documentclass[11pt,singlespace,draft]{mitthesis}
   16.72 +%	\pagestyle{drafthead}
   16.73 +% OR for Tech Reports:
   16.74 +%	\documentclass[12pt,twoside]{mitthesis}	
   16.75 +%	\pagestyle{headings}
   16.76 +% OR
   16.77 +%  some other combination...
   16.78 +%
   16.79 +%%%% New options:
   16.80 +% 
   16.81 +% Option `twoside':
   16.82 +%   Good for producing Tech Reports.
   16.83 +%   The default is single-sided printing, which is what M.I.T. wants on the
   16.84 +%   thesis document itself.
   16.85 +%
   16.86 +% Option `singlespace':
   16.87 +%   Good for drafts.
   16.88 +%   Double-spaced theses are the default.
   16.89 +%   That is what M.I.T. asks for in the formal specifications.
   16.90 +%
   16.91 +% 	Note that MIT does not REQUIRE all theses to be double-spaced anymore.
   16.92 +% 	Someone in the library system said that it's OK to be single-spaced.
   16.93 +% 	(Regardless of what the specs. say...)
   16.94 +%   To get singlespacing in an area - Use  the 'singlespace' environment. 
   16.95 +%
   16.96 +% Option `draft':
   16.97 +%   Puts `overfull' boxes at the end of lines that are too long. 
   16.98 +%
   16.99 +% Pagestyle `drafthead':
  16.100 +%   Puts the date and the label ``*DRAFT*'' in the footer.
  16.101 +%
  16.102 +%%%%%%%%%%
  16.103 +%
  16.104 +%%%% Parameters to initialize for boilerplate page:
  16.105 +%
  16.106 +%	\title{Mixed Circular Cylindrical Shells}
  16.107 +% 	\author{J. Casey Salas}
  16.108 +% 	\prevdegrees{B.S., University of California (1978) \\
  16.109 +%		     S.M., Massachusetts Institute of Technology (1981)}
  16.110 +% 	\department{Department of Electrical Engineering and Computer Science}
  16.111 +% 	\degree{Doctor of Philosophy}
  16.112 +%% If the thesis is for two degrees simultaneously, list them both
  16.113 +%% separated by \and like this:
  16.114 +% 	\degree{Doctor of Philosophy \and Master of Science}
  16.115 +% 	\degreemonth{February}
  16.116 +% 	\degreeyear{1987}
  16.117 +% 	\thesisdate{December 10, 1986}
  16.118 +%% If the thesis is copyright by the Institute, leave this line out and
  16.119 +%% the standard copyright line will be used instead.
  16.120 +% 	\copyrightnotice{J. Casey Salas, 1986}
  16.121 +%% If there is more than one supervisor, use the \supervisor command
  16.122 +%% once for each.
  16.123 +% 	\supervisor{John D. Galli}{Director, Sound Instrument Laboratory}
  16.124 +%% This is the department committee chairman, not the thesis committee chairman
  16.125 +% 	\chairman{Arthur C. Smith}
  16.126 +%		 {Chairman, Departmental Committee on Graduate Students}
  16.127 +%% Make the titlepage based on the above information.  If you need
  16.128 +%% something special and can't use the standard form, you can specify
  16.129 +%% the exact text of the titlepage yourself.  Put it in a titlepage
  16.130 +%% environment and leave blank lines where you want vertical space.
  16.131 +%% The spaces will be adjusted to fill the entire page.  The dotted
  16.132 +%% lines for the signatures are made with the \signature command.
  16.133 +%
  16.134 +%% The abstractpage environment sets up everything on the page except
  16.135 +%% the text itself.  The title and other header material are put at the
  16.136 +%% top of the page, and the supervisors are listed at the bottom.  A
  16.137 +%% new page is begun both before and after.  Of course, an abstract may
  16.138 +%% be more than one page itself.  If you need more control over the
  16.139 +%% format of the page, you can use the abstract environment, which puts
  16.140 +%% the word "Abstract" at the beginning and single spaces its text.
  16.141 +%
  16.142 +% 	\begin{abstractpage}
  16.143 +%	    Abstract goes here.
  16.144 +%	\end{abstractpage}
  16.145 +%
  16.146 +%%%%%%%% Newer additions 
  16.147 +%
  16.148 +% documentclass options - 
  16.149 +% vi		For MIT course VI or VIII thesis - will copyright the thesis to
  16.150 +% 		you while giving MIT permission to copy and distribute it.
  16.151 +% upcase	Will put much of the cover page in uppercase, as per the
  16.152 +% 		example on page 17 of the *Specifications for Thesis
  16.153 +% 		Preparation*, (revised 1989)
  16.154 +% Also added ``All Rights Reserved'' to default copyright notice.
  16.155 +%
  16.156 +%%%%%%%%%%%
  16.157 +% 
  16.158 +% Documentclass options (vi and upcase) and changes to copyright notice
  16.159 +%	Copyright (c) 1990, by Krishna Sethuraman.
  16.160 +%
  16.161 +% Pagestyle and header generation
  16.162 +%	Copyright (c) 1987, 1988 by Peter Nuth
  16.163 +%
  16.164 +% Original version
  16.165 +%	 Copyright (c) 1987 by Stephen Gildea
  16.166 +% Permission to copy all or part of this work is granted, provided
  16.167 +% that the copies are not made or distributed for resale, and that
  16.168 +% the copyright notice and this notice are retained.
  16.169 +% 
  16.170 +% THIS WORK IS PROVIDED ON AN "AS IS" BASIS.  THE AUTHOR PROVIDES NO
  16.171 +% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
  16.172 +% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
  16.173 +% FOR ANY PARTICULAR PURPOSE.
  16.174 +%%%%%%%%
  16.175 +
  16.176 +\NeedsTeXFormat{LaTeX2e}
  16.177 +\ProvidesClass{mitthesis}[1999/10/20]
  16.178 +
  16.179 +\def\mystretch{1.5}		% Double spacing hack
  16.180 +\DeclareOption{doublespace}{}	% This is default
  16.181 +				% So we do not read this style twice
  16.182 +\DeclareOption{singlespace}{		% If he explicitly wants single spacing
  16.183 +    \typeout{Single spaced}
  16.184 +    \def\mystretch{1}}	
  16.185 +
  16.186 +%% `vi' and `upcase' document style options.  Krishna Sethuraman (1990)
  16.187 +\newcount\vithesis
  16.188 +\DeclareOption{vi}{\typeout{Course VI/VIII thesis style.}\advance\vithesis by1}
  16.189 +\vithesis=0
  16.190 +
  16.191 +\DeclareOption{upcase}{\typeout{Uppercase cover page.}
  16.192 +	\gdef\choosecase#1{\uppercase\expandafter{#1}}}
  16.193 +\def\choosecase#1{#1}
  16.194 +
  16.195 +%% leftblank option by Kevin Fu
  16.196 +\newif\if@leftblank \@leftblankfalse
  16.197 +
  16.198 +\DeclareOption{leftblank}{\typeout{Intentionally Leaving Pages Blank}
  16.199 +\@leftblanktrue}
  16.200 +
  16.201 +%  Thesis looks much like report
  16.202 +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
  16.203 +\ProcessOptions
  16.204 +\LoadClass{report}
  16.205 +
  16.206 +% If the user wants single spacing, set baselinestretch=1.
  16.207 +
  16.208 +\usepackage{setspace}
  16.209 +
  16.210 +% Note - doublespace.sty has some float-related troubles in
  16.211 +% combination with graphics or color, and is not officially compliant
  16.212 +% with 2e.  setspace is a replacement which is 2e-compliant.
  16.213 +
  16.214 +% Read the doublespace style that we got from Rochester:
  16.215 +%\input setdoublespace.sty 		
  16.216 +
  16.217 +\def\baselinestretch{\mystretch}	% Double spacing hack
  16.218 +
  16.219 +%%%%%%%  Set up margins and formatting params %%%
  16.220 +
  16.221 +% Margins.
  16.222 +%  Note we want 1in top margin assuming no header line, so push header
  16.223 +%	into 1in margin.
  16.224 +%  Draft mode brings the header back down.
  16.225 +
  16.226 +\setlength{\oddsidemargin}{0.25in}	% 1.25in left margin 
  16.227 +\setlength{\evensidemargin}{0.25in}	% 1.25in left margin (even pages)
  16.228 +\setlength{\topmargin}{0.0in}		% 1in top margin
  16.229 +\setlength{\textwidth}{6.0in}		% 6.0in text - 1.25in rt margin
  16.230 +\setlength{\textheight}{9in}		% Body ht for 1in margins
  16.231 +\addtolength{\topmargin}{-\headheight}	% No header, so compensate
  16.232 +\addtolength{\topmargin}{-\headsep}	% for header height and separation
  16.233 +
  16.234 +% The next two macros compensate page style for headers and footers
  16.235 +% We only need them in page styles that USE headers and footers.
  16.236 +    % If we have a header, it must be 1in from top of page.
  16.237 +\def\pulldownheader{			% Shift header down 1in from top
  16.238 +    \addtolength{\topmargin}{\headheight}	
  16.239 +    \addtolength{\topmargin}{\headsep}	
  16.240 +    \addtolength{\textheight}{-\headheight}
  16.241 +    \addtolength{\textheight}{-\headsep}
  16.242 +}
  16.243 +    % If we have a footer, put it 1in up from bottom
  16.244 +\def\pullupfooter{				% Shift footer up
  16.245 +    \addtolength{\textheight}{-\footskip}
  16.246 +%    \addtolength{\textheight}{-\footheight}  %footheight doesn't
  16.247 +%    						exist in 2e
  16.248 +}
  16.249 +
  16.250 +%%%%%%%  End of margins and formatting params %%%
  16.251 +
  16.252 +%%%%%%%  Fix various header and footer problems %%%
  16.253 +
  16.254 +% Draft mark on the right side of left pages (outside)
  16.255 +% this mark is also the only one visible on single sided.
  16.256 +\newcommand{\draftrmark}{**DRAFT**} 
  16.257 +% Draft mark on the left side of right pages (outside)
  16.258 +\newcommand{\draftlmark}{**DRAFT**} % 
  16.259 +
  16.260 +% Macros to make changing the Draft easier
  16.261 +\newcommand{\drmark}[1]{\renewcommand{\draftrmark}{#1}}
  16.262 +\newcommand{\dlmark}[1]{\renewcommand{\draftlmark}{#1}}
  16.263 +\newcommand{\dmark}[1]{\drmark{#1}\dlmark{#1}}
  16.264 +
  16.265 +% Format for draft of thesis.  Define our own PageStyle -
  16.266 +% Just like headings, but has foot lines with the date and warning
  16.267 +
  16.268 +\if@twoside         % If two-sided printing.
  16.269 +\def\ps@drafthead{
  16.270 +    \let\@mkboth\markboth
  16.271 +    \def\@oddfoot{\rm \today \hfil \sc \draftrmark}
  16.272 +    \def\@evenfoot{\sc \draftlmark \hfil \rm \today }
  16.273 +    \def\@evenhead{\rm \thepage\hfil \sl \leftmark}
  16.274 +    \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}
  16.275 +    \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
  16.276 +	\@chapapp\ \thechapter. \ \fi ##1}}{}}
  16.277 +    \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
  16.278 +	\thesection. \ \fi ##1}}}
  16.279 +    \pulldownheader				% Bring header down from edge
  16.280 +    \pullupfooter				% Bring footer up
  16.281 +}
  16.282 +\else               % If one-sided printing.
  16.283 +\def\ps@drafthead{
  16.284 +    \let\@mkboth\markboth
  16.285 +    \def\@oddfoot{\rm \today \hfil \sc \draftrmark}
  16.286 +    \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}
  16.287 +    \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
  16.288 +	\@chapapp\ \thechapter. \ \fi ##1}}}
  16.289 +    \pulldownheader				% Bring header down from edge
  16.290 +    \pullupfooter				% Bring footer up
  16.291 +}
  16.292 +\fi
  16.293 +
  16.294 +% I redefine these formats that were defined in report.sty
  16.295 +% Definition of 'headings' page style 
  16.296 +%  Note the use of ##1 for parameter of \def\chaptermark inside the
  16.297 +%  \def\ps@headings.
  16.298 +%
  16.299 +
  16.300 +\if@twoside					% If two-sided printing.
  16.301 +\def\ps@headings{\let\@mkboth\markboth
  16.302 +    \def\@oddfoot{}
  16.303 +    \def\@evenfoot{}		% No feet.
  16.304 +    \def\@evenhead{\rm \thepage\hfil \sl \leftmark}	% Left heading.
  16.305 +    \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}	% Right heading.
  16.306 +    \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
  16.307 +	\@chapapp\ \thechapter. \ \fi ##1}}{}}	
  16.308 +    \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
  16.309 +	\thesection. \ \fi ##1}}}
  16.310 +    \pulldownheader				% Bring header down from edge
  16.311 +}
  16.312 +\else						% If one-sided printing.
  16.313 +\def\ps@headings{\let\@mkboth\markboth
  16.314 +    \def\@oddfoot{}
  16.315 +    \def\@evenfoot{}		%     No feet.
  16.316 +    \def\@oddhead{\hbox {}\sl \rightmark \hfil \rm\thepage}	% Heading.
  16.317 +    \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
  16.318 +	\@chapapp\ \thechapter. \ \fi ##1}}}
  16.319 +    \pulldownheader				% Bring header down from edge
  16.320 +}
  16.321 +\fi
  16.322 +
  16.323 +% Redefinition of 'myheadings' page style.  
  16.324 +%
  16.325 +\def\ps@myheadings{\let\@mkboth\@gobbletwo
  16.326 +    \def\@oddfoot{}
  16.327 +    \def\@evenfoot{}
  16.328 +    \def\sectionmark##1{}
  16.329 +    \def\subsectionmark##1{}
  16.330 +    \def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox {}}	%
  16.331 +    \def\@oddhead{\hbox{}\sl\rightmark \hfil \rm\thepage}	%
  16.332 +    \pulldownheader				% Bring header down from edge
  16.333 +}						
  16.334 +
  16.335 +% Redefine '/chapter' to always start on an odd page.
  16.336 +% Should make no difference in singleside mode.
  16.337 +%
  16.338 +\if@leftblank
  16.339 +% Prints "THIS PAGE INTENTIONALLY LEFT BLANK" on blank pages.
  16.340 +\def\chapter{\clearpage\ifodd\c@page\else
  16.341 +   \hbox{}\par\vfill\centerline%
  16.342 +   {THIS PAGE INTENTIONALLY LEFT BLANK}%
  16.343 +   \vfill\newpage\fi
  16.344 +   \thispagestyle{plain}	% Page style of chapter page is 'plain'
  16.345 +   \global\@topnum\z@		% Prevents figures from going at top of page.
  16.346 +   \@afterindentfalse		% Suppresses indent in first paragraph.  Change
  16.347 +   \secdef\@chapter\@schapter}	% to \@afterindenttrue to have indent.
  16.348 +\else
  16.349 +\def\chapter{\cleardoublepage	% Starts new page.
  16.350 +   \thispagestyle{plain}	% Page style of chapter page is 'plain'
  16.351 +   \global\@topnum\z@		% Prevents figures from going at top of page.
  16.352 +   \@afterindentfalse		% Suppresses indent in first paragraph.  Change
  16.353 +   \secdef\@chapter\@schapter}	% to \@afterindenttrue to have indent.
  16.354 +\fi
  16.355 +% If using the report style, use - instead of . in the figure number.
  16.356 +\@ifundefined{thechapter}{}{\def\thefigure{\thechapter-\arabic{figure}}}
  16.357 +
  16.358 +
  16.359 +%%%%%%%%%  End of Style parameters %%%%
  16.360 +
  16.361 +% Here's Gildea's Boilerplate Stuff.
  16.362 +% Copyright (c) 1987 by Stephen Gildea
  16.363 +% Permission to copy all or part of this work is granted, provided
  16.364 +% that the copies are not made or distributed for resale, and that
  16.365 +% the copyright notice and this notice are retained.
  16.366 +
  16.367 +%% Define all the pieces that go on the title page and the abstract.
  16.368 +
  16.369 +% \title and \author already exist
  16.370 +
  16.371 +\def\prevdegrees#1{\gdef\@prevdegrees{#1}}
  16.372 +\def\@prevdegrees{}
  16.373 +
  16.374 +\def\department#1{\gdef\@department{#1}}
  16.375 +
  16.376 +% If you are getting two degrees, use \and between the names.
  16.377 +\def\degree#1{\setbox0\hbox{#1}	 %for side effect of setting \@degreeword
  16.378 +  \gdef\@degree{#1}}
  16.379 +
  16.380 +% \and is used inside the \degree argument to separate two degrees
  16.381 +\def\and{\gdef\@degreeword{degrees} \par and \par}
  16.382 +\def\@degreeword{degree}
  16.383 +
  16.384 +% The copyright notice stuff is a tremendous mess.
  16.385 +%
  16.386 +% \@copyrightnotice is used by \maketitle to actually put text on the
  16.387 +% page; it defaults to ``Copyright MIT 19xx.  All rights reserved.''
  16.388 +% \copyrightnoticetext takes an argument and defined \@copyrightnotice
  16.389 +% to that argument.  \copyrightnotice takes an argument, and calls
  16.390 +% \copyrightnoticetext with that argument, preceeded by a copyright
  16.391 +% symbol and followed by ``All rights reserved.'' and the standard
  16.392 +% permission notice.
  16.393 +% 
  16.394 +% If you use the 'vi' option, \copyrightnoticetext is used to set the
  16.395 +% copyright to ``(C) Your Name, Current Year in Roman Numerals.''
  16.396 +% followed by the permission notice.
  16.397 +
  16.398 +% If there is no \copyrightnotice command, it is asssumed that MIT
  16.399 +% holds the copyright.  This commands adds the copyright symbol to the
  16.400 +% beginning, and puts the standard permission notice below.
  16.401 +%% ``All rights reserved'' added.  Krishna Sethuraman (1990)
  16.402 +\def\copyrightnotice#1{\copyrightnoticetext{\copyright\ #1.  All rights
  16.403 +reserved.\par\permission}}
  16.404 +
  16.405 +% Occacionally you will need to exactly specify the text of the 
  16.406 +% copyright notice.  The \copyrightnoticetext command is then useful.
  16.407 +\long\def\copyrightnoticetext#1{\gdef\@copyrightnotice{#1}}
  16.408 +\def\@copyrightnotice{\copyright\ \Mit\ \@degreeyear.  All rights reserved.}
  16.409 +
  16.410 +%% `vi' documentclass option: Specifying this option automatically
  16.411 +%% copyrights the thesis to the author and gives MIT permission to copy and
  16.412 +%% distribute the document.  If you want, you can still specify
  16.413 +%% \copyrightnotice{stuff} to copyright to someone else, or
  16.414 +%% \copyrightnoticetext{stuff} to specify the exact text of the copyright
  16.415 +%% notice.
  16.416 +\ifodd\vithesis \copyrightnoticetext{\copyright\ \@author,
  16.417 +\uppercase\expandafter{\romannumeral\@degreeyear}.  All rights reserved.\par\permission}
  16.418 +%% or just
  16.419 +%%\@degreeyear}}
  16.420 +\typeout{Copyright given to author,
  16.421 +	permission to copy/distribute given to MIT.}
  16.422 +\else \typeout{Thesis document copyright MIT unless otherwise (manually) specified}
  16.423 +\fi
  16.424 +
  16.425 +\def\thesisdate#1{\gdef\@thesisdate{#1}}
  16.426 +
  16.427 +% typically just a month and year
  16.428 +\def\degreemonth#1{\gdef\@degreemonth{#1}}
  16.429 +\def\degreeyear#1{\gdef\@degreeyear{#1}}
  16.430 +
  16.431 +% Usage: \supervisor{name}{title}
  16.432 +%        \chairman{name}{title}
  16.433 +
  16.434 +% since there can be more than one supervisor,
  16.435 +% we build the appropriate boxes for the titlepage and
  16.436 +% the abstractpage as the user makes multiple calls
  16.437 +% to \supervisor
  16.438 +\newbox\@titlesupervisor 	\newbox\@abstractsupervisor
  16.439 +
  16.440 +\def\supervisor#1#2{\setbox\@titlesupervisor\vbox
  16.441 +  {\unvbox\@titlesupervisor \vskip 10pt% plus 1fil minus 1fil
  16.442 +  \def\baselinestretch{1}\large
  16.443 +  \signature{Certified by}{#1 \\ #2 \\ Thesis Supervisor}}
  16.444 +  \setbox\@abstractsupervisor\vbox{\unvbox\@abstractsupervisor
  16.445 +  \vskip\baselineskip \def\baselinestretch{1}\@normalsize 
  16.446 +  \par\noindent Thesis Supervisor: #1 \\ Title: #2}}
  16.447 +
  16.448 +% department chairman, not thesis committee chairman
  16.449 +\def\chairman#1#2{\gdef\@chairmanname{#1}\gdef\@chairmantitle{#2}}
  16.450 +
  16.451 +%% `upcase' documentclass option: \choosecase is defined either as a dummy or
  16.452 +%% a macro to change the (expanded) argument to uppercase.
  16.453 +\def\maketitle{\begin{titlepage}
  16.454 +\large
  16.455 +{\def\baselinestretch{1.2}\Large\bf \choosecase{\@title} \par}
  16.456 +by\par
  16.457 +{\Large  \choosecase{\@author}}
  16.458 +\par
  16.459 +\@prevdegrees
  16.460 +\par
  16.461 +\choosecase{Submitted to the} \choosecase{\@department} \\
  16.462 +\choosecase{in partial fulfillment of the requirements for the}
  16.463 +\choosecase{\@degreeword} 
  16.464 +\choosecase{of}
  16.465 +\par
  16.466 +\choosecase{\@degree}
  16.467 +\par
  16.468 +at the
  16.469 +\par\MIT\par
  16.470 +\@degreemonth\ \@degreeyear
  16.471 +\par
  16.472 +\@copyrightnotice
  16.473 +\par
  16.474 +\vskip 3\baselineskip
  16.475 +\signature{Author}{\@department \\ \@thesisdate}
  16.476 +\par
  16.477 +\vfill
  16.478 +\unvbox\@titlesupervisor
  16.479 +\par
  16.480 +\vfill
  16.481 +\signature{Accepted by}{\@chairmanname \\ \@chairmantitle}
  16.482 +\vfill
  16.483 +\end{titlepage}}
  16.484 +
  16.485 +% this environment should probably be called abstract,
  16.486 +% but we want people to also be able to get at the more
  16.487 +% basic abstract environment
  16.488 +\def\abstractpage{\cleardoublepage
  16.489 +\begin{center}{\large{\bf \@title} \\
  16.490 +by \\
  16.491 +\@author \\[\baselineskip]}
  16.492 +\par
  16.493 +\def\baselinestretch{1}\@normalsize
  16.494 +Submitted to the \@department \\
  16.495 +on \@thesisdate, in partial fulfillment of the \\
  16.496 +requirements for the \@degreeword\ of \\
  16.497 +\@degree
  16.498 +\end{center}
  16.499 +\par
  16.500 +\begin{abstract}}
  16.501 +
  16.502 +%% Changed from \unvbox to \unvcopy for use with multiple copies of abstract
  16.503 +%% page.
  16.504 +%% Krishna Sethuraman (1990)
  16.505 +\def\endabstractpage{\end{abstract}\noindent
  16.506 + \unvcopy\@abstractsupervisor \newpage}
  16.507 +
  16.508 +%% This counter is used to save the page number for the second copy of
  16.509 +%% the abstract.
  16.510 +\newcounter{savepage}
  16.511 +
  16.512 +% You can use the titlepage environment to do it all yourself if you
  16.513 +% don't want to use \maketitle.  If the titlepage environment, the
  16.514 +% paragraph skip is infinitely stretchable, so if you leave a blank line
  16.515 +% between lines that you want space between, the space will stretch so
  16.516 +% that the title page fills up the entire page.
  16.517 +\def\titlepage{\cleardoublepage\centering
  16.518 +  \thispagestyle{empty}
  16.519 +  \parindent 0pt \parskip 10pt plus 1fil minus 1fil
  16.520 +  \def\baselinestretch{1}\@normalsize\vbox to \vsize\bgroup\vbox to 9in\bgroup}
  16.521 +% The \kern0pt pushes any depth into the height.  Thanks to Richard Stone.
  16.522 +\def\endtitlepage{\par\kern 0pt\egroup\vss\egroup\newpage}
  16.523 +
  16.524 +\def\MIT{MASSACHUSETTS INSTITUTE OF TECHNOLOGY}
  16.525 +\def\Mit{Massachusetts Institute of Technology}
  16.526 +
  16.527 +\def\permission{\par\noindent{\centering
  16.528 +   The author hereby grants to MIT permission to reproduce and to
  16.529 +   distribute publicly paper and electronic copies of this thesis
  16.530 +   document in whole or in part in any medium now known or hereafter
  16.531 +   created.}\par}
  16.532 +
  16.533 +\def\signature#1#2{\par\noindent#1\dotfill\null\\*
  16.534 +  {\raggedleft #2\par}}
  16.535 +
  16.536 +\def\abstract{\subsection*{Abstract}\small\def\baselinestretch{1}\@normalsize}
  16.537 +\def\endabstract{\par}
  16.538 +
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/thesis/aux/mitthesis/sample.org	Fri Mar 21 01:17:41 2014 -0400
    17.3 @@ -0,0 +1,7 @@
    17.4 +#+TITLE: asdhfklasdfkljasdf
    17.5 +#+AUTHOR: asdhfkjasdhfkljdasf
    17.6 +
    17.7 +* Section one
    17.8 +asdfasdfasdf
    17.9 +* Another section
   17.10 +aqghowahaoshfwhowehorwer
   17.11 \ No newline at end of file
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/thesis/aux/mitthesis/sample.tex	Fri Mar 21 01:17:41 2014 -0400
    18.3 @@ -0,0 +1,40 @@
    18.4 +% Created 2014-03-20 Thu 23:12
    18.5 +\documentclass[11pt]{article}
    18.6 +\usepackage[utf8]{inputenc}
    18.7 +\usepackage[T1]{fontenc}
    18.8 +\usepackage{fixltx2e}
    18.9 +\usepackage{graphicx}
   18.10 +\usepackage{longtable}
   18.11 +\usepackage{float}
   18.12 +\usepackage{wrapfig}
   18.13 +\usepackage{rotating}
   18.14 +\usepackage[normalem]{ulem}
   18.15 +\usepackage{amsmath}
   18.16 +\usepackage{textcomp}
   18.17 +\usepackage{marvosym}
   18.18 +\usepackage{wasysym}
   18.19 +\usepackage{amssymb}
   18.20 +\usepackage{hyperref}
   18.21 +\tolerance=1000
   18.22 +\author{asdhfkjasdhfkljdasf}
   18.23 +\date{\today}
   18.24 +\title{asdhfklasdfkljasdf}
   18.25 +\hypersetup{
   18.26 +  pdfkeywords={},
   18.27 +  pdfsubject={},
   18.28 +  pdfcreator={Emacs 24.2.1 (Org mode 8.2.5h)}}
   18.29 +\begin{document}
   18.30 +
   18.31 +\maketitle
   18.32 +\tableofcontents
   18.33 +
   18.34 +
   18.35 +\section{Section one}
   18.36 +\label{sec-1}
   18.37 +asdfasdfasdf
   18.38 +
   18.39 +\section{Another section}
   18.40 +\label{sec-2}
   18.41 +aqghowahaoshfwhowehorwer
   18.42 +% Emacs 24.2.1 (Org mode 8.2.5h)
   18.43 +\end{document}
   18.44 \ No newline at end of file
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/thesis/aux/mitthesis/signature.tex	Fri Mar 21 01:17:41 2014 -0400
    19.3 @@ -0,0 +1,31 @@
    19.4 +% -*- Mode:TeX -*-
    19.5 +%
    19.6 +% Some departments (e.g. Chemistry) require an additional cover page
    19.7 +% with signatures of the thesis committee.  Please check with your
    19.8 +% thesis advisor or other appropriate person to determine if such a 
    19.9 +% page is required for your thesis.  
   19.10 +%
   19.11 +% If you choose not to use the "titlepage" environment, a \newpage
   19.12 +% commands, and several \vspace{\fill} commands may be necessary to
   19.13 +% achieve the required spacing.  The \signature command is defined in
   19.14 +% the "mitthesis" class
   19.15 +%
   19.16 +% The following sample appears courtesy of Ben Kaduk <kaduk@mit.edu> and
   19.17 +% was used in his June 2012 doctoral thesis in Chemistry. 
   19.18 +
   19.19 +\begin{titlepage}
   19.20 +\begin{large}
   19.21 +This doctoral thesis has been examined by a Committee of the Department
   19.22 +of Chemistry as follows:
   19.23 +
   19.24 +\signature{Professor Jianshu Cao}{Chairman, Thesis Committee \\
   19.25 +   Professor of Chemistry}
   19.26 +
   19.27 +\signature{Professor Troy Van Voorhis}{Thesis Supervisor \\
   19.28 +   Associate Professor of Chemistry}
   19.29 +
   19.30 +\signature{Professor Robert W. Field}{Member, Thesis Committee \\
   19.31 +   Haslam and Dewey Professor of Chemistry}
   19.32 +\end{large}
   19.33 +\end{titlepage}
   19.34 +
    20.1 Binary file thesis/aux/mitthesis/templates.zip has changed
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/thesis/aux/org/first-chapter.html	Fri Mar 21 01:17:41 2014 -0400
    21.3 @@ -0,0 +1,455 @@
    21.4 +<?xml version="1.0" encoding="utf-8"?>
    21.5 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    21.6 +               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    21.7 +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    21.8 +<head>
    21.9 +<title><code>CORTEX</code></title>
   21.10 +<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
   21.11 +<meta name="title" content="<code>CORTEX</code>"/>
   21.12 +<meta name="generator" content="Org-mode"/>
   21.13 +<meta name="generated" content="2013-11-07 04:21:29 EST"/>
   21.14 +<meta name="author" content="Robert McIntyre"/>
   21.15 +<meta name="description" content="Using embodied AI to facilitate Artificial Imagination."/>
   21.16 +<meta name="keywords" content="AI, clojure, embodiment"/>
   21.17 +<style type="text/css">
   21.18 + <!--/*--><![CDATA[/*><!--*/
   21.19 +  html { font-family: Times, serif; font-size: 12pt; }
   21.20 +  .title  { text-align: center; }
   21.21 +  .todo   { color: red; }
   21.22 +  .done   { color: green; }
   21.23 +  .tag    { background-color: #add8e6; font-weight:normal }
   21.24 +  .target { }
   21.25 +  .timestamp { color: #bebebe; }
   21.26 +  .timestamp-kwd { color: #5f9ea0; }
   21.27 +  .right  {margin-left:auto; margin-right:0px;  text-align:right;}
   21.28 +  .left   {margin-left:0px;  margin-right:auto; text-align:left;}
   21.29 +  .center {margin-left:auto; margin-right:auto; text-align:center;}
   21.30 +  p.verse { margin-left: 3% }
   21.31 +  pre {
   21.32 +	border: 1pt solid #AEBDCC;
   21.33 +	background-color: #F3F5F7;
   21.34 +	padding: 5pt;
   21.35 +	font-family: courier, monospace;
   21.36 +        font-size: 90%;
   21.37 +        overflow:auto;
   21.38 +  }
   21.39 +  table { border-collapse: collapse; }
   21.40 +  td, th { vertical-align: top;  }
   21.41 +  th.right  { text-align:center;  }
   21.42 +  th.left   { text-align:center;   }
   21.43 +  th.center { text-align:center; }
   21.44 +  td.right  { text-align:right;  }
   21.45 +  td.left   { text-align:left;   }
   21.46 +  td.center { text-align:center; }
   21.47 +  dt { font-weight: bold; }
   21.48 +  div.figure { padding: 0.5em; }
   21.49 +  div.figure p { text-align: center; }
   21.50 +  div.inlinetask {
   21.51 +    padding:10px;
   21.52 +    border:2px solid gray;
   21.53 +    margin:10px;
   21.54 +    background: #ffffcc;
   21.55 +  }
   21.56 +  textarea { overflow-x: auto; }
   21.57 +  .linenr { font-size:smaller }
   21.58 +  .code-highlighted {background-color:#ffff00;}
   21.59 +  .org-info-js_info-navigation { border-style:none; }
   21.60 +  #org-info-js_console-label { font-size:10px; font-weight:bold;
   21.61 +                               white-space:nowrap; }
   21.62 +  .org-info-js_search-highlight {background-color:#ffff00; color:#000000;
   21.63 +                                 font-weight:bold; }
   21.64 +  /*]]>*/-->
   21.65 +</style>
   21.66 +<script type="text/javascript">var _gaq = _gaq || [];_gaq.push(['_setAccount', 'UA-31261312-1']);_gaq.push(['_trackPageview']);(function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();</script><link rel="stylesheet" type="text/css" href="../../aurellem/css/argentum.css" />
   21.67 +<script type="text/javascript">
   21.68 +<!--/*--><![CDATA[/*><!--*/
   21.69 + function CodeHighlightOn(elem, id)
   21.70 + {
   21.71 +   var target = document.getElementById(id);
   21.72 +   if(null != target) {
   21.73 +     elem.cacheClassElem = elem.className;
   21.74 +     elem.cacheClassTarget = target.className;
   21.75 +     target.className = "code-highlighted";
   21.76 +     elem.className   = "code-highlighted";
   21.77 +   }
   21.78 + }
   21.79 + function CodeHighlightOff(elem, id)
   21.80 + {
   21.81 +   var target = document.getElementById(id);
   21.82 +   if(elem.cacheClassElem)
   21.83 +     elem.className = elem.cacheClassElem;
   21.84 +   if(elem.cacheClassTarget)
   21.85 +     target.className = elem.cacheClassTarget;
   21.86 + }
   21.87 +/*]]>*///-->
   21.88 +</script>
   21.89 +
   21.90 +</head>
   21.91 +<body>
   21.92 +
   21.93 +
   21.94 +<div id="content">
   21.95 +<h1 class="title"><code>CORTEX</code></h1>
   21.96 +
   21.97 +
   21.98 +<div class="header">
   21.99 +  <div class="float-right">	
  21.100 +    <!-- 
  21.101 +    <form>
  21.102 +      <input type="text"/><input type="submit" value="search the blog &raquo;"/> 
  21.103 +    </form>
  21.104 +    -->
  21.105 +  </div>
  21.106 +
  21.107 +  <h1>aurellem <em>&#x2609;</em></h1>
  21.108 +  <ul class="nav">
  21.109 +    <li><a href="/">read the blog &raquo;</a></li>
  21.110 +    <!-- li><a href="#">learn about us &raquo;</a></li-->
  21.111 +  </ul>
  21.112 +</div>
  21.113 +
  21.114 +<div class="author">Written by <author>Robert McIntyre</author></div>
  21.115 +
  21.116 +
  21.117 +
  21.118 +
  21.119 +
  21.120 +
  21.121 +
  21.122 +<div id="outline-container-1" class="outline-2">
  21.123 +<h2 id="sec-1">Artificial Imagination</h2>
  21.124 +<div class="outline-text-2" id="text-1">
  21.125 +
  21.126 +
  21.127 +<p>
  21.128 +  Imagine watching a video of someone skateboarding. When you watch
  21.129 +  the video, you can imagine yourself skateboarding, and your
  21.130 +  knowledge of the human body and its dynamics guides your
  21.131 +  interpretation of the scene. For example, even if the skateboarder
  21.132 +  is partially occluded, you can infer the positions of his arms and
  21.133 +  body from your own knowledge of how your body would be positioned if
  21.134 +  you were skateboarding. If the skateboarder suffers an accident, you
  21.135 +  wince in sympathy, imagining the pain your own body would experience
  21.136 +  if it were in the same situation. This empathy with other people
  21.137 +  guides our understanding of whatever they are doing because it is a
  21.138 +  powerful constraint on what is probable and possible. In order to
  21.139 +  make use of this powerful empathy constraint, I need a system that
  21.140 +  can generate and make sense of sensory data from the many different
  21.141 +  senses that humans possess. The two key proprieties of such a system
  21.142 +  are <i>embodiment</i> and <i>imagination</i>.
  21.143 +</p>
  21.144 +
  21.145 +</div>
  21.146 +
  21.147 +<div id="outline-container-1-1" class="outline-3">
  21.148 +<h3 id="sec-1-1">What is imagination?</h3>
  21.149 +<div class="outline-text-3" id="text-1-1">
  21.150 +
  21.151 +
  21.152 +<p>
  21.153 +   One kind of imagination is <i>sympathetic</i> imagination: you imagine
  21.154 +   yourself in the position of something/someone you are
  21.155 +   observing. This type of imagination comes into play when you follow
  21.156 +   along visually when watching someone perform actions, or when you
  21.157 +   sympathetically grimace when someone hurts themselves. This type of
  21.158 +   imagination uses the constraints you have learned about your own
  21.159 +   body to highly constrain the possibilities in whatever you are
  21.160 +   seeing. It uses all your senses to including your senses of touch,
  21.161 +   proprioception, etc. Humans are flexible when it comes to "putting
  21.162 +   themselves in another's shoes," and can sympathetically understand
  21.163 +   not only other humans, but entities ranging animals to cartoon
  21.164 +   characters to <a href="http://www.youtube.com/watch?v=0jz4HcwTQmU">single dots</a> on a screen!
  21.165 +</p>
  21.166 +<p>
  21.167 +   Another kind of imagination is <i>predictive</i> imagination: you
  21.168 +   construct scenes in your mind that are not entirely related to
  21.169 +   whatever you are observing, but instead are predictions of the
  21.170 +   future or simply flights of fancy. You use this type of imagination
  21.171 +   to plan out multi-step actions, or play out dangerous situations in
  21.172 +   your mind so as to avoid messing them up in reality.
  21.173 +</p>
  21.174 +<p>
  21.175 +   Of course, sympathetic and predictive imagination blend into each
  21.176 +   other and are not completely separate concepts. One dimension along
  21.177 +   which you can distinguish types of imagination is dependence on raw
  21.178 +   sense data. Sympathetic imagination is highly constrained by your
  21.179 +   senses, while predictive imagination can be more or less dependent
  21.180 +   on your senses depending on how far ahead you imagine. Daydreaming
  21.181 +   is an extreme form of predictive imagination that wanders through
  21.182 +   different possibilities without concern for whether they are
  21.183 +   related to whatever is happening in reality.
  21.184 +</p>
  21.185 +<p>
  21.186 +   For this thesis, I will mostly focus on sympathetic imagination and
  21.187 +   the constraint it provides for understanding sensory data.
  21.188 +</p>
  21.189 +</div>
  21.190 +
  21.191 +</div>
  21.192 +
  21.193 +<div id="outline-container-1-2" class="outline-3">
  21.194 +<h3 id="sec-1-2">What problems can imagination solve?</h3>
  21.195 +<div class="outline-text-3" id="text-1-2">
  21.196 +
  21.197 +
  21.198 +<p>
  21.199 +   Consider a video of a cat drinking some water.
  21.200 +</p>
  21.201 +
  21.202 +<div class="figure">
  21.203 +<p><img src="../images/cat-drinking.jpg"  alt="../images/cat-drinking.jpg" /></p>
  21.204 +<p>A cat drinking some water. Identifying this action is beyond the state of the art for computers.</p>
  21.205 +</div>
  21.206 +
  21.207 +<p>
  21.208 +   It is currently impossible for any computer program to reliably
  21.209 +   label such an video as "drinking". I think humans are able to label
  21.210 +   such video as "drinking" because they imagine <i>themselves</i> as the
  21.211 +   cat, and imagine putting their face up against a stream of water
  21.212 +   and sticking out their tongue. In that imagined world, they can
  21.213 +   feel the cool water hitting their tongue, and feel the water
  21.214 +   entering their body, and are able to recognize that <i>feeling</i> as
  21.215 +   drinking. So, the label of the action is not really in the pixels
  21.216 +   of the image, but is found clearly in a simulation inspired by
  21.217 +   those pixels. An imaginative system, having been trained on
  21.218 +   drinking and non-drinking examples and learning that the most
  21.219 +   important component of drinking is the feeling of water sliding
  21.220 +   down one's throat, would analyze a video of a cat drinking in the
  21.221 +   following manner:
  21.222 +</p>
  21.223 +<ul>
  21.224 +<li>Create a physical model of the video by putting a "fuzzy" model
  21.225 +     of its own body in place of the cat. Also, create a simulation of
  21.226 +     the stream of water.
  21.227 +
  21.228 +</li>
  21.229 +<li>Play out this simulated scene and generate imagined sensory
  21.230 +     experience. This will include relevant muscle contractions, a
  21.231 +     close up view of the stream from the cat's perspective, and most
  21.232 +     importantly, the imagined feeling of water entering the mouth.
  21.233 +
  21.234 +</li>
  21.235 +<li>The action is now easily identified as drinking by the sense of
  21.236 +     taste alone. The other senses (such as the tongue moving in and
  21.237 +     out) help to give plausibility to the simulated action. Note that
  21.238 +     the sense of vision, while critical in creating the simulation,
  21.239 +     is not critical for identifying the action from the simulation.
  21.240 +</li>
  21.241 +</ul>
  21.242 +
  21.243 +
  21.244 +<p>
  21.245 +   More generally, I expect imaginative systems to be particularly
  21.246 +   good at identifying embodied actions in videos.
  21.247 +</p>
  21.248 +</div>
  21.249 +</div>
  21.250 +
  21.251 +</div>
  21.252 +
  21.253 +<div id="outline-container-2" class="outline-2">
  21.254 +<h2 id="sec-2">Cortex</h2>
  21.255 +<div class="outline-text-2" id="text-2">
  21.256 +
  21.257 +
  21.258 +<p>
  21.259 +  The previous example involves liquids, the sense of taste, and
  21.260 +  imagining oneself as a cat. For this thesis I constrain myself to
  21.261 +  simpler, more easily digitizable senses and situations.
  21.262 +</p>
  21.263 +<p>
  21.264 +  My system, <code>Cortex</code> performs imagination in two different simplified
  21.265 +  worlds: <i>worm world</i> and <i>stick figure world</i>. In each of these
  21.266 +  worlds, entities capable of imagination recognize actions by
  21.267 +  simulating the experience from their own perspective, and then
  21.268 +  recognizing the action from a database of examples.
  21.269 +</p>
  21.270 +<p>
  21.271 +  In order to serve as a framework for experiments in imagination,
  21.272 +  <code>Cortex</code> requires simulated bodies, worlds, and senses like vision,
  21.273 +  hearing, touch, proprioception, etc.
  21.274 +</p>
  21.275 +
  21.276 +</div>
  21.277 +
  21.278 +<div id="outline-container-2-1" class="outline-3">
  21.279 +<h3 id="sec-2-1">A Video Game Engine takes care of some of the groundwork</h3>
  21.280 +<div class="outline-text-3" id="text-2-1">
  21.281 +
  21.282 +
  21.283 +<p>
  21.284 +   When it comes to simulation environments, the engines used to
  21.285 +   create the worlds in video games offer top-notch physics and
  21.286 +   graphics support. These engines also have limited support for
  21.287 +   creating cameras and rendering 3D sound, which can be repurposed
  21.288 +   for vision and hearing respectively. Physics collision detection
  21.289 +   can be expanded to create a sense of touch.
  21.290 +</p>
  21.291 +<p>   
  21.292 +   jMonkeyEngine3 is one such engine for creating video games in
  21.293 +   Java. It uses OpenGL to render to the screen and uses screengraphs
  21.294 +   to avoid drawing things that do not appear on the screen. It has an
  21.295 +   active community and several games in the pipeline. The engine was
  21.296 +   not built to serve any particular game but is instead meant to be
  21.297 +   used for any 3D game. I chose jMonkeyEngine3 it because it had the
  21.298 +   most features out of all the open projects I looked at, and because
  21.299 +   I could then write my code in Clojure, an implementation of LISP
  21.300 +   that runs on the JVM.
  21.301 +</p>
  21.302 +</div>
  21.303 +
  21.304 +</div>
  21.305 +
  21.306 +<div id="outline-container-2-2" class="outline-3">
  21.307 +<h3 id="sec-2-2"><code>CORTEX</code> Extends jMonkeyEngine3 to implement rich senses</h3>
  21.308 +<div class="outline-text-3" id="text-2-2">
  21.309 +
  21.310 +
  21.311 +<p>
  21.312 +   Using the game-making primitives provided by jMonkeyEngine3, I have
  21.313 +   constructed every major human sense except for smell and
  21.314 +   taste. <code>Cortex</code> also provides an interface for creating creatures
  21.315 +   in Blender, a 3D modeling environment, and then "rigging" the
  21.316 +   creatures with senses using 3D annotations in Blender. A creature
  21.317 +   can have any number of senses, and there can be any number of
  21.318 +   creatures in a simulation.
  21.319 +</p>
  21.320 +<p>   
  21.321 +   The senses available in <code>Cortex</code> are:
  21.322 +</p>
  21.323 +<ul>
  21.324 +<li><a href="../../cortex/html/vision.html">Vision</a>
  21.325 +</li>
  21.326 +<li><a href="../../cortex/html/hearing.html">Hearing</a>
  21.327 +</li>
  21.328 +<li><a href="../../cortex/html/touch.html">Touch</a>
  21.329 +</li>
  21.330 +<li><a href="../../cortex/html/proprioception.html">Proprioception</a>
  21.331 +</li>
  21.332 +<li><a href="../../cortex/html/movement.html">Muscle Tension</a>
  21.333 +</li>
  21.334 +</ul>
  21.335 +
  21.336 +
  21.337 +</div>
  21.338 +</div>
  21.339 +
  21.340 +</div>
  21.341 +
  21.342 +<div id="outline-container-3" class="outline-2">
  21.343 +<h2 id="sec-3">A roadmap for <code>Cortex</code> experiments</h2>
  21.344 +<div class="outline-text-2" id="text-3">
  21.345 +
  21.346 +
  21.347 +
  21.348 +</div>
  21.349 +
  21.350 +<div id="outline-container-3-1" class="outline-3">
  21.351 +<h3 id="sec-3-1">Worm World</h3>
  21.352 +<div class="outline-text-3" id="text-3-1">
  21.353 +
  21.354 +
  21.355 +<p>
  21.356 +   Worms in <code>Cortex</code> are segmented creatures which vary in length and
  21.357 +   number of segments, and have the senses of vision, proprioception,
  21.358 +   touch, and muscle tension.
  21.359 +</p>
  21.360 +
  21.361 +<div class="figure">
  21.362 +<p><img src="../images/finger-UV.png" width=755 alt="../images/finger-UV.png" /></p>
  21.363 +<p>This is the tactile-sensor-profile for the upper segment of a worm. It defines regions of high touch sensitivity (where there are many white pixels) and regions of low sensitivity (where white pixels are sparse).</p>
  21.364 +</div>
  21.365 +
  21.366 +
  21.367 +
  21.368 +
  21.369 +<div class="figure">
  21.370 +  <center>
  21.371 +    <video controls="controls" width="550">
  21.372 +      <source src="../video/worm-touch.ogg" type="video/ogg"
  21.373 +              preload="none" />
  21.374 +    </video>
  21.375 +    <br> <a href="http://youtu.be/RHx2wqzNVcU"> YouTube </a>
  21.376 +  </center>
  21.377 +  <p>The worm responds to touch.</p>
  21.378 +</div>
  21.379 +
  21.380 +<div class="figure">
  21.381 +  <center>
  21.382 +    <video controls="controls" width="550">
  21.383 +      <source src="../video/test-proprioception.ogg" type="video/ogg"
  21.384 +              preload="none" />
  21.385 +    </video>
  21.386 +    <br> <a href="http://youtu.be/JjdDmyM8b0w"> YouTube </a>
  21.387 +  </center>
  21.388 +  <p>Proprioception in a worm. The proprioceptive readout is
  21.389 +    in the upper left corner of the screen.</p>
  21.390 +</div>
  21.391 +
  21.392 +<p>
  21.393 +   A worm is trained in various actions such as sinusoidal movement,
  21.394 +   curling, flailing, and spinning by directly playing motor
  21.395 +   contractions while the worm "feels" the experience. These actions
  21.396 +   are recorded both as vectors of muscle tension, touch, and
  21.397 +   proprioceptive data, but also in higher level forms such as
  21.398 +   frequencies of the various contractions and a symbolic name for the
  21.399 +   action.
  21.400 +</p>
  21.401 +<p>
  21.402 +   Then, the worm watches a video of another worm performing one of
  21.403 +   the actions, and must judge which action was performed. Normally
  21.404 +   this would be an extremely difficult problem, but the worm is able
  21.405 +   to greatly diminish the search space through sympathetic
  21.406 +   imagination. First, it creates an imagined copy of its body which
  21.407 +   it observes from a third person point of view. Then for each frame
  21.408 +   of the video, it maneuvers its simulated body to be in registration
  21.409 +   with the worm depicted in the video. The physical constraints
  21.410 +   imposed by the physics simulation greatly decrease the number of
  21.411 +   poses that have to be tried, making the search feasible. As the
  21.412 +   imaginary worm moves, it generates imaginary muscle tension and
  21.413 +   proprioceptive sensations. The worm determines the action not by
  21.414 +   vision, but by matching the imagined proprioceptive data with
  21.415 +   previous examples.
  21.416 +</p>
  21.417 +<p>
  21.418 +   By using non-visual sensory data such as touch, the worms can also
  21.419 +   answer body related questions such as "did your head touch your
  21.420 +   tail?" and "did worm A touch worm B?"
  21.421 +</p>
  21.422 +<p>
  21.423 +   The proprioceptive information used for action identification is
  21.424 +   body-centric, so only the registration step is dependent on point
  21.425 +   of view, not the identification step. Registration is not specific
  21.426 +   to any particular action. Thus, action identification can be
  21.427 +   divided into a point-of-view dependent generic registration step,
  21.428 +   and a action-specific step that is body-centered and invariant to
  21.429 +   point of view.
  21.430 +</p>
  21.431 +</div>
  21.432 +
  21.433 +</div>
  21.434 +
  21.435 +<div id="outline-container-3-2" class="outline-3">
  21.436 +<h3 id="sec-3-2">Stick Figure World</h3>
  21.437 +<div class="outline-text-3" id="text-3-2">
  21.438 +
  21.439 +
  21.440 +<p>
  21.441 +   This environment is similar to Worm World, except the creatures are
  21.442 +   more complicated and the actions and questions more varied. It is
  21.443 +   an experiment to see how far imagination can go in interpreting
  21.444 +   actions.  
  21.445 +</p></div>
  21.446 +</div>
  21.447 +</div>
  21.448 +</div>
  21.449 +
  21.450 +<div id="postamble">
  21.451 +<p class="date">Date: 2013-11-07 04:21:29 EST</p>
  21.452 +<p class="author">Author: Robert McIntyre</p>
  21.453 +<p class="creator">Org version 7.7 with Emacs version 24</p>
  21.454 +<a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
  21.455 +
  21.456 +</div>
  21.457 +</body>
  21.458 +</html>
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/thesis/aux/org/first-chapter.org	Fri Mar 21 01:17:41 2014 -0400
    22.3 @@ -0,0 +1,238 @@
    22.4 +#+title: =CORTEX=
    22.5 +#+author: Robert McIntyre
    22.6 +#+email: rlm@mit.edu
    22.7 +#+description: Using embodied AI to facilitate Artificial Imagination.
    22.8 +#+keywords: AI, clojure, embodiment
    22.9 +#+SETUPFILE: ../../aurellem/org/setup.org
   22.10 +#+INCLUDE: ../../aurellem/org/level-0.org
   22.11 +#+babel: :mkdirp yes :noweb yes :exports both
   22.12 +#+OPTIONS: toc:nil, num:nil
   22.13 +
   22.14 +* Artificial Imagination
   22.15 +
   22.16 +  Imagine watching a video of someone skateboarding. When you watch
   22.17 +  the video, you can imagine yourself skateboarding, and your
   22.18 +  knowledge of the human body and its dynamics guides your
   22.19 +  interpretation of the scene. For example, even if the skateboarder
   22.20 +  is partially occluded, you can infer the positions of his arms and
   22.21 +  body from your own knowledge of how your body would be positioned if
   22.22 +  you were skateboarding. If the skateboarder suffers an accident, you
   22.23 +  wince in sympathy, imagining the pain your own body would experience
   22.24 +  if it were in the same situation. This empathy with other people
   22.25 +  guides our understanding of whatever they are doing because it is a
   22.26 +  powerful constraint on what is probable and possible. In order to
   22.27 +  make use of this powerful empathy constraint, I need a system that
   22.28 +  can generate and make sense of sensory data from the many different
   22.29 +  senses that humans possess. The two key proprieties of such a system
   22.30 +  are /embodiment/ and /imagination/.
   22.31 +
   22.32 +** What is imagination?
   22.33 +
   22.34 +   One kind of imagination is /sympathetic/ imagination: you imagine
   22.35 +   yourself in the position of something/someone you are
   22.36 +   observing. This type of imagination comes into play when you follow
   22.37 +   along visually when watching someone perform actions, or when you
   22.38 +   sympathetically grimace when someone hurts themselves. This type of
   22.39 +   imagination uses the constraints you have learned about your own
   22.40 +   body to highly constrain the possibilities in whatever you are
   22.41 +   seeing. It uses all your senses to including your senses of touch,
   22.42 +   proprioception, etc. Humans are flexible when it comes to "putting
   22.43 +   themselves in another's shoes," and can sympathetically understand
   22.44 +   not only other humans, but entities ranging from animals to cartoon
   22.45 +   characters to [[http://www.youtube.com/watch?v=0jz4HcwTQmU][single dots]] on a screen!
   22.46 +
   22.47 +   Another kind of imagination is /predictive/ imagination: you
   22.48 +   construct scenes in your mind that are not entirely related to
   22.49 +   whatever you are observing, but instead are predictions of the
   22.50 +   future or simply flights of fancy. You use this type of imagination
   22.51 +   to plan out multi-step actions, or play out dangerous situations in
   22.52 +   your mind so as to avoid messing them up in reality.
   22.53 +
   22.54 +   Of course, sympathetic and predictive imagination blend into each
   22.55 +   other and are not completely separate concepts. One dimension along
   22.56 +   which you can distinguish types of imagination is dependence on raw
   22.57 +   sense data. Sympathetic imagination is highly constrained by your
   22.58 +   senses, while predictive imagination can be more or less dependent
   22.59 +   on your senses depending on how far ahead you imagine. Daydreaming
   22.60 +   is an extreme form of predictive imagination that wanders through
   22.61 +   different possibilities without concern for whether they are
   22.62 +   related to whatever is happening in reality.
   22.63 +
   22.64 +   For this thesis, I will mostly focus on sympathetic imagination and
   22.65 +   the constraint it provides for understanding sensory data.
   22.66 +   
   22.67 +** What problems can imagination solve?
   22.68 +
   22.69 +   Consider a video of a cat drinking some water.
   22.70 +
   22.71 +   #+caption: A cat drinking some water. Identifying this action is beyond the state of the art for computers.
   22.72 +   #+ATTR_LaTeX: width=5cm
   22.73 +   [[../images/cat-drinking.jpg]]
   22.74 +
   22.75 +   It is currently impossible for any computer program to reliably
   22.76 +   label such an video as "drinking". I think humans are able to label
   22.77 +   such video as "drinking" because they imagine /themselves/ as the
   22.78 +   cat, and imagine putting their face up against a stream of water
   22.79 +   and sticking out their tongue. In that imagined world, they can
   22.80 +   feel the cool water hitting their tongue, and feel the water
   22.81 +   entering their body, and are able to recognize that /feeling/ as
   22.82 +   drinking. So, the label of the action is not really in the pixels
   22.83 +   of the image, but is found clearly in a simulation inspired by
   22.84 +   those pixels. An imaginative system, having been trained on
   22.85 +   drinking and non-drinking examples and learning that the most
   22.86 +   important component of drinking is the feeling of water sliding
   22.87 +   down one's throat, would analyze a video of a cat drinking in the
   22.88 +   following manner:
   22.89 +   
   22.90 +   - Create a physical model of the video by putting a "fuzzy" model
   22.91 +     of its own body in place of the cat. Also, create a simulation of
   22.92 +     the stream of water.
   22.93 +
   22.94 +   - Play out this simulated scene and generate imagined sensory
   22.95 +     experience. This will include relevant muscle contractions, a
   22.96 +     close up view of the stream from the cat's perspective, and most
   22.97 +     importantly, the imagined feeling of water entering the mouth.
   22.98 +
   22.99 +   - The action is now easily identified as drinking by the sense of
  22.100 +     taste alone. The other senses (such as the tongue moving in and
  22.101 +     out) help to give plausibility to the simulated action. Note that
  22.102 +     the sense of vision, while critical in creating the simulation,
  22.103 +     is not critical for identifying the action from the simulation.
  22.104 +
  22.105 +   More generally, I expect imaginative systems to be particularly
  22.106 +   good at identifying embodied actions in videos.
  22.107 +
  22.108 +* Cortex
  22.109 +
  22.110 +  The previous example involves liquids, the sense of taste, and
  22.111 +  imagining oneself as a cat. For this thesis I constrain myself to
  22.112 +  simpler, more easily digitizable senses and situations.
  22.113 +
  22.114 +  My system, =CORTEX= performs imagination in two different simplified
  22.115 +  worlds: /worm world/ and /stick-figure world/. In each of these
  22.116 +  worlds, entities capable of imagination recognize actions by
  22.117 +  simulating the experience from their own perspective, and then
  22.118 +  recognizing the action from a database of examples.
  22.119 +
  22.120 +  In order to serve as a framework for experiments in imagination,
  22.121 +  =CORTEX= requires simulated bodies, worlds, and senses like vision,
  22.122 +  hearing, touch, proprioception, etc.
  22.123 +
  22.124 +** A Video Game Engine takes care of some of the groundwork
  22.125 +
  22.126 +   When it comes to simulation environments, the engines used to
  22.127 +   create the worlds in video games offer top-notch physics and
  22.128 +   graphics support. These engines also have limited support for
  22.129 +   creating cameras and rendering 3D sound, which can be repurposed
  22.130 +   for vision and hearing respectively. Physics collision detection
  22.131 +   can be expanded to create a sense of touch.
  22.132 +   
  22.133 +   jMonkeyEngine3 is one such engine for creating video games in
  22.134 +   Java. It uses OpenGL to render to the screen and uses screengraphs
  22.135 +   to avoid drawing things that do not appear on the screen. It has an
  22.136 +   active community and several games in the pipeline. The engine was
  22.137 +   not built to serve any particular game but is instead meant to be
  22.138 +   used for any 3D game. I chose jMonkeyEngine3 it because it had the
  22.139 +   most features out of all the open projects I looked at, and because
  22.140 +   I could then write my code in Clojure, an implementation of LISP
  22.141 +   that runs on the JVM.
  22.142 +
  22.143 +** =CORTEX= Extends jMonkeyEngine3 to implement rich senses
  22.144 +
  22.145 +   Using the game-making primitives provided by jMonkeyEngine3, I have
  22.146 +   constructed every major human sense except for smell and
  22.147 +   taste. =CORTEX= also provides an interface for creating creatures
  22.148 +   in Blender, a 3D modeling environment, and then "rigging" the
  22.149 +   creatures with senses using 3D annotations in Blender. A creature
  22.150 +   can have any number of senses, and there can be any number of
  22.151 +   creatures in a simulation.
  22.152 +   
  22.153 +   The senses available in =CORTEX= are:
  22.154 +
  22.155 +   - [[../../cortex/html/vision.html][Vision]]
  22.156 +   - [[../../cortex/html/hearing.html][Hearing]]
  22.157 +   - [[../../cortex/html/touch.html][Touch]]
  22.158 +   - [[../../cortex/html/proprioception.html][Proprioception]]
  22.159 +   - [[../../cortex/html/movement.html][Muscle Tension]]
  22.160 +
  22.161 +* A roadmap for =CORTEX= experiments
  22.162 +
  22.163 +** Worm World
  22.164 +
  22.165 +   Worms in =CORTEX= are segmented creatures which vary in length and
  22.166 +   number of segments, and have the senses of vision, proprioception,
  22.167 +   touch, and muscle tension.
  22.168 +
  22.169 +#+attr_html: width=755
  22.170 +#+caption: This is the tactile-sensor-profile for the upper segment of a worm. It defines regions of high touch sensitivity (where there are many white pixels) and regions of low sensitivity (where white pixels are sparse).
  22.171 +[[../images/finger-UV.png]]
  22.172 +
  22.173 +
  22.174 +#+begin_html
  22.175 +<div class="figure">
  22.176 +  <center>
  22.177 +    <video controls="controls" width="550">
  22.178 +      <source src="../video/worm-touch.ogg" type="video/ogg"
  22.179 +	      preload="none" />
  22.180 +    </video>
  22.181 +    <br> <a href="http://youtu.be/RHx2wqzNVcU"> YouTube </a>
  22.182 +  </center>
  22.183 +  <p>The worm responds to touch.</p>
  22.184 +</div>
  22.185 +#+end_html
  22.186 +
  22.187 +#+begin_html
  22.188 +<div class="figure">
  22.189 +  <center>
  22.190 +    <video controls="controls" width="550">
  22.191 +      <source src="../video/test-proprioception.ogg" type="video/ogg"
  22.192 +	      preload="none" />
  22.193 +    </video>
  22.194 +    <br> <a href="http://youtu.be/JjdDmyM8b0w"> YouTube </a>
  22.195 +  </center>
  22.196 +  <p>Proprioception in a worm. The proprioceptive readout is
  22.197 +    in the upper left corner of the screen.</p>
  22.198 +</div>
  22.199 +#+end_html
  22.200 +
  22.201 +   A worm is trained in various actions such as sinusoidal movement,
  22.202 +   curling, flailing, and spinning by directly playing motor
  22.203 +   contractions while the worm "feels" the experience. These actions
  22.204 +   are recorded both as vectors of muscle tension, touch, and
  22.205 +   proprioceptive data, but also in higher level forms such as
  22.206 +   frequencies of the various contractions and a symbolic name for the
  22.207 +   action.
  22.208 +
  22.209 +   Then, the worm watches a video of another worm performing one of
  22.210 +   the actions, and must judge which action was performed. Normally
  22.211 +   this would be an extremely difficult problem, but the worm is able
  22.212 +   to greatly diminish the search space through sympathetic
  22.213 +   imagination. First, it creates an imagined copy of its body which
  22.214 +   it observes from a third person point of view. Then for each frame
  22.215 +   of the video, it maneuvers its simulated body to be in registration
  22.216 +   with the worm depicted in the video. The physical constraints
  22.217 +   imposed by the physics simulation greatly decrease the number of
  22.218 +   poses that have to be tried, making the search feasible. As the
  22.219 +   imaginary worm moves, it generates imaginary muscle tension and
  22.220 +   proprioceptive sensations. The worm determines the action not by
  22.221 +   vision, but by matching the imagined proprioceptive data with
  22.222 +   previous examples.
  22.223 +
  22.224 +   By using non-visual sensory data such as touch, the worms can also
  22.225 +   answer body related questions such as "did your head touch your
  22.226 +   tail?" and "did worm A touch worm B?"
  22.227 +
  22.228 +   The proprioceptive information used for action identification is
  22.229 +   body-centric, so only the registration step is dependent on point
  22.230 +   of view, not the identification step. Registration is not specific
  22.231 +   to any particular action. Thus, action identification can be
  22.232 +   divided into a point-of-view dependent generic registration step,
  22.233 +   and a action-specific step that is body-centered and invariant to
  22.234 +   point of view.
  22.235 +
  22.236 +** Stick Figure World
  22.237 +
  22.238 +   This environment is similar to Worm World, except the creatures are
  22.239 +   more complicated and the actions and questions more varied. It is
  22.240 +   an experiment to see how far imagination can go in interpreting
  22.241 +   actions.  
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/thesis/aux/org/roadmap.org	Fri Mar 21 01:17:41 2014 -0400
    23.3 @@ -0,0 +1,220 @@
    23.4 +In order for this to be a reasonable thesis that I can be proud of,
    23.5 +what are the /minimum/ number of things I need to get done?
    23.6 +
    23.7 +
    23.8 +* worm OR hand registration
    23.9 +  - training from a few examples (2 to start out)
   23.10 +  - aligning the body with the scene
   23.11 +  - generating sensory data
   23.12 +  - matching previous labeled examples using dot-products or some
   23.13 +    other basic thing
   23.14 +  - showing that it works with different views
   23.15 +
   23.16 +* first draft
   23.17 +  - draft of thesis without bibliography or formatting
   23.18 +  - should have basic experiment and have full description of
   23.19 +    framework with code
   23.20 +  - review with Winston
   23.21 +  
   23.22 +* final draft
   23.23 +  - implement stretch goals from Winston if possible
   23.24 +  - complete final formatting and submit
   23.25 +
   23.26 +* CORTEX
   23.27 +  DEADLINE: <2014-05-09 Fri>
   23.28 +  SHIT THAT'S IN 67 DAYS!!!
   23.29 +
   23.30 +** program simple feature matching code for the worm's segments
   23.31 +
   23.32 +Subgoals:
   23.33 +*** DONE Get cortex working again, run tests, no jmonkeyengine updates
   23.34 +    CLOSED: [2014-03-03 Mon 22:07] SCHEDULED: <2014-03-03 Mon>
   23.35 +*** DONE get blender working again
   23.36 +    CLOSED: [2014-03-03 Mon 22:43] SCHEDULED: <2014-03-03 Mon>
   23.37 +*** DONE make sparce touch worm segment in blender
   23.38 +    CLOSED: [2014-03-03 Mon 23:16] SCHEDULED: <2014-03-03 Mon>
   23.39 +    CLOCK: [2014-03-03 Mon 22:44]--[2014-03-03 Mon 23:16] =>  0:32
   23.40 +*** DONE make multi-segment touch worm with touch sensors and display
   23.41 +    CLOSED: [2014-03-03 Mon 23:54] SCHEDULED: <2014-03-03 Mon>
   23.42 +
   23.43 +*** DONE Make a worm wiggle and curl
   23.44 +    CLOSED: [2014-03-04 Tue 23:03] SCHEDULED: <2014-03-04 Tue>
   23.45 +
   23.46 +
   23.47 +** First draft
   23.48 +
   23.49 +Subgoals:
   23.50 +*** Writeup new worm experiments.
   23.51 +*** Triage implementation code and get it into chapter form.
   23.52 +
   23.53 +
   23.54 +
   23.55 + 
   23.56 +
   23.57 +** for today
   23.58 +
   23.59 +- guided worm :: control the worm with the keyboard. Useful for
   23.60 +                 testing the body-centered recog scripts, and for
   23.61 +                 preparing a cool demo video.
   23.62 +
   23.63 +- body-centered recognition :: detect actions using hard coded
   23.64 +     body-centered scripts. 
   23.65 +
   23.66 +- cool demo video of the worm being moved and recognizing things ::
   23.67 +     will be a neat part of the thesis.
   23.68 +
   23.69 +- thesis export :: refactoring and organization of code so that it
   23.70 +                   spits out a thesis in addition to the web page.
   23.71 +
   23.72 +- video alignment :: analyze the frames of a video in order to align
   23.73 +     the worm. Requires body-centered recognition. Can "cheat".
   23.74 +
   23.75 +- smoother actions :: use debugging controls to directly influence the
   23.76 +     demo actions, and to generate recoginition procedures.
   23.77 +
   23.78 +- degenerate video demonstration :: show the system recognizing a
   23.79 +     curled worm from dead on. Crowning achievement of thesis.
   23.80 +
   23.81 +** Ordered from easiest to hardest
   23.82 +
   23.83 +Just report the positions of everything. I don't think that this
   23.84 +necessairly shows anything usefull.
   23.85 +
   23.86 +Worm-segment vision -- you initialize a view of the worm, but instead
   23.87 +of pixels you use labels via ray tracing. Has the advantage of still
   23.88 +allowing for visual occlusion, but reliably identifies the objects,
   23.89 +even without rainbow coloring. You can code this as an image. 
   23.90 +
   23.91 +Same as above, except just with worm/non-worm labels.
   23.92 +
   23.93 +Color code each worm segment and then recognize them using blob
   23.94 +detectors. Then you solve for the perspective and the action
   23.95 +simultaneously.
   23.96 +
   23.97 +The entire worm can be colored the same, high contrast color against a
   23.98 +nearly black background.
   23.99 +
  23.100 +"Rooted" vision. You give the exact coordinates of ONE piece of the
  23.101 +worm, but the algorithm figures out the rest.
  23.102 +
  23.103 +More rooted vision -- start off the entire worm with one posistion.
  23.104 +
  23.105 +The right way to do alignment is to use motion over multiple frames to
  23.106 +snap individual pieces of the model into place sharing and
  23.107 +propragating the individual alignments over the whole model. We also
  23.108 +want to limit the alignment search to just those actions we are
  23.109 +prepared to identify. This might mean that I need some small "micro
  23.110 +actions" such as the individual movements of the worm pieces.
  23.111 +
  23.112 +Get just the centers of each segment projected onto the imaging
  23.113 +plane. (best so far).
  23.114 +
  23.115 +
  23.116 +Repertoire of actions  +  video frames -->
  23.117 +   directed multi-frame-search alg
  23.118 +
  23.119 +
  23.120 +
  23.121 +
  23.122 +
  23.123 +
  23.124 +!! Could also have a bounding box around the worm provided by
  23.125 +filtering the worm/non-worm render, and use bbbgs. As a bonus, I get
  23.126 +to include bbbgs in my thesis! Could finally do that recursive things
  23.127 +where I make bounding boxes be those things that give results that
  23.128 +give good bounding boxes. If I did this I could use a disruptive
  23.129 +pattern on the worm.
  23.130 +
  23.131 +Re imagining using default textures is very simple for this system,
  23.132 +but hard for others.
  23.133 +
  23.134 +
  23.135 +Want to demonstrate, at minimum, alignment of some model of the worm
  23.136 +to the video, and a lookup of the action by simulated perception.
  23.137 +
  23.138 +note: the purple/white points is a very beautiful texture, because
  23.139 +when it moves slightly, the white dots look like they're
  23.140 +twinkling. Would look even better if it was a darker purple. Also
  23.141 +would look better more spread out.
  23.142 +
  23.143 +
  23.144 +embed assumption of one frame of view, search by moving around in
  23.145 +simulated world.
  23.146 +
  23.147 +Allowed to limit search by setting limits to a hemisphere around the
  23.148 +imagined worm! This limits scale also.
  23.149 +
  23.150 +
  23.151 +
  23.152 +
  23.153 +
  23.154 +!! Limited search with worm/non-worm rendering. 
  23.155 +How much inverse kinematics do we have to do?
  23.156 +What about cached (allowed state-space) paths, derived from labeled
  23.157 +training. You have to lead from one to another.
  23.158 +
  23.159 +What about initial state? Could start the input videos at a specific
  23.160 +state, then just match that explicitly.
  23.161 +
  23.162 +!! The training doesn't have to be labeled -- you can just move around
  23.163 +for a while!!
  23.164 +
  23.165 +!! Limited search with motion based alignment.
  23.166 +
  23.167 +
  23.168 +
  23.169 +
  23.170 +"play arounds" can establish a chain of linked sensoriums. Future
  23.171 +matches must fall into one of the already experienced things, and once
  23.172 +they do, it greatly limits the things that are possible in the future.
  23.173 +
  23.174 +
  23.175 +frame differences help to detect muscle exertion.
  23.176 +
  23.177 +Can try to match on a few "representative" frames. Can also just have
  23.178 +a few "bodies" in various states which we try to match.
  23.179 +
  23.180 +
  23.181 +
  23.182 +Paths through state-space have the exact same signature as
  23.183 +simulation. BUT, these can be searched in parallel and don't interfere
  23.184 +with each other.
  23.185 +
  23.186 +
  23.187 +
  23.188 +
  23.189 +** Final stretch up to First Draft
  23.190 +
  23.191 +*** DONE complete debug control of worm
  23.192 +    CLOSED: [2014-03-17 Mon 17:29] SCHEDULED: <2014-03-17 Mon>
  23.193 +    CLOCK: [2014-03-17 Mon 14:01]--[2014-03-17 Mon 17:29] =>  3:28
  23.194 +*** DONE add phi-space output to debug control
  23.195 +    CLOSED: [2014-03-17 Mon 17:42] SCHEDULED: <2014-03-17 Mon>
  23.196 +    CLOCK: [2014-03-17 Mon 17:31]--[2014-03-17 Mon 17:42] =>  0:11
  23.197 +
  23.198 +*** DONE complete automatic touch partitioning
  23.199 +    CLOSED: [2014-03-18 Tue 21:43] SCHEDULED: <2014-03-18 Tue>
  23.200 +*** DONE complete cyclic predicate
  23.201 +    CLOSED: [2014-03-19 Wed 16:34] SCHEDULED: <2014-03-18 Tue>
  23.202 +    CLOCK: [2014-03-19 Wed 13:16]--[2014-03-19 Wed 16:34] =>  3:18
  23.203 +*** DONE complete three phi-stream action predicatates; test them with debug control
  23.204 +    CLOSED: [2014-03-19 Wed 16:35] SCHEDULED: <2014-03-17 Mon>
  23.205 +    CLOCK: [2014-03-18 Tue 18:36]--[2014-03-18 Tue 21:43] =>  3:07
  23.206 +    CLOCK: [2014-03-18 Tue 18:34]--[2014-03-18 Tue 18:36] =>  0:02
  23.207 +    CLOCK: [2014-03-17 Mon 19:19]--[2014-03-17 Mon 21:19] =>  2:00
  23.208 +*** DONE build an automatic "do all the things" sequence.
  23.209 +    CLOSED: [2014-03-19 Wed 16:55] SCHEDULED: <2014-03-19 Wed>
  23.210 +    CLOCK: [2014-03-19 Wed 16:53]--[2014-03-19 Wed 16:55] =>  0:02
  23.211 +*** DONE implement proprioception based movement lookup in phi-space
  23.212 +    CLOSED: [2014-03-19 Wed 22:04] SCHEDULED: <2014-03-19 Wed>
  23.213 +    CLOCK: [2014-03-19 Wed 19:32]--[2014-03-19 Wed 22:04] =>  2:32
  23.214 +*** DONE make proprioception reference phi-space indexes
  23.215 +    CLOSED: [2014-03-19 Wed 22:47] SCHEDULED: <2014-03-19 Wed>
  23.216 +    CLOCK: [2014-03-19 Wed 22:07]
  23.217 +
  23.218 +
  23.219 +*** DONE create test videos, also record positions of worm segments
  23.220 +    CLOSED: [2014-03-20 Thu 22:02] SCHEDULED: <2014-03-19 Wed>
  23.221 +
  23.222 +*** TODO Collect intro, worm-learn and cortex creation into draft thesis. 
  23.223 +    
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/thesis/cortex.org	Fri Mar 21 01:17:41 2014 -0400
    24.3 @@ -0,0 +1,7 @@
    24.4 +d
    24.5 +
    24.6 +
    24.7 +lol whatevar
    24.8 +
    24.9 +* lol
   24.10 +
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/thesis/cortex.tex	Fri Mar 21 01:17:41 2014 -0400
    25.3 @@ -0,0 +1,7 @@
    25.4 +d
    25.5 +
    25.6 +
    25.7 +lol whatevar
    25.8 +
    25.9 +\section{lol}
   25.10 +\label{sec-1}
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/thesis/cover.tex	Fri Mar 21 01:17:41 2014 -0400
    26.3 @@ -0,0 +1,132 @@
    26.4 +% -*-latex-*-
    26.5 +% 
    26.6 +% For questions, comments, concerns or complaints:
    26.7 +% thesis@mit.edu
    26.8 +% 
    26.9 +%
   26.10 +% $Log: cover.tex,v $
   26.11 +% Revision 1.8  2008/05/13 15:02:15  jdreed
   26.12 +% Degree month is June, not May.  Added note about prevdegrees.
   26.13 +% Arthur Smith's title updated
   26.14 +%
   26.15 +% Revision 1.7  2001/02/08 18:53:16  boojum
   26.16 +% changed some \newpages to \cleardoublepages
   26.17 +%
   26.18 +% Revision 1.6  1999/10/21 14:49:31  boojum
   26.19 +% changed comment referring to documentstyle
   26.20 +%
   26.21 +% Revision 1.5  1999/10/21 14:39:04  boojum
   26.22 +% *** empty log message ***
   26.23 +%
   26.24 +% Revision 1.4  1997/04/18  17:54:10  othomas
   26.25 +% added page numbers on abstract and cover, and made 1 abstract
   26.26 +% page the default rather than 2.  (anne hunter tells me this
   26.27 +% is the new institute standard.)
   26.28 +%
   26.29 +% Revision 1.4  1997/04/18  17:54:10  othomas
   26.30 +% added page numbers on abstract and cover, and made 1 abstract
   26.31 +% page the default rather than 2.  (anne hunter tells me this
   26.32 +% is the new institute standard.)
   26.33 +%
   26.34 +% Revision 1.3  93/05/17  17:06:29  starflt
   26.35 +% Added acknowledgements section (suggested by tompalka)
   26.36 +% 
   26.37 +% Revision 1.2  92/04/22  13:13:13  epeisach
   26.38 +% Fixes for 1991 course 6 requirements
   26.39 +% Phrase "and to grant others the right to do so" has been added to 
   26.40 +% permission clause
   26.41 +% Second copy of abstract is not counted as separate pages so numbering works
   26.42 +% out
   26.43 +% 
   26.44 +% Revision 1.1  92/04/22  13:08:20  epeisach
   26.45 +
   26.46 +% NOTE:
   26.47 +% These templates make an effort to conform to the MIT Thesis specifications,
   26.48 +% however the specifications can change.  We recommend that you verify the
   26.49 +% layout of your title page with your thesis advisor and/or the MIT 
   26.50 +% Libraries before printing your final copy.
   26.51 +\title{An Optimizing Compiler for Low-Level Floating Point Operations}
   26.52 +
   26.53 +\author{Robert McIntyre}
   26.54 +% If you wish to list your previous degrees on the cover page, use the 
   26.55 +% previous degrees command:
   26.56 +%       \prevdegrees{A.A., Harvard University (1985)}
   26.57 +% You can use the \\ command to list multiple previous degrees
   26.58 +%       \prevdegrees{B.S., University of California (1978) \\
   26.59 +%                    S.M., Massachusetts Institute of Technology (1981)}
   26.60 +\department{Department of Electrical Engineering and Computer Science}
   26.61 +
   26.62 +% If the thesis is for two degrees simultaneously, list them both
   26.63 +% separated by \and like this:
   26.64 +% \degree{Doctor of Philosophy \and Master of Science}
   26.65 +\degree{Bachelor of Science in Computer Science and Engineering}
   26.66 +
   26.67 +% As of the 2007-08 academic year, valid degree months are September, 
   26.68 +% February, or June.  The default is June.
   26.69 +\degreemonth{June}
   26.70 +\degreeyear{1990}
   26.71 +\thesisdate{May 18, 1990}
   26.72 +
   26.73 +%% By default, the thesis will be copyrighted to MIT.  If you need to copyright
   26.74 +%% the thesis to yourself, just specify the `vi' documentclass option.  If for
   26.75 +%% some reason you want to exactly specify the copyright notice text, you can
   26.76 +%% use the \copyrightnoticetext command.  
   26.77 +%\copyrightnoticetext{\copyright IBM, 1990.  Do not open till Xmas.}
   26.78 +
   26.79 +% If there is more than one supervisor, use the \supervisor command
   26.80 +% once for each.
   26.81 +\supervisor{William J. Dally}{Associate Professor}
   26.82 +
   26.83 +% This is the department committee chairman, not the thesis committee
   26.84 +% chairman.  You should replace this with your Department's Committee
   26.85 +% Chairman.
   26.86 +\chairman{Arthur C. Smith}{Chairman, Department Committee on Graduate Theses}
   26.87 +
   26.88 +% Make the titlepage based on the above information.  If you need
   26.89 +% something special and can't use the standard form, you can specify
   26.90 +% the exact text of the titlepage yourself.  Put it in a titlepage
   26.91 +% environment and leave blank lines where you want vertical space.
   26.92 +% The spaces will be adjusted to fill the entire page.  The dotted
   26.93 +% lines for the signatures are made with the \signature command.
   26.94 +\maketitle
   26.95 +
   26.96 +% The abstractpage environment sets up everything on the page except
   26.97 +% the text itself.  The title and other header material are put at the
   26.98 +% top of the page, and the supervisors are listed at the bottom.  A
   26.99 +% new page is begun both before and after.  Of course, an abstract may
  26.100 +% be more than one page itself.  If you need more control over the
  26.101 +% format of the page, you can use the abstract environment, which puts
  26.102 +% the word "Abstract" at the beginning and single spaces its text.
  26.103 +
  26.104 +%% You can either \input (*not* \include) your abstract file, or you can put
  26.105 +%% the text of the abstract directly between the \begin{abstractpage} and
  26.106 +%% \end{abstractpage} commands.
  26.107 +
  26.108 +% First copy: start a new page, and save the page number.
  26.109 +\cleardoublepage
  26.110 +% Uncomment the next line if you do NOT want a page number on your
  26.111 +% abstract and acknowledgments pages.
  26.112 +\pagestyle{empty}
  26.113 +\setcounter{savepage}{\thepage}
  26.114 +\begin{abstractpage}
  26.115 +\input{abstract}
  26.116 +\end{abstractpage}
  26.117 +
  26.118 +% Additional copy: start a new page, and reset the page number.  This way,
  26.119 +% the second copy of the abstract is not counted as separate pages.
  26.120 +% Uncomment the next 6 lines if you need two copies of the abstract
  26.121 +% page.
  26.122 +% \setcounter{page}{\thesavepage}
  26.123 +% \begin{abstractpage}
  26.124 +% \input{abstract}
  26.125 +% \end{abstractpage}
  26.126 +
  26.127 +\cleardoublepage
  26.128 +
  26.129 +\section*{Acknowledgments}
  26.130 +
  26.131 +This is the acknowledgements section.  You should replace this with your
  26.132 +own acknowledgements.
  26.133 +
  26.134 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  26.135 +% -*-latex-*-
    27.1 Binary file thesis/images/cat-drinking.jpg has changed
    28.1 Binary file thesis/images/finger-UV.png has changed
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/thesis/mitthesis.cls	Fri Mar 21 01:17:41 2014 -0400
    29.3 @@ -0,0 +1,535 @@
    29.4 +% $Log: mitthesis.cls,v $
    29.5 +% Revision 1.9  2012/02/15 15:48:16  jdreed
    29.6 +% Tweak the "permission" statement per the Libraries' specs
    29.7 +% retrieved 15-Feb-2012
    29.8 +%
    29.9 +% Revision 1.8  2009/07/27 14:23:50  boojum
   29.10 +% added changing draft mark
   29.11 +%
   29.12 +% Revision 1.6  2005/05/13 19:57:40  boojum
   29.13 +% added leftblank option
   29.14 +%
   29.15 +% Revision 1.5  2002/04/18 14:10:08  boojum
   29.16 +% changed doublespace into setspace for 2e compliance
   29.17 +%
   29.18 +% Revision 1.4  2001/02/08 18:57:13  boojum
   29.19 +% turned two newpages into cleardoublepages
   29.20 +%
   29.21 +% Revision 1.3  2000/08/14 14:53:29  boojum
   29.22 +% commented out footheight, which is relevant for drafthead
   29.23 +%
   29.24 +% Revision 1.2  1999/10/21 14:51:33  boojum
   29.25 +% changed references to documentstyle to documentclass in comments
   29.26 +%
   29.27 +% Revision 1.1  1999/10/21 14:39:31  boojum
   29.28 +% Initial revision
   29.29 +%
   29.30 +%Revision 1.7  1998/04/01  20:45:34  othomas
   29.31 +%removed offending phrase ", and to grant others the right to do so" from copyright notice.
   29.32 +%
   29.33 +%Revision 1.6  96/06/26  15:07:29  othomas
   29.34 +%safety checkin.
   29.35 +%
   29.36 +%Revision 1.5  93/06/07  15:38:50  starflt
   29.37 +%Altered 'vi' option copyright wording to comply with new Institute
   29.38 +%Archives requirements and MIT lawyers.
   29.39 +%
   29.40 +%Revision 1.4  92/08/19  16:51:06  lwvanels
   29.41 +%Updated Course 6 title page for new permissions.
   29.42 +%
   29.43 +%Revision 1.3  92/04/23  10:16:15  epeisach
   29.44 +%Fixed comment character in rcs file
   29.45 +%
   29.46 +%Revision 1.2  92/04/22  13:12:02  epeisach
   29.47 +%Fixes for 1991 course 6 requirements
   29.48 +%Phrase "and to grant others the right to do so" has been added to 
   29.49 +%permission clause
   29.50 +%Second copy of abstract is not counted as separate pages so numbering works
   29.51 +%out
   29.52 +%
   29.53 +%Revision 1.1  90/05/04  11:45:53  lwvanels
   29.54 +%Initial revision
   29.55 +
   29.56 +%
   29.57 +% LaTeX format for theses at MIT
   29.58 +% Based on "Specifications for Thesis Preparation" 
   29.59 +
   29.60 +% `vi' and `upcase' options by Krishna Sethuraman - krishna@athena.mit.edu
   29.61 +% Margins and heading types by Peter Nuth  - nuth@ai.mit.edu
   29.62 +% Title and abstract page by Stephen Gildea - gildea@erl.mit.edu
   29.63 +% Look in this directory for example file mitthesis.doc
   29.64 +% Also for propcover.tex - Boilerplate for PHD proposal.
   29.65 +
   29.66 +% To use this style - say something like:
   29.67 +%  for dull, boring thesis format:
   29.68 +%	\documentclass[12pt]{mitthesis}
   29.69 +%       \pagestyle{plain}
   29.70 +% OR for fast drafts: 
   29.71 +%	\documentclass[11pt,singlespace,draft]{mitthesis}
   29.72 +%	\pagestyle{drafthead}
   29.73 +% OR for Tech Reports:
   29.74 +%	\documentclass[12pt,twoside]{mitthesis}	
   29.75 +%	\pagestyle{headings}
   29.76 +% OR
   29.77 +%  some other combination...
   29.78 +%
   29.79 +%%%% New options:
   29.80 +% 
   29.81 +% Option `twoside':
   29.82 +%   Good for producing Tech Reports.
   29.83 +%   The default is single-sided printing, which is what M.I.T. wants on the
   29.84 +%   thesis document itself.
   29.85 +%
   29.86 +% Option `singlespace':
   29.87 +%   Good for drafts.
   29.88 +%   Double-spaced theses are the default.
   29.89 +%   That is what M.I.T. asks for in the formal specifications.
   29.90 +%
   29.91 +% 	Note that MIT does not REQUIRE all theses to be double-spaced anymore.
   29.92 +% 	Someone in the library system said that it's OK to be single-spaced.
   29.93 +% 	(Regardless of what the specs. say...)
   29.94 +%   To get singlespacing in an area - Use  the 'singlespace' environment. 
   29.95 +%
   29.96 +% Option `draft':
   29.97 +%   Puts `overfull' boxes at the end of lines that are too long. 
   29.98 +%
   29.99 +% Pagestyle `drafthead':
  29.100 +%   Puts the date and the label ``*DRAFT*'' in the footer.
  29.101 +%
  29.102 +%%%%%%%%%%
  29.103 +%
  29.104 +%%%% Parameters to initialize for boilerplate page:
  29.105 +%
  29.106 +%	\title{Mixed Circular Cylindrical Shells}
  29.107 +% 	\author{J. Casey Salas}
  29.108 +% 	\prevdegrees{B.S., University of California (1978) \\
  29.109 +%		     S.M., Massachusetts Institute of Technology (1981)}
  29.110 +% 	\department{Department of Electrical Engineering and Computer Science}
  29.111 +% 	\degree{Doctor of Philosophy}
  29.112 +%% If the thesis is for two degrees simultaneously, list them both
  29.113 +%% separated by \and like this:
  29.114 +% 	\degree{Doctor of Philosophy \and Master of Science}
  29.115 +% 	\degreemonth{February}
  29.116 +% 	\degreeyear{1987}
  29.117 +% 	\thesisdate{December 10, 1986}
  29.118 +%% If the thesis is copyright by the Institute, leave this line out and
  29.119 +%% the standard copyright line will be used instead.
  29.120 +% 	\copyrightnotice{J. Casey Salas, 1986}
  29.121 +%% If there is more than one supervisor, use the \supervisor command
  29.122 +%% once for each.
  29.123 +% 	\supervisor{John D. Galli}{Director, Sound Instrument Laboratory}
  29.124 +%% This is the department committee chairman, not the thesis committee chairman
  29.125 +% 	\chairman{Arthur C. Smith}
  29.126 +%		 {Chairman, Departmental Committee on Graduate Students}
  29.127 +%% Make the titlepage based on the above information.  If you need
  29.128 +%% something special and can't use the standard form, you can specify
  29.129 +%% the exact text of the titlepage yourself.  Put it in a titlepage
  29.130 +%% environment and leave blank lines where you want vertical space.
  29.131 +%% The spaces will be adjusted to fill the entire page.  The dotted
  29.132 +%% lines for the signatures are made with the \signature command.
  29.133 +%
  29.134 +%% The abstractpage environment sets up everything on the page except
  29.135 +%% the text itself.  The title and other header material are put at the
  29.136 +%% top of the page, and the supervisors are listed at the bottom.  A
  29.137 +%% new page is begun both before and after.  Of course, an abstract may
  29.138 +%% be more than one page itself.  If you need more control over the
  29.139 +%% format of the page, you can use the abstract environment, which puts
  29.140 +%% the word "Abstract" at the beginning and single spaces its text.
  29.141 +%
  29.142 +% 	\begin{abstractpage}
  29.143 +%	    Abstract goes here.
  29.144 +%	\end{abstractpage}
  29.145 +%
  29.146 +%%%%%%%% Newer additions 
  29.147 +%
  29.148 +% documentclass options - 
  29.149 +% vi		For MIT course VI or VIII thesis - will copyright the thesis to
  29.150 +% 		you while giving MIT permission to copy and distribute it.
  29.151 +% upcase	Will put much of the cover page in uppercase, as per the
  29.152 +% 		example on page 17 of the *Specifications for Thesis
  29.153 +% 		Preparation*, (revised 1989)
  29.154 +% Also added ``All Rights Reserved'' to default copyright notice.
  29.155 +%
  29.156 +%%%%%%%%%%%
  29.157 +% 
  29.158 +% Documentclass options (vi and upcase) and changes to copyright notice
  29.159 +%	Copyright (c) 1990, by Krishna Sethuraman.
  29.160 +%
  29.161 +% Pagestyle and header generation
  29.162 +%	Copyright (c) 1987, 1988 by Peter Nuth
  29.163 +%
  29.164 +% Original version
  29.165 +%	 Copyright (c) 1987 by Stephen Gildea
  29.166 +% Permission to copy all or part of this work is granted, provided
  29.167 +% that the copies are not made or distributed for resale, and that
  29.168 +% the copyright notice and this notice are retained.
  29.169 +% 
  29.170 +% THIS WORK IS PROVIDED ON AN "AS IS" BASIS.  THE AUTHOR PROVIDES NO
  29.171 +% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
  29.172 +% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
  29.173 +% FOR ANY PARTICULAR PURPOSE.
  29.174 +%%%%%%%%
  29.175 +
  29.176 +\NeedsTeXFormat{LaTeX2e}
  29.177 +\ProvidesClass{mitthesis}[1999/10/20]
  29.178 +
  29.179 +\def\mystretch{1.5}		% Double spacing hack
  29.180 +\DeclareOption{doublespace}{}	% This is default
  29.181 +				% So we do not read this style twice
  29.182 +\DeclareOption{singlespace}{		% If he explicitly wants single spacing
  29.183 +    \typeout{Single spaced}
  29.184 +    \def\mystretch{1}}	
  29.185 +
  29.186 +%% `vi' and `upcase' document style options.  Krishna Sethuraman (1990)
  29.187 +\newcount\vithesis
  29.188 +\DeclareOption{vi}{\typeout{Course VI/VIII thesis style.}\advance\vithesis by1}
  29.189 +\vithesis=0
  29.190 +
  29.191 +\DeclareOption{upcase}{\typeout{Uppercase cover page.}
  29.192 +	\gdef\choosecase#1{\uppercase\expandafter{#1}}}
  29.193 +\def\choosecase#1{#1}
  29.194 +
  29.195 +%% leftblank option by Kevin Fu
  29.196 +\newif\if@leftblank \@leftblankfalse
  29.197 +
  29.198 +\DeclareOption{leftblank}{\typeout{Intentionally Leaving Pages Blank}
  29.199 +\@leftblanktrue}
  29.200 +
  29.201 +%  Thesis looks much like report
  29.202 +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
  29.203 +\ProcessOptions
  29.204 +\LoadClass{report}
  29.205 +
  29.206 +% If the user wants single spacing, set baselinestretch=1.
  29.207 +
  29.208 +\usepackage{setspace}
  29.209 +
  29.210 +% Note - doublespace.sty has some float-related troubles in
  29.211 +% combination with graphics or color, and is not officially compliant
  29.212 +% with 2e.  setspace is a replacement which is 2e-compliant.
  29.213 +
  29.214 +% Read the doublespace style that we got from Rochester:
  29.215 +%\input setdoublespace.sty 		
  29.216 +
  29.217 +\def\baselinestretch{\mystretch}	% Double spacing hack
  29.218 +
  29.219 +%%%%%%%  Set up margins and formatting params %%%
  29.220 +
  29.221 +% Margins.
  29.222 +%  Note we want 1in top margin assuming no header line, so push header
  29.223 +%	into 1in margin.
  29.224 +%  Draft mode brings the header back down.
  29.225 +
  29.226 +\setlength{\oddsidemargin}{0.25in}	% 1.25in left margin 
  29.227 +\setlength{\evensidemargin}{0.25in}	% 1.25in left margin (even pages)
  29.228 +\setlength{\topmargin}{0.0in}		% 1in top margin
  29.229 +\setlength{\textwidth}{6.0in}		% 6.0in text - 1.25in rt margin
  29.230 +\setlength{\textheight}{9in}		% Body ht for 1in margins
  29.231 +\addtolength{\topmargin}{-\headheight}	% No header, so compensate
  29.232 +\addtolength{\topmargin}{-\headsep}	% for header height and separation
  29.233 +
  29.234 +% The next two macros compensate page style for headers and footers
  29.235 +% We only need them in page styles that USE headers and footers.
  29.236 +    % If we have a header, it must be 1in from top of page.
  29.237 +\def\pulldownheader{			% Shift header down 1in from top
  29.238 +    \addtolength{\topmargin}{\headheight}	
  29.239 +    \addtolength{\topmargin}{\headsep}	
  29.240 +    \addtolength{\textheight}{-\headheight}
  29.241 +    \addtolength{\textheight}{-\headsep}
  29.242 +}
  29.243 +    % If we have a footer, put it 1in up from bottom
  29.244 +\def\pullupfooter{				% Shift footer up
  29.245 +    \addtolength{\textheight}{-\footskip}
  29.246 +%    \addtolength{\textheight}{-\footheight}  %footheight doesn't
  29.247 +%    						exist in 2e
  29.248 +}
  29.249 +
  29.250 +%%%%%%%  End of margins and formatting params %%%
  29.251 +
  29.252 +%%%%%%%  Fix various header and footer problems %%%
  29.253 +
  29.254 +% Draft mark on the right side of left pages (outside)
  29.255 +% this mark is also the only one visible on single sided.
  29.256 +\newcommand{\draftrmark}{**DRAFT**} 
  29.257 +% Draft mark on the left side of right pages (outside)
  29.258 +\newcommand{\draftlmark}{**DRAFT**} % 
  29.259 +
  29.260 +% Macros to make changing the Draft easier
  29.261 +\newcommand{\drmark}[1]{\renewcommand{\draftrmark}{#1}}
  29.262 +\newcommand{\dlmark}[1]{\renewcommand{\draftlmark}{#1}}
  29.263 +\newcommand{\dmark}[1]{\drmark{#1}\dlmark{#1}}
  29.264 +
  29.265 +% Format for draft of thesis.  Define our own PageStyle -
  29.266 +% Just like headings, but has foot lines with the date and warning
  29.267 +
  29.268 +\if@twoside         % If two-sided printing.
  29.269 +\def\ps@drafthead{
  29.270 +    \let\@mkboth\markboth
  29.271 +    \def\@oddfoot{\rm \today \hfil \sc \draftrmark}
  29.272 +    \def\@evenfoot{\sc \draftlmark \hfil \rm \today }
  29.273 +    \def\@evenhead{\rm \thepage\hfil \sl \leftmark}
  29.274 +    \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}
  29.275 +    \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
  29.276 +	\@chapapp\ \thechapter. \ \fi ##1}}{}}
  29.277 +    \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
  29.278 +	\thesection. \ \fi ##1}}}
  29.279 +    \pulldownheader				% Bring header down from edge
  29.280 +    \pullupfooter				% Bring footer up
  29.281 +}
  29.282 +\else               % If one-sided printing.
  29.283 +\def\ps@drafthead{
  29.284 +    \let\@mkboth\markboth
  29.285 +    \def\@oddfoot{\rm \today \hfil \sc \draftrmark}
  29.286 +    \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}
  29.287 +    \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
  29.288 +	\@chapapp\ \thechapter. \ \fi ##1}}}
  29.289 +    \pulldownheader				% Bring header down from edge
  29.290 +    \pullupfooter				% Bring footer up
  29.291 +}
  29.292 +\fi
  29.293 +
  29.294 +% I redefine these formats that were defined in report.sty
  29.295 +% Definition of 'headings' page style 
  29.296 +%  Note the use of ##1 for parameter of \def\chaptermark inside the
  29.297 +%  \def\ps@headings.
  29.298 +%
  29.299 +
  29.300 +\if@twoside					% If two-sided printing.
  29.301 +\def\ps@headings{\let\@mkboth\markboth
  29.302 +    \def\@oddfoot{}
  29.303 +    \def\@evenfoot{}		% No feet.
  29.304 +    \def\@evenhead{\rm \thepage\hfil \sl \leftmark}	% Left heading.
  29.305 +    \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}	% Right heading.
  29.306 +    \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
  29.307 +	\@chapapp\ \thechapter. \ \fi ##1}}{}}	
  29.308 +    \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
  29.309 +	\thesection. \ \fi ##1}}}
  29.310 +    \pulldownheader				% Bring header down from edge
  29.311 +}
  29.312 +\else						% If one-sided printing.
  29.313 +\def\ps@headings{\let\@mkboth\markboth
  29.314 +    \def\@oddfoot{}
  29.315 +    \def\@evenfoot{}		%     No feet.
  29.316 +    \def\@oddhead{\hbox {}\sl \rightmark \hfil \rm\thepage}	% Heading.
  29.317 +    \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
  29.318 +	\@chapapp\ \thechapter. \ \fi ##1}}}
  29.319 +    \pulldownheader				% Bring header down from edge
  29.320 +}
  29.321 +\fi
  29.322 +
  29.323 +% Redefinition of 'myheadings' page style.  
  29.324 +%
  29.325 +\def\ps@myheadings{\let\@mkboth\@gobbletwo
  29.326 +    \def\@oddfoot{}
  29.327 +    \def\@evenfoot{}
  29.328 +    \def\sectionmark##1{}
  29.329 +    \def\subsectionmark##1{}
  29.330 +    \def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox {}}	%
  29.331 +    \def\@oddhead{\hbox{}\sl\rightmark \hfil \rm\thepage}	%
  29.332 +    \pulldownheader				% Bring header down from edge
  29.333 +}						
  29.334 +
  29.335 +% Redefine '/chapter' to always start on an odd page.
  29.336 +% Should make no difference in singleside mode.
  29.337 +%
  29.338 +\if@leftblank
  29.339 +% Prints "THIS PAGE INTENTIONALLY LEFT BLANK" on blank pages.
  29.340 +\def\chapter{\clearpage\ifodd\c@page\else
  29.341 +   \hbox{}\par\vfill\centerline%
  29.342 +   {THIS PAGE INTENTIONALLY LEFT BLANK}%
  29.343 +   \vfill\newpage\fi
  29.344 +   \thispagestyle{plain}	% Page style of chapter page is 'plain'
  29.345 +   \global\@topnum\z@		% Prevents figures from going at top of page.
  29.346 +   \@afterindentfalse		% Suppresses indent in first paragraph.  Change
  29.347 +   \secdef\@chapter\@schapter}	% to \@afterindenttrue to have indent.
  29.348 +\else
  29.349 +\def\chapter{\cleardoublepage	% Starts new page.
  29.350 +   \thispagestyle{plain}	% Page style of chapter page is 'plain'
  29.351 +   \global\@topnum\z@		% Prevents figures from going at top of page.
  29.352 +   \@afterindentfalse		% Suppresses indent in first paragraph.  Change
  29.353 +   \secdef\@chapter\@schapter}	% to \@afterindenttrue to have indent.
  29.354 +\fi
  29.355 +% If using the report style, use - instead of . in the figure number.
  29.356 +\@ifundefined{thechapter}{}{\def\thefigure{\thechapter-\arabic{figure}}}
  29.357 +
  29.358 +
  29.359 +%%%%%%%%%  End of Style parameters %%%%
  29.360 +
  29.361 +% Here's Gildea's Boilerplate Stuff.
  29.362 +% Copyright (c) 1987 by Stephen Gildea
  29.363 +% Permission to copy all or part of this work is granted, provided
  29.364 +% that the copies are not made or distributed for resale, and that
  29.365 +% the copyright notice and this notice are retained.
  29.366 +
  29.367 +%% Define all the pieces that go on the title page and the abstract.
  29.368 +
  29.369 +% \title and \author already exist
  29.370 +
  29.371 +\def\prevdegrees#1{\gdef\@prevdegrees{#1}}
  29.372 +\def\@prevdegrees{}
  29.373 +
  29.374 +\def\department#1{\gdef\@department{#1}}
  29.375 +
  29.376 +% If you are getting two degrees, use \and between the names.
  29.377 +\def\degree#1{\setbox0\hbox{#1}	 %for side effect of setting \@degreeword
  29.378 +  \gdef\@degree{#1}}
  29.379 +
  29.380 +% \and is used inside the \degree argument to separate two degrees
  29.381 +\def\and{\gdef\@degreeword{degrees} \par and \par}
  29.382 +\def\@degreeword{degree}
  29.383 +
  29.384 +% The copyright notice stuff is a tremendous mess.
  29.385 +%
  29.386 +% \@copyrightnotice is used by \maketitle to actually put text on the
  29.387 +% page; it defaults to ``Copyright MIT 19xx.  All rights reserved.''
  29.388 +% \copyrightnoticetext takes an argument and defined \@copyrightnotice
  29.389 +% to that argument.  \copyrightnotice takes an argument, and calls
  29.390 +% \copyrightnoticetext with that argument, preceeded by a copyright
  29.391 +% symbol and followed by ``All rights reserved.'' and the standard
  29.392 +% permission notice.
  29.393 +% 
  29.394 +% If you use the 'vi' option, \copyrightnoticetext is used to set the
  29.395 +% copyright to ``(C) Your Name, Current Year in Roman Numerals.''
  29.396 +% followed by the permission notice.
  29.397 +
  29.398 +% If there is no \copyrightnotice command, it is asssumed that MIT
  29.399 +% holds the copyright.  This commands adds the copyright symbol to the
  29.400 +% beginning, and puts the standard permission notice below.
  29.401 +%% ``All rights reserved'' added.  Krishna Sethuraman (1990)
  29.402 +\def\copyrightnotice#1{\copyrightnoticetext{\copyright\ #1.  All rights
  29.403 +reserved.\par\permission}}
  29.404 +
  29.405 +% Occacionally you will need to exactly specify the text of the 
  29.406 +% copyright notice.  The \copyrightnoticetext command is then useful.
  29.407 +\long\def\copyrightnoticetext#1{\gdef\@copyrightnotice{#1}}
  29.408 +\def\@copyrightnotice{\copyright\ \Mit\ \@degreeyear.  All rights reserved.}
  29.409 +
  29.410 +%% `vi' documentclass option: Specifying this option automatically
  29.411 +%% copyrights the thesis to the author and gives MIT permission to copy and
  29.412 +%% distribute the document.  If you want, you can still specify
  29.413 +%% \copyrightnotice{stuff} to copyright to someone else, or
  29.414 +%% \copyrightnoticetext{stuff} to specify the exact text of the copyright
  29.415 +%% notice.
  29.416 +\ifodd\vithesis \copyrightnoticetext{\copyright\ \@author,
  29.417 +\uppercase\expandafter{\romannumeral\@degreeyear}.  All rights reserved.\par\permission}
  29.418 +%% or just
  29.419 +%%\@degreeyear}}
  29.420 +\typeout{Copyright given to author,
  29.421 +	permission to copy/distribute given to MIT.}
  29.422 +\else \typeout{Thesis document copyright MIT unless otherwise (manually) specified}
  29.423 +\fi
  29.424 +
  29.425 +\def\thesisdate#1{\gdef\@thesisdate{#1}}
  29.426 +
  29.427 +% typically just a month and year
  29.428 +\def\degreemonth#1{\gdef\@degreemonth{#1}}
  29.429 +\def\degreeyear#1{\gdef\@degreeyear{#1}}
  29.430 +
  29.431 +% Usage: \supervisor{name}{title}
  29.432 +%        \chairman{name}{title}
  29.433 +
  29.434 +% since there can be more than one supervisor,
  29.435 +% we build the appropriate boxes for the titlepage and
  29.436 +% the abstractpage as the user makes multiple calls
  29.437 +% to \supervisor
  29.438 +\newbox\@titlesupervisor 	\newbox\@abstractsupervisor
  29.439 +
  29.440 +\def\supervisor#1#2{\setbox\@titlesupervisor\vbox
  29.441 +  {\unvbox\@titlesupervisor \vskip 10pt% plus 1fil minus 1fil
  29.442 +  \def\baselinestretch{1}\large
  29.443 +  \signature{Certified by}{#1 \\ #2 \\ Thesis Supervisor}}
  29.444 +  \setbox\@abstractsupervisor\vbox{\unvbox\@abstractsupervisor
  29.445 +  \vskip\baselineskip \def\baselinestretch{1}\@normalsize 
  29.446 +  \par\noindent Thesis Supervisor: #1 \\ Title: #2}}
  29.447 +
  29.448 +% department chairman, not thesis committee chairman
  29.449 +\def\chairman#1#2{\gdef\@chairmanname{#1}\gdef\@chairmantitle{#2}}
  29.450 +
  29.451 +%% `upcase' documentclass option: \choosecase is defined either as a dummy or
  29.452 +%% a macro to change the (expanded) argument to uppercase.
  29.453 +\def\maketitle{\begin{titlepage}
  29.454 +\large
  29.455 +{\def\baselinestretch{1.2}\Large\bf \choosecase{\@title} \par}
  29.456 +by\par
  29.457 +{\Large  \choosecase{\@author}}
  29.458 +\par
  29.459 +\@prevdegrees
  29.460 +\par
  29.461 +\choosecase{Submitted to the} \choosecase{\@department} \\
  29.462 +\choosecase{in partial fulfillment of the requirements for the}
  29.463 +\choosecase{\@degreeword} 
  29.464 +\choosecase{of}
  29.465 +\par
  29.466 +\choosecase{\@degree}
  29.467 +\par
  29.468 +at the
  29.469 +\par\MIT\par
  29.470 +\@degreemonth\ \@degreeyear
  29.471 +\par
  29.472 +\@copyrightnotice
  29.473 +\par
  29.474 +\vskip 3\baselineskip
  29.475 +\signature{Author}{\@department \\ \@thesisdate}
  29.476 +\par
  29.477 +\vfill
  29.478 +\unvbox\@titlesupervisor
  29.479 +\par
  29.480 +\vfill
  29.481 +\signature{Accepted by}{\@chairmanname \\ \@chairmantitle}
  29.482 +\vfill
  29.483 +\end{titlepage}}
  29.484 +
  29.485 +% this environment should probably be called abstract,
  29.486 +% but we want people to also be able to get at the more
  29.487 +% basic abstract environment
  29.488 +\def\abstractpage{\cleardoublepage
  29.489 +\begin{center}{\large{\bf \@title} \\
  29.490 +by \\
  29.491 +\@author \\[\baselineskip]}
  29.492 +\par
  29.493 +\def\baselinestretch{1}\@normalsize
  29.494 +Submitted to the \@department \\
  29.495 +on \@thesisdate, in partial fulfillment of the \\
  29.496 +requirements for the \@degreeword\ of \\
  29.497 +\@degree
  29.498 +\end{center}
  29.499 +\par
  29.500 +\begin{abstract}}
  29.501 +
  29.502 +%% Changed from \unvbox to \unvcopy for use with multiple copies of abstract
  29.503 +%% page.
  29.504 +%% Krishna Sethuraman (1990)
  29.505 +\def\endabstractpage{\end{abstract}\noindent
  29.506 + \unvcopy\@abstractsupervisor \newpage}
  29.507 +
  29.508 +%% This counter is used to save the page number for the second copy of
  29.509 +%% the abstract.
  29.510 +\newcounter{savepage}
  29.511 +
  29.512 +% You can use the titlepage environment to do it all yourself if you
  29.513 +% don't want to use \maketitle.  If the titlepage environment, the
  29.514 +% paragraph skip is infinitely stretchable, so if you leave a blank line
  29.515 +% between lines that you want space between, the space will stretch so
  29.516 +% that the title page fills up the entire page.
  29.517 +\def\titlepage{\cleardoublepage\centering
  29.518 +  \thispagestyle{empty}
  29.519 +  \parindent 0pt \parskip 10pt plus 1fil minus 1fil
  29.520 +  \def\baselinestretch{1}\@normalsize\vbox to \vsize\bgroup\vbox to 9in\bgroup}
  29.521 +% The \kern0pt pushes any depth into the height.  Thanks to Richard Stone.
  29.522 +\def\endtitlepage{\par\kern 0pt\egroup\vss\egroup\newpage}
  29.523 +
  29.524 +\def\MIT{MASSACHUSETTS INSTITUTE OF TECHNOLOGY}
  29.525 +\def\Mit{Massachusetts Institute of Technology}
  29.526 +
  29.527 +\def\permission{\par\noindent{\centering
  29.528 +   The author hereby grants to MIT permission to reproduce and to
  29.529 +   distribute publicly paper and electronic copies of this thesis
  29.530 +   document in whole or in part in any medium now known or hereafter
  29.531 +   created.}\par}
  29.532 +
  29.533 +\def\signature#1#2{\par\noindent#1\dotfill\null\\*
  29.534 +  {\raggedleft #2\par}}
  29.535 +
  29.536 +\def\abstract{\subsection*{Abstract}\small\def\baselinestretch{1}\@normalsize}
  29.537 +\def\endabstract{\par}
  29.538 +
    30.1 --- a/thesis/mitthesis/README.bibliography	Fri Mar 21 00:08:49 2014 -0400
    30.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.3 @@ -1,28 +0,0 @@
    30.4 -This file gives an overview on what you will need to do to create a
    30.5 -bibliographic database for references, as well as create the actual
    30.6 -bibliography for your thesis.
    30.7 -
    30.8 -You should not need to touch the file biblio.tex.  This merely tells
    30.9 -latex to look for the file with the bibliographic info.  The file you
   30.10 -want to edit is main.bib.  For each entry, use the appropriate style
   30.11 -as designated in the file.
   30.12 -
   30.13 -Citing your references:
   30.14 -
   30.15 -When you cite a reference, you need to use the ``key'' you declare in
   30.16 -main.bib for the entry.  No one ever sees the keys, but you'll want to
   30.17 -use something you will easily remember.  For instance, if you had an
   30.18 -entry with:
   30.19 -
   30.20 -	key=geer1
   30.21 -
   30.22 -Then you would use \cite{geer1} to reference it within your thesis.
   30.23 -
   30.24 -NOTE: You can not include references in your bibliography that are
   30.25 -never cited in your paper by default. If you need to do this, create a
   30.26 -key for the entry and at the end of your thesis include the line:
   30.27 -
   30.28 -\nocite{key}
   30.29 -
   30.30 -This should be done for every entry which is not explicitly cited.
   30.31 -
    31.1 --- a/thesis/mitthesis/README.main	Fri Mar 21 00:08:49 2014 -0400
    31.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.3 @@ -1,54 +0,0 @@
    31.4 -This file explains the options available to you for editting the file
    31.5 -main.tex.
    31.6 -
    31.7 -The commands in the this file allow you to specify options such as
    31.8 -spacing, double-sided printing, a draft copy, etc.   By default, 12pt
    31.9 -and lgrind are included; lgrind is the 2e style for including code in
   31.10 -your thesis.
   31.11 -
   31.12 -\documentclass[12pt]{mitthesis}
   31.13 -\usepackage{lgrind}
   31.14 -\pagestyle{plain}
   31.15 -
   31.16 -You can add options in the documentclass line as follows:
   31.17 -
   31.18 -	o  singlespace
   31.19 -
   31.20 -	\documentclass[12pt,singlespace]{mitthesis}
   31.21 -	
   31.22 -	o  twoside
   31.23 -
   31.24 -	\documentclass[12pt,twoside]{mitthesis}
   31.25 -
   31.26 -	o  draft   (make sure to change the pagestyle to drafthead as
   31.27 -			well)
   31.28 -
   31.29 -	\documentclass[12pt,draft]{mitthesis}
   31.30 -	\usepackage{lgrind}
   31.31 -	\pagestyle{drafthead}
   31.32 -
   31.33 -	o vi   (for course vi and course viii theses)
   31.34 -
   31.35 -	\documentclass[12pt,vi]{mitthesis}
   31.36 -
   31.37 -Any options you would use for report.sty will work here as well.
   31.38 -
   31.39 -
   31.40 -You should not need to change the first three lines and last two lines
   31.41 -below.  Be sure to include an \include command for each file you are
   31.42 -including in your thesis.
   31.43 -  
   31.44 -\include{cover}
   31.45 -\pagestyle{plain}
   31.46 -\include{contents}
   31.47 -\include{chap1}
   31.48 -\include{chap2}
   31.49 -\appendix
   31.50 -\include{appa}
   31.51 -\include{appb}
   31.52 -\include{biblio}
   31.53 -\end{document}
   31.54 -
   31.55 -Comment: to include appendices use a single \appendix command followed by
   31.56 -a number of \include{} commands as many files as needed, each of which
   31.57 -should contain a \chapter{} command for the appendix title.
    32.1 --- a/thesis/mitthesis/README.text	Fri Mar 21 00:08:49 2014 -0400
    32.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.3 @@ -1,34 +0,0 @@
    32.4 -This file includes the basic commands you will need to use within each
    32.5 -chapter of your thesis.
    32.6 -
    32.7 -The file chap1.tex is a sample first chapter.  To get started, you may
    32.8 -just want to replace the text and commands in that file as needed.  In
    32.9 -general though, for each new chapter you want to do the following:
   32.10 -
   32.11 -	o Make sure the name has the extension .tex .  Otherwise, you
   32.12 -	can call it anything you want.  For ease of use, all the
   32.13 -	examples use chap1, chap2, etc.
   32.14 -
   32.15 -	o Add a line to the file main.tex that reads:
   32.16 -
   32.17 -	\include{yourfilename}
   32.18 -
   32.19 -	This should not include the .tex extension, because latex
   32.20 -	assumes that is there.
   32.21 -
   32.22 -Basic syntax:
   32.23 -
   32.24 -	o The first line of each chapter should be:
   32.25 -
   32.26 -	\chapter{Chapter Title}
   32.27 -
   32.28 -	o To start a new section (labeled chap#.sec# -- as in 1.1,
   32.29 -	1.2, etc):
   32.30 -
   32.31 -	\section{Section Heading}
   32.32 -
   32.33 -	You can also include subsections:
   32.34 -
   32.35 -	\subsection{Heading}
   32.36 -
   32.37 -
    33.1 --- a/thesis/mitthesis/abstract.tex	Fri Mar 21 00:08:49 2014 -0400
    33.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.3 @@ -1,22 +0,0 @@
    33.4 -% $Log: abstract.tex,v $
    33.5 -% Revision 1.1  93/05/14  14:56:25  starflt
    33.6 -% Initial revision
    33.7 -% 
    33.8 -% Revision 1.1  90/05/04  10:41:01  lwvanels
    33.9 -% Initial revision
   33.10 -% 
   33.11 -%
   33.12 -%% The text of your abstract and nothing else (other than comments) goes here.
   33.13 -%% It will be single-spaced and the rest of the text that is supposed to go on
   33.14 -%% the abstract page will be generated by the abstractpage environment.  This
   33.15 -%% file should be \input (not \include 'd) from cover.tex.
   33.16 -In this thesis, I designed and implemented a compiler which performs
   33.17 -optimizations that reduce the number of low-level floating point operations
   33.18 -necessary for a specific task; this involves the optimization of chains of
   33.19 -floating point operations as well as the implementation of a ``fixed'' point
   33.20 -data type that allows some floating point operations to simulated with integer
   33.21 -arithmetic.  The source language of the compiler is a subset of C, and the
   33.22 -destination language is assembly language for a micro-floating point CPU.  An
   33.23 -instruction-level simulator of the CPU was written to allow testing of the
   33.24 -code.  A series of test pieces of codes was compiled, both with and without
   33.25 -optimization, to determine how effective these optimizations were.
    34.1 --- a/thesis/mitthesis/appa.tex	Fri Mar 21 00:08:49 2014 -0400
    34.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.3 @@ -1,15 +0,0 @@
    34.4 -\chapter{Tables}
    34.5 -
    34.6 -\begin{table}
    34.7 -\caption{Armadillos}
    34.8 -\label{arm:table}
    34.9 -\begin{center}
   34.10 -\begin{tabular}{||l|l||}\hline
   34.11 -Armadillos & are \\\hline
   34.12 -our	   & friends \\\hline
   34.13 -\end{tabular}
   34.14 -\end{center}
   34.15 -\end{table}
   34.16 -
   34.17 -\clearpage
   34.18 -\newpage
    35.1 --- a/thesis/mitthesis/appb.tex	Fri Mar 21 00:08:49 2014 -0400
    35.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.3 @@ -1,19 +0,0 @@
    35.4 -\chapter{Figures}
    35.5 -
    35.6 -\vspace*{-3in}
    35.7 -
    35.8 -\begin{figure}
    35.9 -\vspace{2.4in}
   35.10 -\caption{Armadillo slaying lawyer.}
   35.11 -\label{arm:fig1}
   35.12 -\end{figure}
   35.13 -\clearpage
   35.14 -\newpage
   35.15 -
   35.16 -\begin{figure}
   35.17 -\vspace{2.4in}
   35.18 -\caption{Armadillo eradicating national debt.}
   35.19 -\label{arm:fig2}
   35.20 -\end{figure}
   35.21 -\clearpage
   35.22 -\newpage
    36.1 --- a/thesis/mitthesis/biblio.tex	Fri Mar 21 00:08:49 2014 -0400
    36.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.3 @@ -1,8 +0,0 @@
    36.4 -%% This defines the bibliography file (main.bib) and the bibliography style.
    36.5 -%% If you want to create a bibliography file by hand, change the contents of
    36.6 -%% this file to a `thebibliography' environment.  For more information 
    36.7 -%% see section 4.3 of the LaTeX manual.
    36.8 -\begin{singlespace}
    36.9 -\bibliography{main}
   36.10 -\bibliographystyle{plain}
   36.11 -\end{singlespace}
    37.1 --- a/thesis/mitthesis/chap1.tex	Fri Mar 21 00:08:49 2014 -0400
    37.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.3 @@ -1,250 +0,0 @@
    37.4 -%% This is an example first chapter.  You should put chapter/appendix that you
    37.5 -%% write into a separate file, and add a line \include{yourfilename} to
    37.6 -%% main.tex, where `yourfilename.tex' is the name of the chapter/appendix file.
    37.7 -%% You can process specific files by typing their names in at the 
    37.8 -%% \files=
    37.9 -%% prompt when you run the file main.tex through LaTeX.
   37.10 -\chapter{Introduction}
   37.11 -
   37.12 -Micro-optimization is a technique to reduce the overall operation count of
   37.13 -floating point operations.  In a standard floating point unit, floating
   37.14 -point operations are fairly high level, such as ``multiply'' and ``add'';
   37.15 -in a micro floating point unit ($\mu$FPU), these have been broken down into
   37.16 -their constituent low-level floating point operations on the mantissas and
   37.17 -exponents of the floating point numbers.
   37.18 -
   37.19 -Chapter two describes the architecture of the $\mu$FPU unit, and the
   37.20 -motivations for the design decisions made.
   37.21 -
   37.22 -Chapter three describes the design of the compiler, as well as how the
   37.23 -optimizations discussed in section~\ref{ch1:opts} were implemented.
   37.24 -
   37.25 -Chapter four describes the purpose of test code that was compiled, and which
   37.26 -statistics were gathered by running it through the simulator.  The purpose
   37.27 -is to measure what effect the micro-optimizations had, compared to
   37.28 -unoptimized code.  Possible future expansions to the project are also
   37.29 -discussed.
   37.30 -
   37.31 -\section{Motivations for micro-optimization}
   37.32 -
   37.33 -The idea of micro-optimization is motivated by the recent trends in computer
   37.34 -architecture towards low-level parallelism and small, pipelineable
   37.35 -instruction sets \cite{patterson:risc,rad83}.  By getting rid of more
   37.36 -complex instructions and concentrating on optimizing frequently used
   37.37 -instructions, substantial increases in performance were realized.
   37.38 -
   37.39 -Another important motivation was the trend towards placing more of the
   37.40 -burden of performance on the compiler.  Many of the new architectures depend
   37.41 -on an intelligent, optimizing compiler in order to realize anywhere near
   37.42 -their peak performance
   37.43 -\cite{ellis:bulldog,pet87,coutant:precision-compilers}.  In these cases, the
   37.44 -compiler not only is responsible for faithfully generating native code to
   37.45 -match the source language, but also must be aware of instruction latencies,
   37.46 -delayed branches, pipeline stages, and a multitude of other factors in order
   37.47 -to generate fast code \cite{gib86}.
   37.48 -
   37.49 -Taking these ideas one step further, it seems that the floating point
   37.50 -operations that are normally single, large instructions can be further broken
   37.51 -down into smaller, simpler, faster instructions, with more control in the
   37.52 -compiler and less in the hardware.  This is the idea behind a
   37.53 -micro-optimizing FPU; break the floating point instructions down into their
   37.54 -basic components and use a small, fast implementation, with a large part of
   37.55 -the burden of hardware allocation and optimization shifted towards
   37.56 -compile-time.
   37.57 -
   37.58 -Along with the hardware speedups possible by using a $\mu$FPU, there are
   37.59 -also optimizations that the compiler can perform on the code that is
   37.60 -generated.  In a normal sequence of floating point operations, there are
   37.61 -many hidden redundancies that can be eliminated by allowing the compiler to
   37.62 -control the floating point operations down to their lowest level.  These
   37.63 -optimizations are described in detail in section~\ref{ch1:opts}.
   37.64 -
   37.65 -\section{Description of micro-optimization}\label{ch1:opts}
   37.66 -
   37.67 -In order to perform a sequence of floating point operations, a normal FPU
   37.68 -performs many redundant internal shifts and normalizations in the process of
   37.69 -performing a sequence of operations.  However, if a compiler can
   37.70 -decompose the floating point operations it needs down to the lowest level,
   37.71 -it then can optimize away many of these redundant operations.  
   37.72 -
   37.73 -If there is some additional hardware support specifically for
   37.74 -micro-optimization, there are additional optimizations that can be
   37.75 -performed.  This hardware support entails extra ``guard bits'' on the
   37.76 -standard floating point formats, to allow several unnormalized operations to
   37.77 -be performed in a row without the loss information\footnote{A description of
   37.78 -the floating point format used is shown in figures~\ref{exponent-format}
   37.79 -and~\ref{mantissa-format}.}.  A discussion of the mathematics behind
   37.80 -unnormalized arithmetic is in appendix~\ref{unnorm-math}.
   37.81 -
   37.82 -The optimizations that the compiler can perform fall into several categories:
   37.83 -
   37.84 -\subsection{Post Multiply Normalization}
   37.85 -
   37.86 -When more than two multiplications are performed in a row, the intermediate
   37.87 -normalization of the results between multiplications can be eliminated.
   37.88 -This is because with each multiplication, the mantissa can become
   37.89 -denormalized by at most one bit.  If there are guard bits on the mantissas
   37.90 -to prevent bits from ``falling off'' the end during multiplications, the
   37.91 -normalization can be postponed until after a sequence of several
   37.92 -multiplies\footnote{Using unnormalized numbers for math is not a new idea; a
   37.93 -good example of it is the Control Data CDC 6600, designed by Seymour Cray.
   37.94 -\cite{thornton:cdc6600} The CDC 6600 had all of its instructions performing
   37.95 -unnormalized arithmetic, with a separate {\tt NORMALIZE} instruction.}.
   37.96 -
   37.97 -% This is an example of how you would use tgrind to include an example
   37.98 -% of source code; it is commented out in this template since the code
   37.99 -% example file does not exist.  To use it, you need to remove the '%' on the
  37.100 -% beginning of the line, and insert your own information in the call.
  37.101 -%
  37.102 -%\tagrind[htbp]{code/pmn.s.tex}{Post Multiply Normalization}{opt:pmn}
  37.103 -
  37.104 -As you can see, the intermediate results can be multiplied together, with no
  37.105 -need for intermediate normalizations due to the guard bit.  It is only at
  37.106 -the end of the operation that the normalization must be performed, in order
  37.107 -to get it into a format suitable for storing in memory\footnote{Note that
  37.108 -for purposed of clarity, the pipeline delays were considered to be 0, and
  37.109 -the branches were not delayed.}.
  37.110 -
  37.111 -\subsection{Block Exponent}
  37.112 -
  37.113 -In a unoptimized sequence of additions, the sequence of operations is as
  37.114 -follows for each pair of numbers ($m_1$,$e_1$) and ($m_2$,$e_2$).
  37.115 -\begin{enumerate}
  37.116 -  \item Compare $e_1$ and $e_2$.
  37.117 -  \item Shift the mantissa associated with the smaller exponent $|e_1-e_2|$
  37.118 -        places to the right.
  37.119 -  \item Add $m_1$ and $m_2$.
  37.120 -  \item Find the first one in the resulting mantissa.
  37.121 -  \item Shift the resulting mantissa so that normalized
  37.122 -  \item Adjust the exponent accordingly.
  37.123 -\end{enumerate}
  37.124 -
  37.125 -Out of 6 steps, only one is the actual addition, and the rest are involved
  37.126 -in aligning the mantissas prior to the add, and then normalizing the result
  37.127 -afterward.  In the block exponent optimization, the largest mantissa is
  37.128 -found to start with, and all the mantissa's shifted before any additions
  37.129 -take place.  Once the mantissas have been shifted, the additions can take
  37.130 -place one after another\footnote{This requires that for n consecutive
  37.131 -additions, there are $\log_{2}n$ high guard bits to prevent overflow.  In
  37.132 -the $\mu$FPU, there are 3 guard bits, making up to 8 consecutive additions
  37.133 -possible.}.  An example of the Block Exponent optimization on the expression
  37.134 -X = A + B + C is given in figure~\ref{opt:be}.
  37.135 -
  37.136 -% This is an example of how you would use tgrind to include an example
  37.137 -% of source code; it is commented out in this template since the code
  37.138 -% example file does not exist.  To use it, you need to remove the '%' on the
  37.139 -% beginning of the line, and insert your own information in the call.
  37.140 -%
  37.141 -%\tgrind[htbp]{code/be.s.tex}{Block Exponent}{opt:be}
  37.142 -
  37.143 -\section{Integer optimizations}
  37.144 -
  37.145 -As well as the floating point optimizations described above, there are
  37.146 -also integer optimizations that can be used in the $\mu$FPU.  In concert
  37.147 -with the floating point optimizations, these can provide a significant
  37.148 -speedup.  
  37.149 -
  37.150 -\subsection{Conversion to fixed point}
  37.151 -
  37.152 -Integer operations are much faster than floating point operations; if it is
  37.153 -possible to replace floating point operations with fixed point operations,
  37.154 -this would provide a significant increase in speed.
  37.155 -
  37.156 -This conversion can either take place automatically or or based on a
  37.157 -specific request from the programmer.  To do this automatically, the
  37.158 -compiler must either be very smart, or play fast and loose with the accuracy
  37.159 -and precision of the programmer's variables.  To be ``smart'', the computer
  37.160 -must track the ranges of all the floating point variables through the
  37.161 -program, and then see if there are any potential candidates for conversion
  37.162 -to floating point.  This technique is discussed further in
  37.163 -section~\ref{range-tracking}, where it was implemented.
  37.164 -
  37.165 -The other way to do this is to rely on specific hints from the programmer
  37.166 -that a certain value will only assume a specific range, and that only a
  37.167 -specific precision is desired.  This is somewhat more taxing on the
  37.168 -programmer, in that he has to know the ranges that his values will take at
  37.169 -declaration time (something normally abstracted away), but it does provide
  37.170 -the opportunity for fine-tuning already working code.
  37.171 -
  37.172 -Potential applications of this would be simulation programs, where the
  37.173 -variable represents some physical quantity; the constraints of the physical
  37.174 -system may provide bounds on the range the variable can take.
  37.175 -\subsection{Small Constant Multiplications}
  37.176 -
  37.177 -One other class of optimizations that can be done is to replace
  37.178 -multiplications by small integer constants into some combination of
  37.179 -additions and shifts.  Addition and shifting can be significantly faster
  37.180 -than multiplication.  This is done by using some combination of
  37.181 -\begin{eqnarray*}
  37.182 -a_i & = & a_j + a_k \\
  37.183 -a_i & = & 2a_j + a_k \\
  37.184 -a_i & = & 4a_j + a_k \\
  37.185 -a_i & = & 8a_j + a_k \\
  37.186 -a_i & = & a_j - a_k \\
  37.187 -a_i & = & a_j \ll m \mbox{shift}
  37.188 -\end{eqnarray*}
  37.189 -instead of the multiplication.  For example, to multiply $s$ by 10 and store
  37.190 -the result in $r$, you could use:
  37.191 -\begin{eqnarray*}
  37.192 -r & = & 4s + s\\
  37.193 -r & = & r + r
  37.194 -\end{eqnarray*}
  37.195 -Or by 59:
  37.196 -\begin{eqnarray*}
  37.197 -t & = & 2s + s \\
  37.198 -r & = & 2t + s \\
  37.199 -r & = & 8r + t
  37.200 -\end{eqnarray*}
  37.201 -Similar combinations can be found for almost all of the smaller
  37.202 -integers\footnote{This optimization is only an ``optimization'', of course,
  37.203 -when the amount of time spent on the shifts and adds is less than the time
  37.204 -that would be spent doing the multiplication.  Since the time costs of these
  37.205 -operations are known to the compiler in order for it to do scheduling, it is
  37.206 -easy for the compiler to determine when this optimization is worth using.}.
  37.207 -\cite{magenheimer:precision}
  37.208 -
  37.209 -\section{Other optimizations}
  37.210 -
  37.211 -\subsection{Low-level parallelism}
  37.212 -
  37.213 -The current trend is towards duplicating hardware at the lowest level to
  37.214 -provide parallelism\footnote{This can been seen in the i860; floating point
  37.215 -additions and multiplications can proceed at the same time, and the RISC
  37.216 -core be moving data in and out of the floating point registers and providing
  37.217 -flow control at the same time the floating point units are active. \cite{byte:i860}}
  37.218 -
  37.219 -Conceptually, it is easy to take advantage to low-level parallelism in the
  37.220 -instruction stream by simply adding more functional units to the $\mu$FPU,
  37.221 -widening the instruction word to control them, and then scheduling as many
  37.222 -operations to take place at one time as possible.
  37.223 -
  37.224 -However, simply adding more functional units can only be done so many times;
  37.225 -there is only a limited amount of parallelism directly available in the
  37.226 -instruction stream, and without it, much of the extra resources will go to
  37.227 -waste.  One process used to make more instructions potentially schedulable
  37.228 -at any given time is ``trace scheduling''.  This technique originated in the
  37.229 -Bulldog compiler for the original VLIW machine, the ELI-512.
  37.230 -\cite{ellis:bulldog,colwell:vliw}  In trace scheduling, code can be
  37.231 -scheduled through many basic blocks at one time, following a single
  37.232 -potential ``trace'' of program execution.  In this way, instructions that
  37.233 -{\em might\/} be executed depending on a conditional branch further down in
  37.234 -the instruction stream are scheduled, allowing an increase in the potential
  37.235 -parallelism.  To account for the cases where the expected branch wasn't
  37.236 -taken, correction code is inserted after the branches to undo the effects of
  37.237 -any prematurely executed instructions.
  37.238 -
  37.239 -\subsection{Pipeline optimizations}
  37.240 -
  37.241 -In addition to having operations going on in parallel across functional
  37.242 -units, it is also typical to have several operations in various stages of
  37.243 -completion in each unit.  This pipelining allows the throughput of the
  37.244 -functional units to be increased, with no increase in latency.
  37.245 -
  37.246 -There are several ways pipelined operations can be optimized.  On the
  37.247 -hardware side, support can be added to allow data to be recirculated back
  37.248 -into the beginning of the pipeline from the end, saving a trip through the
  37.249 -registers.  On the software side, the compiler can utilize several tricks to
  37.250 -try to fill up as many of the pipeline delay slots as possible, as
  37.251 -seendescribed by Gibbons. \cite{gib86}
  37.252 -
  37.253 -
    38.1 --- a/thesis/mitthesis/contents.tex	Fri Mar 21 00:08:49 2014 -0400
    38.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.3 @@ -1,11 +0,0 @@
    38.4 -  % -*- Mode:TeX -*-
    38.5 -%% This file simply contains the commands that actually generate the table of
    38.6 -%% contents and lists of figures and tables.  You can omit any or all of
    38.7 -%% these files by simply taking out the appropriate command.  For more
    38.8 -%% information on these files, see appendix C.3.3 of the LaTeX manual. 
    38.9 -\tableofcontents
   38.10 -\newpage
   38.11 -\listoffigures
   38.12 -\newpage
   38.13 -\listoftables
   38.14 -
    39.1 --- a/thesis/mitthesis/cover.tex	Fri Mar 21 00:08:49 2014 -0400
    39.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.3 @@ -1,132 +0,0 @@
    39.4 -% -*-latex-*-
    39.5 -% 
    39.6 -% For questions, comments, concerns or complaints:
    39.7 -% thesis@mit.edu
    39.8 -% 
    39.9 -%
   39.10 -% $Log: cover.tex,v $
   39.11 -% Revision 1.8  2008/05/13 15:02:15  jdreed
   39.12 -% Degree month is June, not May.  Added note about prevdegrees.
   39.13 -% Arthur Smith's title updated
   39.14 -%
   39.15 -% Revision 1.7  2001/02/08 18:53:16  boojum
   39.16 -% changed some \newpages to \cleardoublepages
   39.17 -%
   39.18 -% Revision 1.6  1999/10/21 14:49:31  boojum
   39.19 -% changed comment referring to documentstyle
   39.20 -%
   39.21 -% Revision 1.5  1999/10/21 14:39:04  boojum
   39.22 -% *** empty log message ***
   39.23 -%
   39.24 -% Revision 1.4  1997/04/18  17:54:10  othomas
   39.25 -% added page numbers on abstract and cover, and made 1 abstract
   39.26 -% page the default rather than 2.  (anne hunter tells me this
   39.27 -% is the new institute standard.)
   39.28 -%
   39.29 -% Revision 1.4  1997/04/18  17:54:10  othomas
   39.30 -% added page numbers on abstract and cover, and made 1 abstract
   39.31 -% page the default rather than 2.  (anne hunter tells me this
   39.32 -% is the new institute standard.)
   39.33 -%
   39.34 -% Revision 1.3  93/05/17  17:06:29  starflt
   39.35 -% Added acknowledgements section (suggested by tompalka)
   39.36 -% 
   39.37 -% Revision 1.2  92/04/22  13:13:13  epeisach
   39.38 -% Fixes for 1991 course 6 requirements
   39.39 -% Phrase "and to grant others the right to do so" has been added to 
   39.40 -% permission clause
   39.41 -% Second copy of abstract is not counted as separate pages so numbering works
   39.42 -% out
   39.43 -% 
   39.44 -% Revision 1.1  92/04/22  13:08:20  epeisach
   39.45 -
   39.46 -% NOTE:
   39.47 -% These templates make an effort to conform to the MIT Thesis specifications,
   39.48 -% however the specifications can change.  We recommend that you verify the
   39.49 -% layout of your title page with your thesis advisor and/or the MIT 
   39.50 -% Libraries before printing your final copy.
   39.51 -\title{An Optimizing Compiler for Low-Level Floating Point Operations}
   39.52 -
   39.53 -\author{Robert McIntyre}
   39.54 -% If you wish to list your previous degrees on the cover page, use the 
   39.55 -% previous degrees command:
   39.56 -%       \prevdegrees{A.A., Harvard University (1985)}
   39.57 -% You can use the \\ command to list multiple previous degrees
   39.58 -%       \prevdegrees{B.S., University of California (1978) \\
   39.59 -%                    S.M., Massachusetts Institute of Technology (1981)}
   39.60 -\department{Department of Electrical Engineering and Computer Science}
   39.61 -
   39.62 -% If the thesis is for two degrees simultaneously, list them both
   39.63 -% separated by \and like this:
   39.64 -% \degree{Doctor of Philosophy \and Master of Science}
   39.65 -\degree{Bachelor of Science in Computer Science and Engineering}
   39.66 -
   39.67 -% As of the 2007-08 academic year, valid degree months are September, 
   39.68 -% February, or June.  The default is June.
   39.69 -\degreemonth{June}
   39.70 -\degreeyear{1990}
   39.71 -\thesisdate{May 18, 1990}
   39.72 -
   39.73 -%% By default, the thesis will be copyrighted to MIT.  If you need to copyright
   39.74 -%% the thesis to yourself, just specify the `vi' documentclass option.  If for
   39.75 -%% some reason you want to exactly specify the copyright notice text, you can
   39.76 -%% use the \copyrightnoticetext command.  
   39.77 -%\copyrightnoticetext{\copyright IBM, 1990.  Do not open till Xmas.}
   39.78 -
   39.79 -% If there is more than one supervisor, use the \supervisor command
   39.80 -% once for each.
   39.81 -\supervisor{William J. Dally}{Associate Professor}
   39.82 -
   39.83 -% This is the department committee chairman, not the thesis committee
   39.84 -% chairman.  You should replace this with your Department's Committee
   39.85 -% Chairman.
   39.86 -\chairman{Arthur C. Smith}{Chairman, Department Committee on Graduate Theses}
   39.87 -
   39.88 -% Make the titlepage based on the above information.  If you need
   39.89 -% something special and can't use the standard form, you can specify
   39.90 -% the exact text of the titlepage yourself.  Put it in a titlepage
   39.91 -% environment and leave blank lines where you want vertical space.
   39.92 -% The spaces will be adjusted to fill the entire page.  The dotted
   39.93 -% lines for the signatures are made with the \signature command.
   39.94 -\maketitle
   39.95 -
   39.96 -% The abstractpage environment sets up everything on the page except
   39.97 -% the text itself.  The title and other header material are put at the
   39.98 -% top of the page, and the supervisors are listed at the bottom.  A
   39.99 -% new page is begun both before and after.  Of course, an abstract may
  39.100 -% be more than one page itself.  If you need more control over the
  39.101 -% format of the page, you can use the abstract environment, which puts
  39.102 -% the word "Abstract" at the beginning and single spaces its text.
  39.103 -
  39.104 -%% You can either \input (*not* \include) your abstract file, or you can put
  39.105 -%% the text of the abstract directly between the \begin{abstractpage} and
  39.106 -%% \end{abstractpage} commands.
  39.107 -
  39.108 -% First copy: start a new page, and save the page number.
  39.109 -\cleardoublepage
  39.110 -% Uncomment the next line if you do NOT want a page number on your
  39.111 -% abstract and acknowledgments pages.
  39.112 -% \pagestyle{empty}
  39.113 -\setcounter{savepage}{\thepage}
  39.114 -\begin{abstractpage}
  39.115 -\input{abstract}
  39.116 -\end{abstractpage}
  39.117 -
  39.118 -% Additional copy: start a new page, and reset the page number.  This way,
  39.119 -% the second copy of the abstract is not counted as separate pages.
  39.120 -% Uncomment the next 6 lines if you need two copies of the abstract
  39.121 -% page.
  39.122 -% \setcounter{page}{\thesavepage}
  39.123 -% \begin{abstractpage}
  39.124 -% \input{abstract}
  39.125 -% \end{abstractpage}
  39.126 -
  39.127 -\cleardoublepage
  39.128 -
  39.129 -\section*{Acknowledgments}
  39.130 -
  39.131 -This is the acknowledgements section.  You should replace this with your
  39.132 -own acknowledgements.
  39.133 -
  39.134 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  39.135 -% -*-latex-*-
    40.1 --- a/thesis/mitthesis/lgrind.sty	Fri Mar 21 00:08:49 2014 -0400
    40.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.3 @@ -1,228 +0,0 @@
    40.4 -%%
    40.5 -%% This is file `lgrind.sty',
    40.6 -%% generated with the docstrip utility.
    40.7 -%%
    40.8 -%% The original source files were:
    40.9 -%%
   40.10 -%% lgrind.dtx  (with options: `package')
   40.11 -%% 
   40.12 -%% LGrind is used to format source code of different programming
   40.13 -%% languages for LaTeX.
   40.14 -%% 
   40.15 -%% LGrind is a minor adaptation of Jerry Leichter's tgrind for LaTeX,
   40.16 -%% which was a notable improvement upon Van Jacobsen's tgrind for
   40.17 -%% plain TeX, which was adapted from vgrind, a troff prettyprinter.
   40.18 -%% 
   40.19 -%% Based on Van Jacobson's ``tgrindmac'', a macro package for TeX.
   40.20 -%% Modified, 1987 by Jerry Leichter. Put '@' in all internal names.
   40.21 -%% Modified, 1991 by George Reilly. Changed name from tgrind to lgrind.
   40.22 -%% Modified, 1995 by Michael Piefel. Made it work with \LaTeXe.
   40.23 -\NeedsTeXFormat{LaTeX2e}[1995/06/01]
   40.24 -\ProvidesPackage{lgrind}
   40.25 -          [1997/01/30 v3.4 LGrind environment and supporting stuff]
   40.26 -\newcount\lc@unt
   40.27 -\newcount\ln@xt
   40.28 -\newcount\LGnuminterval
   40.29 -\LGnuminterval=10
   40.30 -\DeclareOption{nolineno}{\LGnuminterval=50000}
   40.31 -\DeclareOption{lineno5}{\LGnuminterval=5}
   40.32 -\newif\ifLGleftnum
   40.33 -\DeclareOption{leftnum}{\LGleftnumtrue}
   40.34 -\newskip\LGindent
   40.35 -\LGindent=1.6667\parindent
   40.36 -\DeclareOption{noindent}{\LGindent=0pt}
   40.37 -\newif\ifLGnorules
   40.38 -\DeclareOption{norules}{\LGnorulestrue}
   40.39 -\newlength{\LGsloppy}
   40.40 -\setlength{\LGsloppy}{7.2pt}
   40.41 -\DeclareOption{fussy}{\LGsloppy=0pt}
   40.42 -\newcommand{\DefaultProc}{\@gobble}
   40.43 -\newcommand{\DefaultProcCont}{\@gobble}
   40.44 -\DeclareOption{procnames}{
   40.45 -\renewcommand{\DefaultProc}[1]{\renewcommand{\Procname}{#1}%
   40.46 -\global\setbox\procbox=\hbox{\PNsize #1}}
   40.47 -\renewcommand{\DefaultProcCont}[1]{\renewcommand\Procname{#1}
   40.48 -\global\setbox\procbox=\hbox{\PNsize\dots #1}}}
   40.49 -\newbox\procbox
   40.50 -\newcommand{\Procname}{}
   40.51 -\ProcessOptions
   40.52 -\def\BGfont{\sffamily}
   40.53 -\def\CMfont{\rmfamily\itshape}
   40.54 -\def\NOfont{\sffamily}
   40.55 -\def\KWfont{\rmfamily\bfseries}
   40.56 -\def\STfont{\ttfamily}
   40.57 -\def\VRfont{\rmfamily}
   40.58 -\def\PNsize{\BGfont\small}
   40.59 -\def\LGsize{\small}
   40.60 -\def\LGfsize{\footnotesize}
   40.61 -\newif\ifLGinline
   40.62 -\newif\ifLGd@fault
   40.63 -\def\LGbegin{\ifLGinline$\hbox\else$$\vbox\fi\bgroup\LGd@faulttrue}
   40.64 -\def\LGend{\ifLGd@fault\egroup\ifLGinline$\else$$\fi\LGd@faultfalse\fi}
   40.65 -\newif\ifc@mment
   40.66 -\newif\ifstr@ng
   40.67 -\newif\ifright@
   40.68 -\newbox\ls@far
   40.69 -\newbox\tb@x
   40.70 -\newdimen\TBw@d
   40.71 -\newdimen\@ts
   40.72 -{\catcode`\_=\active \gdef\@setunder{\let_=\sp@ce}}
   40.73 -\newcommand{\lgrindheader}{}
   40.74 -\newcommand{\lgrindfilename}{}\newcommand{\lgrindfilesize}{}
   40.75 -\newcommand{\lgrindmodyear}{}\newcommand{\lgrindmodmonth}{}
   40.76 -\newcommand{\lgrindmodday}{}\newcommand{\lgrindmodtime}{}
   40.77 -\newenvironment{lgrind}[1][1]{%
   40.78 -\def\Line##1{\L{\LB{##1}}}%
   40.79 -\newcommand{\Head}[1]{\gdef\lgrindhead{##1}}%
   40.80 -\newcommand{\File}[6]{\gdef\lgrindfilename{##1}\message{(LGround: ##1)}%
   40.81 -    \gdef\lgrindmodyear{##2}\gdef\lgrindmodmonth{##3}%
   40.82 -    \gdef\lgrindmodday{##4}\gdef\lgrindmodtime{##5}%
   40.83 -    \gdef\lgrindfilesize{##6}}%
   40.84 -\let\Proc=\DefaultProc%
   40.85 -\let\ProcCont=\DefaultProcCont%
   40.86 -\hfuzz=\LGsloppy
   40.87 -\def\NewPage{\filbreak\bigskip}%
   40.88 -\ifLGinline
   40.89 - \def\L##1{\setbox\ls@far\null{\CF\strut##1}\ignorespaces}%
   40.90 -\else
   40.91 - \let\r@ghtlno\relax\let\l@ftlno\relax
   40.92 - \ifnum\LGnuminterval>\z@
   40.93 -  \ifLGleftnum
   40.94 -   \def\l@ftlno{\ifvoid\procbox\ifnum\lc@unt>\ln@xt
   40.95 -     \global\advance\ln@xt by\LGnuminterval
   40.96 -     \llap{{\normalfont\scriptsize\the\lc@unt\quad}}\fi
   40.97 -     \else\llap{\box\procbox\quad}\fi}%
   40.98 -  \else
   40.99 -   \def\r@ghtlno{\ifvoid\procbox\ifnum\lc@unt>\ln@xt
  40.100 -     \global\advance\ln@xt by\LGnuminterval
  40.101 -     \rlap{{\normalfont\scriptsize\enspace\the\lc@unt}}\fi
  40.102 -     \else\rlap{\enspace\box\procbox}\fi}%
  40.103 -  \fi
  40.104 - \fi
  40.105 - \def\L##1{\@@par\setbox\ls@far=\null\strut
  40.106 -  \global\advance\lc@unt by1%
  40.107 -  \hbox to \hsize{\hskip\LGindent\l@ftlno ##1\egroup%
  40.108 -  \hfil\r@ghtlno}%
  40.109 -  \ignorespaces}%
  40.110 -\fi
  40.111 -\lc@unt=#1\advance\lc@unt by-1%
  40.112 -\ln@xt=\LGnuminterval\advance\ln@xt by-1%
  40.113 -\loop\ifnum\lc@unt>\ln@xt\advance\ln@xt by\LGnuminterval\repeat%
  40.114 -\def\LB{\hbox\bgroup\bgroup\box\ls@far\CF\let\next=}%
  40.115 -\def\Tab##1{\egroup\setbox\tb@x=\lastbox\TBw@d=\wd\tb@x%
  40.116 - \advance\TBw@d by 1\@ts\ifdim\TBw@d>##1\@ts
  40.117 -  \setbox\ls@far=\hbox{\box\ls@far \box\tb@x \sp@ce}\else
  40.118 -  \setbox\ls@far=\hbox to ##1\@ts{\box\ls@far \box\tb@x \hfil}\fi\LB}%
  40.119 -\ifLGinline\def\sp@ce{\hskip .3333em}%
  40.120 -\else \setbox\tb@x=\hbox{\texttt{0}}%
  40.121 -      \@ts=0.8\wd\tb@x \def\sp@ce{\hskip 1\@ts}\fi
  40.122 -\catcode`\_=\active \@setunder
  40.123 -\def\CF{\ifc@mment\CMfont\else\ifstr@ng\STfont\fi\fi}
  40.124 -\def\N##1{{\NOfont ##1}\global\futurelet\next\ic@r}%
  40.125 -\def\K##1{{\KWfont ##1}\global\futurelet\next\ic@r}%
  40.126 -\def\V##1{{\VRfont ##1}\global\futurelet\next\ic@r}%
  40.127 -\def\ic@r{\let\@tempa\/\ifx.\next\let\@tempa\relax%
  40.128 - \else\ifx,\next\let\@tempa\relax\fi\fi\@tempa}%
  40.129 -\def\C{\egroup\bgroup\CMfont \global\c@mmenttrue \global\right@false}%
  40.130 -\def\CE{\egroup\bgroup \global\c@mmentfalse}%
  40.131 -\def\S{\egroup\bgroup\STfont \global\str@ngtrue}%
  40.132 -\def\SE{\egroup\bgroup \global\str@ngfalse}%
  40.133 -\def\,{\relax \ifmmode\mskip\thinmuskip \else\thinspace \fi}%
  40.134 -\def\!{\relax \ifmmode\mskip-\thinmuskip \else\negthinspace \fi}%
  40.135 -\def\CH##1##2##3{\relax\ifmmode ##1\relax
  40.136 -\else\ifstr@ng ##2\relax\else$##3$\fi\fi }%
  40.137 -\def\{{\CH\lbrace {\char'173}\lbrace }%
  40.138 -\def\}{\CH\rbrace {\char'175}\rbrace }%
  40.139 -\def\1{\CH///}%                                % /
  40.140 -\def\2{\CH\backslash {\char'134}\backslash }%  % \
  40.141 -\def\|{\CH|{\char'174}|}%
  40.142 -\def\<{\CH<<<}%
  40.143 -\def\>{\CH>>>}%
  40.144 -\def\*{\CH***}\relax %\relax for DOCSTY
  40.145 -\def\-{\CH---}%
  40.146 -\def\_{\ifstr@ng {\char'137}\else
  40.147 -  \leavevmode \kern.06em \vbox{\hrule width.35em}%
  40.148 -  \ifdim\fontdimen\@ne\font=\z@ \kern.06em \fi\fi }%
  40.149 -\def\&{\textsf{\char'046}}%
  40.150 -\def\#{{\STfont\char'043}}%
  40.151 -\def\%{{\char'045}}%
  40.152 -\def\~{{\char'176}}%
  40.153 -\def\3{\ifc@mment\ifright@ ''\global\right@false%
  40.154 -                      \else``\global\right@true \fi
  40.155 -   \else{\texttt{\char'042}}\fi}%
  40.156 -\def\4{\ifc@mment'\else {\texttt{\char'015}}\fi}%
  40.157 -\def\5{{\texttt{\char'136}}}%
  40.158 -\def\${{\ifmmode\slshape\else\ifdim\fontdimen\@ne\font>\z@\slshape\fi\fi
  40.159 -  \char'044}}% %No $ in \it, use \sl
  40.160 -\parindent\z@\parskip\z@ plus 1pt\hsize\linewidth%
  40.161 -\bgroup\BGfont
  40.162 -}
  40.163 -{\egroup\@@par}           % end of environment lgrind
  40.164 -\def\lgrinde{\ifLGinline\else\LGsize\fi\begin{lgrind}}
  40.165 -\def\endlgrinde{\end{lgrind}}
  40.166 -\def\lagrind{\@ifstar{\@slagrind}{\@lagrind}}
  40.167 -
  40.168 -\def\@lagrind{\@ifnextchar[{\@@lagrind}{\@@lagrind[t]}}
  40.169 -\def\@slagrind{\@ifnextchar[{\@@slagrind}{\@@slagrind[t]}}
  40.170 -\def\@@lagrind[#1]#2#3#4{%
  40.171 -    \begin{figure}[#1]
  40.172 -\ifLGnorules\else\hrule\fi
  40.173 -\vskip .5\baselineskip
  40.174 -\begin{minipage}\columnwidth\LGsize\LGindent\z@
  40.175 -    \begin{lgrind}
  40.176 -\input #2\relax
  40.177 -    \end{lgrind}
  40.178 -\end{minipage}
  40.179 -\vskip .5\baselineskip plus .5\baselineskip
  40.180 -\ifLGnorules\else\hrule\fi\vskip .5\baselineskip
  40.181 -\begingroup
  40.182 -    \setbox\z@=\hbox{#4}%
  40.183 -    \ifdim\wd\z@>\z@
  40.184 -\caption{#3}%
  40.185 -\label{#4}%
  40.186 -    \else
  40.187 -\captcont{#3}%
  40.188 -    \fi
  40.189 -\endgroup
  40.190 -\vskip 2pt
  40.191 -    \end{figure}
  40.192 -}
  40.193 -\def\@@slagrind[#1]#2#3#4{%
  40.194 -    \begin{figure*}[#1]
  40.195 -\ifLGnorules\else\hrule\fi
  40.196 -\vskip .5\baselineskip
  40.197 -\begin{minipage}\linewidth\LGsize\LGindent\z@
  40.198 -    \begin{lgrind}
  40.199 -\input #2\relax
  40.200 -    \end{lgrind}
  40.201 -\end{minipage}
  40.202 -\vskip .5\baselineskip plus .5\baselineskip
  40.203 -\ifLGnorules\else\hrule\fi\vskip .5\baselineskip
  40.204 -\begingroup
  40.205 -    \setbox\z@=\hbox{#4}%
  40.206 -    \ifdim\wd\z@>\z@
  40.207 -\caption{#3}%
  40.208 -\label{#4}%
  40.209 -    \else
  40.210 -\captcont{#3}%
  40.211 -    \fi
  40.212 -\endgroup
  40.213 -\vskip 2pt
  40.214 -    \end{figure*}
  40.215 -}
  40.216 -\def\lgrindfile#1{%
  40.217 -    \par\addvspace{0.1in}
  40.218 -    \ifLGnorules\else\hrule\fi
  40.219 -    \vskip .5\baselineskip
  40.220 -    \begingroup\LGfsize\LGindent\z@
  40.221 -\begin{lgrind}
  40.222 -    \input #1\relax
  40.223 -\end{lgrind}
  40.224 -    \endgroup
  40.225 -    \vskip .5\baselineskip
  40.226 -    \ifLGnorules\else\hrule\fi
  40.227 -    \addvspace{0.1in}
  40.228 -}
  40.229 -\endinput
  40.230 -%%
  40.231 -%% End of file `lgrind.sty'.
    41.1 --- a/thesis/mitthesis/main.bib	Fri Mar 21 00:08:49 2014 -0400
    41.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.3 @@ -1,356 +0,0 @@
    41.4 -@preamble{ "\newcommand{\noopsort}[1]{} "
    41.5 -	# "\newcommand{\printfirst}[2]{#1} "
    41.6 -	# "\newcommand{\singleletter}[1]{#1} "
    41.7 -	# "\newcommand{\switchargs}[2]{#2#1} " }
    41.8 -
    41.9 -@ARTICLE{article-minimal,
   41.10 -   author = {L[eslie] A. Aamport},
   41.11 -   title = {The Gnats and Gnus Document Preparation System},
   41.12 -   journal = {\mbox{G-Animal's} Journal},
   41.13 -   year = 1986,
   41.14 -}
   41.15 -
   41.16 -@ARTICLE{article-full,
   41.17 -   author = {L[eslie] A. Aamport},
   41.18 -   title = {The Gnats and Gnus Document Preparation System},
   41.19 -   journal = {\mbox{G-Animal's} Journal},
   41.20 -   year = 1986,
   41.21 -   volume = 41,
   41.22 -   number = 7,
   41.23 -   pages = "73+",
   41.24 -   month = jul,
   41.25 -   note = "This is a full ARTICLE entry",
   41.26 -}
   41.27 -
   41.28 -The KEY field is here to override the KEY field in the journal being
   41.29 -cross referenced (so is the NOTE field, in addition to its imparting
   41.30 -information).
   41.31 -
   41.32 -@ARTICLE{article-crossref,
   41.33 -   crossref = {WHOLE-JOURNAL},
   41.34 -   key = "",
   41.35 -   author = {L[eslie] A. Aamport},
   41.36 -   title = {The Gnats and Gnus Document Preparation System},
   41.37 -   pages = "73+",
   41.38 -   note = "This is a cross-referencing ARTICLE entry",
   41.39 -}
   41.40 -
   41.41 -@ARTICLE{whole-journal,
   41.42 -   key = "GAJ",
   41.43 -   journal = {\mbox{G-Animal's} Journal},
   41.44 -   year = 1986,
   41.45 -   volume = 41,
   41.46 -   number = 7,
   41.47 -   month = jul,
   41.48 -   note = {The entire issue is devoted to gnats and gnus
   41.49 -		(this entry is a cross-referenced ARTICLE (journal))},
   41.50 -}
   41.51 -
   41.52 -@INBOOK{inbook-minimal,
   41.53 -   author = "Donald E. Knuth",
   41.54 -   title = "Fundamental Algorithms",
   41.55 -   publisher = "Addison-Wesley",
   41.56 -   year = "{\noopsort{1973b}}1973",
   41.57 -   chapter = "1.2",
   41.58 -}
   41.59 -
   41.60 -@INBOOK{inbook-full,
   41.61 -   author = "Donald E. Knuth",
   41.62 -   title = "Fundamental Algorithms",
   41.63 -   volume = 1,
   41.64 -   series = "The Art of Computer Programming",
   41.65 -   publisher = "Addison-Wesley",
   41.66 -   address = "Reading, Massachusetts",
   41.67 -   edition = "Second",
   41.68 -   month = "10~" # jan,
   41.69 -   year = "{\noopsort{1973b}}1973",
   41.70 -   type = "Section",
   41.71 -   chapter = "1.2",
   41.72 -   pages = "10--119",
   41.73 -   note = "This is a full INBOOK entry",
   41.74 -}
   41.75 -
   41.76 -@INBOOK{inbook-crossref,
   41.77 -   crossref = "whole-set",
   41.78 -   title = "Fundamental Algorithms",
   41.79 -   volume = 1,
   41.80 -   series = "The Art of Computer Programming",
   41.81 -   edition = "Second",
   41.82 -   year = "{\noopsort{1973b}}1973",
   41.83 -   type = "Section",
   41.84 -   chapter = "1.2",
   41.85 -   note = "This is a cross-referencing INBOOK entry",
   41.86 -}
   41.87 -
   41.88 -@BOOK{book-minimal,
   41.89 -   author = "Donald E. Knuth",
   41.90 -   title = "Seminumerical Algorithms",
   41.91 -   publisher = "Addison-Wesley",
   41.92 -   year = "{\noopsort{1973c}}1981",
   41.93 -}
   41.94 -
   41.95 -@BOOK{book-full,
   41.96 -   author = "Donald E. Knuth",
   41.97 -   title = "Seminumerical Algorithms",
   41.98 -   volume = 2,
   41.99 -   series = "The Art of Computer Programming",
  41.100 -   publisher = "Addison-Wesley",
  41.101 -   address = "Reading, Massachusetts",
  41.102 -   edition = "Second",
  41.103 -   month = "10~" # jan,
  41.104 -   year = "{\noopsort{1973c}}1981",
  41.105 -   note = "This is a full BOOK entry",
  41.106 -}
  41.107 -
  41.108 -@BOOK{book-crossref,
  41.109 -   crossref = "whole-set",
  41.110 -   title = "Seminumerical Algorithms",
  41.111 -   volume = 2,
  41.112 -   series = "The Art of Computer Programming",
  41.113 -   edition = "Second",
  41.114 -   year = "{\noopsort{1973c}}1981",
  41.115 -   note = "This is a cross-referencing BOOK entry",
  41.116 -}
  41.117 -
  41.118 -@BOOK{whole-set,
  41.119 -   author = "Donald E. Knuth",
  41.120 -   publisher = "Addison-Wesley",
  41.121 -   title = "The Art of Computer Programming",
  41.122 -   series = "Four volumes",
  41.123 -   year = "{\noopsort{1973a}}{\switchargs{--90}{1968}}",
  41.124 -   note = "Seven volumes planned (this is a cross-referenced set of BOOKs)",
  41.125 -}
  41.126 -
  41.127 -@BOOKLET{booklet-minimal,
  41.128 -   key = "Kn{\printfirst{v}{1987}}",
  41.129 -   title = "The Programming of Computer Art",
  41.130 -}
  41.131 -
  41.132 -@BOOKLET{booklet-full,
  41.133 -   author = "Jill C. Knvth",
  41.134 -   title = "The Programming of Computer Art",
  41.135 -   howpublished = "Vernier Art Center",
  41.136 -   address = "Stanford, California",
  41.137 -   month = feb,
  41.138 -   year = 1988,
  41.139 -   note = "This is a full BOOKLET entry",
  41.140 -}
  41.141 -
  41.142 -@INCOLLECTION{incollection-minimal,
  41.143 -   author = "Daniel D. Lincoll",
  41.144 -   title = "Semigroups of Recurrences",
  41.145 -   booktitle = "High Speed Computer and Algorithm Organization",
  41.146 -   publisher = "Academic Press",
  41.147 -   year = 1977,
  41.148 -}
  41.149 -
  41.150 -@INCOLLECTION{incollection-full,
  41.151 -   author = "Daniel D. Lincoll",
  41.152 -   title = "Semigroups of Recurrences",
  41.153 -   editor = "David J. Lipcoll and D. H. Lawrie and A. H. Sameh",
  41.154 -   booktitle = "High Speed Computer and Algorithm Organization",
  41.155 -   number = 23,
  41.156 -   series = "Fast Computers",
  41.157 -   chapter = 3,
  41.158 -   type = "Part",
  41.159 -   pages = "179--183",
  41.160 -   publisher = "Academic Press",
  41.161 -   address = "New York",
  41.162 -   edition = "Third",
  41.163 -   month = sep,
  41.164 -   year = 1977,
  41.165 -   note = "This is a full INCOLLECTION entry",
  41.166 -}
  41.167 -
  41.168 -@INCOLLECTION{incollection-crossref,
  41.169 -   crossref = "whole-collection",
  41.170 -   author = "Daniel D. Lincoll",
  41.171 -   title = "Semigroups of Recurrences",
  41.172 -   pages = "179--183",
  41.173 -   note = "This is a cross-referencing INCOLLECTION entry",
  41.174 -}
  41.175 -
  41.176 -@BOOK{whole-collection,
  41.177 -   editor = "David J. Lipcoll and D. H. Lawrie and A. H. Sameh",
  41.178 -   title = "High Speed Computer and Algorithm Organization",
  41.179 -   booktitle = "High Speed Computer and Algorithm Organization",
  41.180 -   number = 23,
  41.181 -   series = "Fast Computers",
  41.182 -   publisher = "Academic Press",
  41.183 -   address = "New York",
  41.184 -   edition = "Third",
  41.185 -   month = sep,
  41.186 -   year = 1977,
  41.187 -   note = "This is a cross-referenced BOOK (collection) entry",
  41.188 -}
  41.189 -
  41.190 -@MANUAL{manual-minimal,
  41.191 -   key = "Manmaker",
  41.192 -   title = "The Definitive Computer Manual",
  41.193 -}
  41.194 -
  41.195 -@MANUAL{manual-full,
  41.196 -   author = "Larry Manmaker",
  41.197 -   title = "The Definitive Computer Manual",
  41.198 -   organization = "Chips-R-Us",
  41.199 -   address = "Silicon Valley",
  41.200 -   edition = "Silver",
  41.201 -   month = apr # "-" # may,
  41.202 -   year = 1986,
  41.203 -   note = "This is a full MANUAL entry",
  41.204 -}
  41.205 -
  41.206 -@MASTERSTHESIS{mastersthesis-minimal,
  41.207 -   author = "{\'{E}}douard Masterly",
  41.208 -   title = "Mastering Thesis Writing",
  41.209 -   school = "Stanford University",
  41.210 -   year = 1988,
  41.211 -}
  41.212 -
  41.213 -@MASTERSTHESIS{mastersthesis-full,
  41.214 -   author = "{\'{E}}douard Masterly",
  41.215 -   title = "Mastering Thesis Writing",
  41.216 -   school = "Stanford University",
  41.217 -   type = "Master's project",
  41.218 -   address = "English Department",
  41.219 -   month = jun # "-" # aug,
  41.220 -   year = 1988,
  41.221 -   note = "This is a full MASTERSTHESIS entry",
  41.222 -}
  41.223 -
  41.224 -@MISC{misc-minimal,
  41.225 -   key = "Missilany",
  41.226 -   note = "This is a minimal MISC entry",
  41.227 -}
  41.228 -
  41.229 -@MISC{misc-full,
  41.230 -   author = "Joe-Bob Missilany",
  41.231 -   title = "Handing out random pamphlets in airports",
  41.232 -   howpublished = "Handed out at O'Hare",
  41.233 -   month = oct,
  41.234 -   year = 1984,
  41.235 -   note = "This is a full MISC entry",
  41.236 -}
  41.237 -
  41.238 -@STRING{STOC-key = "OX{\singleletter{stoc}}"}
  41.239 -
  41.240 -@STRING{ACM = "The OX Association for Computing Machinery"}
  41.241 -
  41.242 -@STRING{STOC = " Symposium on the Theory of Computing"}
  41.243 -
  41.244 -@INPROCEEDINGS{inproceedings-minimal,
  41.245 -   author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis",
  41.246 -   title = "On Notions of Information Transfer in {VLSI} Circuits",
  41.247 -   booktitle = "Proc. Fifteenth Annual ACM" # STOC,
  41.248 -   year = 1983,
  41.249 -}
  41.250 -
  41.251 -@INPROCEEDINGS{inproceedings-full,
  41.252 -   author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis",
  41.253 -   title = "On Notions of Information Transfer in {VLSI} Circuits",
  41.254 -   editor = "Wizard V. Oz and Mihalis Yannakakis",
  41.255 -   booktitle = "Proc. Fifteenth Annual ACM" # STOC,
  41.256 -   number = 17,
  41.257 -   series = "All ACM Conferences",
  41.258 -   pages = "133--139",
  41.259 -   month = mar,
  41.260 -   year = 1983,
  41.261 -   address = "Boston",
  41.262 -   organization = ACM,
  41.263 -   publisher = "Academic Press",
  41.264 -   note = "This is a full INPROCEDINGS entry",
  41.265 -}
  41.266 -
  41.267 -@INPROCEEDINGS{inproceedings-crossref,
  41.268 -   crossref = "whole-proceedings",
  41.269 -   author = "Alfred V. Oaho and Jeffrey D. Ullman and Mihalis Yannakakis",
  41.270 -   title = "On Notions of Information Transfer in {VLSI} Circuits",
  41.271 -   organization = "",
  41.272 -   pages = "133--139",
  41.273 -   note = "This is a cross-referencing INPROCEEDINGS entry",
  41.274 -}
  41.275 -
  41.276 -@PROCEEDINGS{proceedings-minimal,
  41.277 -   key = STOC-key,
  41.278 -   title = "Proc. Fifteenth Annual" # STOC,
  41.279 -   year = 1983,
  41.280 -}
  41.281 -
  41.282 -@PROCEEDINGS{proceedings-full,
  41.283 -   editor = "Wizard V. Oz and Mihalis Yannakakis",
  41.284 -   title = "Proc. Fifteenth Annual" # STOC,
  41.285 -   number = 17,
  41.286 -   series = "All ACM Conferences",
  41.287 -   month = mar,
  41.288 -   year = 1983,
  41.289 -   address = "Boston",
  41.290 -   organization = ACM,
  41.291 -   publisher = "Academic Press",
  41.292 -   note = "This is a full PROCEEDINGS entry",
  41.293 -}
  41.294 -
  41.295 -@PROCEEDINGS{whole-proceedings,
  41.296 -   key = STOC-key,
  41.297 -   organization = ACM,
  41.298 -   title = "Proc. Fifteenth Annual" # STOC,
  41.299 -   address = "Boston",
  41.300 -   year = 1983,
  41.301 -   booktitle = "Proc. Fifteenth Annual ACM" # STOC,
  41.302 -   note = "This is a cross-referenced PROCEEDINGS",
  41.303 -}
  41.304 -
  41.305 -@PHDTHESIS{phdthesis-minimal,
  41.306 -   author = "F. Phidias Phony-Baloney",
  41.307 -   title = "Fighting Fire with Fire: Festooning {F}rench Phrases",
  41.308 -   school = "Fanstord University",
  41.309 -   year = 1988,
  41.310 -}
  41.311 -
  41.312 -@PHDTHESIS{phdthesis-full,
  41.313 -   author = "F. Phidias Phony-Baloney",
  41.314 -   title = "Fighting Fire with Fire: Festooning {F}rench Phrases",
  41.315 -   school = "Fanstord University",
  41.316 -   type = "{PhD} Dissertation",
  41.317 -   address = "Department of French",
  41.318 -   month = jun # "-" # aug,
  41.319 -   year = 1988,
  41.320 -   note = "This is a full PHDTHESIS entry",
  41.321 -}
  41.322 -
  41.323 -@TECHREPORT{techreport-minimal,
  41.324 -   author = "Tom Terrific",
  41.325 -   title = "An {$O(n \log n / \! \log\log n)$} Sorting Algorithm",
  41.326 -   institution = "Fanstord University",
  41.327 -   year = 1988,
  41.328 -}
  41.329 -
  41.330 -@TECHREPORT{techreport-full,
  41.331 -   author = "Tom T{\'{e}}rrific",
  41.332 -   title = "An {$O(n \log n / \! \log\log n)$} Sorting Algorithm",
  41.333 -   institution = "Fanstord University",
  41.334 -   type = "Wishful Research Result",
  41.335 -   number = "7",
  41.336 -   address = "Computer Science Department, Fanstord, California",
  41.337 -   month = oct,
  41.338 -   year = 1988,
  41.339 -   note = "This is a full TECHREPORT entry",
  41.340 -}
  41.341 -
  41.342 -@UNPUBLISHED{unpublished-minimal,
  41.343 -   author = "Ulrich {\"{U}}nderwood and Ned {\~N}et and Paul {\={P}}ot",
  41.344 -   title = "Lower Bounds for Wishful Research Results",
  41.345 -   note = "Talk at Fanstord University (this is a minimal UNPUBLISHED entry)",
  41.346 -}
  41.347 -
  41.348 -@UNPUBLISHED{unpublished-full,
  41.349 -   author = "Ulrich {\"{U}}nderwood and Ned {\~N}et and Paul {\={P}}ot",
  41.350 -   title = "Lower Bounds for Wishful Research Results",
  41.351 -   month = nov # ", " # dec,
  41.352 -   year = 1988,
  41.353 -   note = "Talk at Fanstord University (this is a full UNPUBLISHED entry)",
  41.354 -}
  41.355 -
  41.356 -@MISC{random-note-crossref,
  41.357 -   key = {Volume-2},
  41.358 -   note = "Volume~2 is listed under Knuth \cite{book-full}"
  41.359 -}
    42.1 --- a/thesis/mitthesis/main.bib.info	Fri Mar 21 00:08:49 2014 -0400
    42.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.3 @@ -1,67 +0,0 @@
    42.4 -To comment out part of an entry in BibTeX, you can use:
    42.5 -
    42.6 -	@Comment{body of text}
    42.7 -
    42.8 -If you wish to comment out the entire entry, just remove the @ sign in
    42.9 -front of the entry type (i.e., get rid of the '@' in "@Book").
   42.10 -
   42.11 -*************************************************************************
   42.12 -
   42.13 -You can specify fixed strings (say if you needed to use it multiple
   42.14 -times in your BibTeX file) with the @String command:
   42.15 -
   42.16 -	@String(Leslie-Lamport = {Leslie Lamport})
   42.17 -
   42.18 -and then you could use it in various entries:
   42.19 -
   42.20 -	@Book{latex,
   42.21 -		Author = Leslie-Lamport,
   42.22 -		Title = "\LaTeX",
   42.23 -		...
   42.24 -		Year = "1993"}
   42.25 -
   42.26 -*************************************************************************
   42.27 -
   42.28 -The required fields are not prefaced with OPT.  Those that are optional
   42.29 -*are* prefaced with OPT (remember to delete those three characters should
   42.30 -you wish to use those fields).
   42.31 -
   42.32 -[Note:
   42.33 -     For most entry types the "author" information is simply the AUTHOR
   42.34 -field.  However:  For the @Book and @Inbook entry types it's the AUTHOR
   42.35 -field, but if there's no author then it's the EDITOR field; for the
   42.36 -@Manual entry type it's the AUTHOR field, but if there's no author then
   42.37 -it's the ORGANIZATION field; and for the @Proceedings entry type it's
   42.38 -the EDITOR filed, but if there's no editor then it's the ORGANIZATION
   42.39 -field.]
   42.40 -
   42.41 -To use this, just have your main.tex specify the following:
   42.42 -
   42.43 -	\bibliography{main}
   42.44 -	\bibliographystyle{plain}
   42.45 -
   42.46 -There are several options for bibliographystyle:
   42.47 -
   42.48 -        plain   normal style - listed in ABC order and labeled numerically
   42.49 -        unsrt   same as plain except entries appear in order of citation
   42.50 -        alpha   same as plain except entry labels are used
   42.51 -        abbrv   same as plain except uses abbreviations for first names,
   42.52 -                month names, and journal names
   42.53 -
   42.54 -Now that you have the basis for a bibliography, you have to run both
   42.55 -latex and bibtex on the document.  First, you should run latex (to
   42.56 -create a foo.aux file, which bibtex reads).  Then run bibtex once to get
   42.57 -some of the citations and create a .bbl file.  Then run latex again so
   42.58 -that the cross references between the text file and the bibliography are
   42.59 -correct.  You may want to repeat running bibtex and latex on the file to
   42.60 -make sure that all cross references are correct.  Be warned that
   42.61 -adding/deleting citations and sources will require running bibtex again.
   42.62 -
   42.63 -For more information on this topic, please refer the following pages in
   42.64 -the LaTeX manual by Leslie Lamport:
   42.65 -
   42.66 -        72-74    Bibliography and Citation
   42.67 -        74-74    BibTeX
   42.68 -        140-147  Format of the .bib File (also gives info on other entry types)        187-188  Bibliography and Citation
   42.69 -
   42.70 -                 ----------------------------------------
    43.1 --- a/thesis/mitthesis/main.tex	Fri Mar 21 00:08:49 2014 -0400
    43.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.3 @@ -1,57 +0,0 @@
    43.4 -% -*- Mode:TeX -*-
    43.5 -
    43.6 -%% IMPORTANT: The official thesis specifications are available at:
    43.7 -%%            http://libraries.mit.edu/archives/thesis-specs/
    43.8 -%%
    43.9 -%%            Please verify your thesis' formatting and copyright
   43.10 -%%            assignment before submission.  If you notice any
   43.11 -%%            discrepancies between these templates and the 
   43.12 -%%            MIT Libraries' specs, please let us know
   43.13 -%%            by e-mailing thesis@mit.edu
   43.14 -
   43.15 -%% The documentclass options along with the pagestyle can be used to generate
   43.16 -%% a technical report, a draft copy, or a regular thesis.  You may need to
   43.17 -%% re-specify the pagestyle after you \include  cover.tex.  For more
   43.18 -%% information, see the first few lines of mitthesis.cls. 
   43.19 -
   43.20 -%\documentclass[12pt,vi,twoside]{mitthesis}
   43.21 -%%
   43.22 -%%  If you want your thesis copyright to you instead of MIT, use the
   43.23 -%%  ``vi'' option, as above.
   43.24 -%%
   43.25 -%\documentclass[12pt,twoside,leftblank]{mitthesis}
   43.26 -%%
   43.27 -%% If you want blank pages before new chapters to be labelled ``This
   43.28 -%% Page Intentionally Left Blank'', use the ``leftblank'' option, as
   43.29 -%% above. 
   43.30 -
   43.31 -\documentclass[12pt,twoside]{mitthesis}
   43.32 -\usepackage{lgrind}
   43.33 -\pagestyle{plain}
   43.34 -
   43.35 -%% This bit allows you to either specify only the files which you wish to
   43.36 -%% process, or `all' to process all files which you \include.
   43.37 -%% Krishna Sethuraman (1990).
   43.38 -
   43.39 -\typein [\files]{Enter file names to process, (chap1,chap2 ...), or `all' to
   43.40 -process all files:}
   43.41 -\def\all{all}
   43.42 -\ifx\files\all \typeout{Including all files.} \else \typeout{Including only \files.} \includeonly{\files} \fi
   43.43 -
   43.44 -\begin{document}
   43.45 -
   43.46 -\include{cover}
   43.47 -% Some departments (e.g. 5) require an additional signature page.  See
   43.48 -% signature.tex for more information and uncomment the following line if
   43.49 -% applicable.
   43.50 -% \include{signature}
   43.51 -\pagestyle{plain}
   43.52 -\include{contents}
   43.53 -\include{chap1}
   43.54 -\include{chap2}
   43.55 -\appendix
   43.56 -\include{appa}
   43.57 -\include{appb}
   43.58 -\include{biblio}
   43.59 -\end{document}
   43.60 -
    44.1 --- a/thesis/mitthesis/mitthesis.cls	Fri Mar 21 00:08:49 2014 -0400
    44.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.3 @@ -1,535 +0,0 @@
    44.4 -% $Log: mitthesis.cls,v $
    44.5 -% Revision 1.9  2012/02/15 15:48:16  jdreed
    44.6 -% Tweak the "permission" statement per the Libraries' specs
    44.7 -% retrieved 15-Feb-2012
    44.8 -%
    44.9 -% Revision 1.8  2009/07/27 14:23:50  boojum
   44.10 -% added changing draft mark
   44.11 -%
   44.12 -% Revision 1.6  2005/05/13 19:57:40  boojum
   44.13 -% added leftblank option
   44.14 -%
   44.15 -% Revision 1.5  2002/04/18 14:10:08  boojum
   44.16 -% changed doublespace into setspace for 2e compliance
   44.17 -%
   44.18 -% Revision 1.4  2001/02/08 18:57:13  boojum
   44.19 -% turned two newpages into cleardoublepages
   44.20 -%
   44.21 -% Revision 1.3  2000/08/14 14:53:29  boojum
   44.22 -% commented out footheight, which is relevant for drafthead
   44.23 -%
   44.24 -% Revision 1.2  1999/10/21 14:51:33  boojum
   44.25 -% changed references to documentstyle to documentclass in comments
   44.26 -%
   44.27 -% Revision 1.1  1999/10/21 14:39:31  boojum
   44.28 -% Initial revision
   44.29 -%
   44.30 -%Revision 1.7  1998/04/01  20:45:34  othomas
   44.31 -%removed offending phrase ", and to grant others the right to do so" from copyright notice.
   44.32 -%
   44.33 -%Revision 1.6  96/06/26  15:07:29  othomas
   44.34 -%safety checkin.
   44.35 -%
   44.36 -%Revision 1.5  93/06/07  15:38:50  starflt
   44.37 -%Altered 'vi' option copyright wording to comply with new Institute
   44.38 -%Archives requirements and MIT lawyers.
   44.39 -%
   44.40 -%Revision 1.4  92/08/19  16:51:06  lwvanels
   44.41 -%Updated Course 6 title page for new permissions.
   44.42 -%
   44.43 -%Revision 1.3  92/04/23  10:16:15  epeisach
   44.44 -%Fixed comment character in rcs file
   44.45 -%
   44.46 -%Revision 1.2  92/04/22  13:12:02  epeisach
   44.47 -%Fixes for 1991 course 6 requirements
   44.48 -%Phrase "and to grant others the right to do so" has been added to 
   44.49 -%permission clause
   44.50 -%Second copy of abstract is not counted as separate pages so numbering works
   44.51 -%out
   44.52 -%
   44.53 -%Revision 1.1  90/05/04  11:45:53  lwvanels
   44.54 -%Initial revision
   44.55 -
   44.56 -%
   44.57 -% LaTeX format for theses at MIT
   44.58 -% Based on "Specifications for Thesis Preparation" 
   44.59 -
   44.60 -% `vi' and `upcase' options by Krishna Sethuraman - krishna@athena.mit.edu
   44.61 -% Margins and heading types by Peter Nuth  - nuth@ai.mit.edu
   44.62 -% Title and abstract page by Stephen Gildea - gildea@erl.mit.edu
   44.63 -% Look in this directory for example file mitthesis.doc
   44.64 -% Also for propcover.tex - Boilerplate for PHD proposal.
   44.65 -
   44.66 -% To use this style - say something like:
   44.67 -%  for dull, boring thesis format:
   44.68 -%	\documentclass[12pt]{mitthesis}
   44.69 -%       \pagestyle{plain}
   44.70 -% OR for fast drafts: 
   44.71 -%	\documentclass[11pt,singlespace,draft]{mitthesis}
   44.72 -%	\pagestyle{drafthead}
   44.73 -% OR for Tech Reports:
   44.74 -%	\documentclass[12pt,twoside]{mitthesis}	
   44.75 -%	\pagestyle{headings}
   44.76 -% OR
   44.77 -%  some other combination...
   44.78 -%
   44.79 -%%%% New options:
   44.80 -% 
   44.81 -% Option `twoside':
   44.82 -%   Good for producing Tech Reports.
   44.83 -%   The default is single-sided printing, which is what M.I.T. wants on the
   44.84 -%   thesis document itself.
   44.85 -%
   44.86 -% Option `singlespace':
   44.87 -%   Good for drafts.
   44.88 -%   Double-spaced theses are the default.
   44.89 -%   That is what M.I.T. asks for in the formal specifications.
   44.90 -%
   44.91 -% 	Note that MIT does not REQUIRE all theses to be double-spaced anymore.
   44.92 -% 	Someone in the library system said that it's OK to be single-spaced.
   44.93 -% 	(Regardless of what the specs. say...)
   44.94 -%   To get singlespacing in an area - Use  the 'singlespace' environment. 
   44.95 -%
   44.96 -% Option `draft':
   44.97 -%   Puts `overfull' boxes at the end of lines that are too long. 
   44.98 -%
   44.99 -% Pagestyle `drafthead':
  44.100 -%   Puts the date and the label ``*DRAFT*'' in the footer.
  44.101 -%
  44.102 -%%%%%%%%%%
  44.103 -%
  44.104 -%%%% Parameters to initialize for boilerplate page:
  44.105 -%
  44.106 -%	\title{Mixed Circular Cylindrical Shells}
  44.107 -% 	\author{J. Casey Salas}
  44.108 -% 	\prevdegrees{B.S., University of California (1978) \\
  44.109 -%		     S.M., Massachusetts Institute of Technology (1981)}
  44.110 -% 	\department{Department of Electrical Engineering and Computer Science}
  44.111 -% 	\degree{Doctor of Philosophy}
  44.112 -%% If the thesis is for two degrees simultaneously, list them both
  44.113 -%% separated by \and like this:
  44.114 -% 	\degree{Doctor of Philosophy \and Master of Science}
  44.115 -% 	\degreemonth{February}
  44.116 -% 	\degreeyear{1987}
  44.117 -% 	\thesisdate{December 10, 1986}
  44.118 -%% If the thesis is copyright by the Institute, leave this line out and
  44.119 -%% the standard copyright line will be used instead.
  44.120 -% 	\copyrightnotice{J. Casey Salas, 1986}
  44.121 -%% If there is more than one supervisor, use the \supervisor command
  44.122 -%% once for each.
  44.123 -% 	\supervisor{John D. Galli}{Director, Sound Instrument Laboratory}
  44.124 -%% This is the department committee chairman, not the thesis committee chairman
  44.125 -% 	\chairman{Arthur C. Smith}
  44.126 -%		 {Chairman, Departmental Committee on Graduate Students}
  44.127 -%% Make the titlepage based on the above information.  If you need
  44.128 -%% something special and can't use the standard form, you can specify
  44.129 -%% the exact text of the titlepage yourself.  Put it in a titlepage
  44.130 -%% environment and leave blank lines where you want vertical space.
  44.131 -%% The spaces will be adjusted to fill the entire page.  The dotted
  44.132 -%% lines for the signatures are made with the \signature command.
  44.133 -%
  44.134 -%% The abstractpage environment sets up everything on the page except
  44.135 -%% the text itself.  The title and other header material are put at the
  44.136 -%% top of the page, and the supervisors are listed at the bottom.  A
  44.137 -%% new page is begun both before and after.  Of course, an abstract may
  44.138 -%% be more than one page itself.  If you need more control over the
  44.139 -%% format of the page, you can use the abstract environment, which puts
  44.140 -%% the word "Abstract" at the beginning and single spaces its text.
  44.141 -%
  44.142 -% 	\begin{abstractpage}
  44.143 -%	    Abstract goes here.
  44.144 -%	\end{abstractpage}
  44.145 -%
  44.146 -%%%%%%%% Newer additions 
  44.147 -%
  44.148 -% documentclass options - 
  44.149 -% vi		For MIT course VI or VIII thesis - will copyright the thesis to
  44.150 -% 		you while giving MIT permission to copy and distribute it.
  44.151 -% upcase	Will put much of the cover page in uppercase, as per the
  44.152 -% 		example on page 17 of the *Specifications for Thesis
  44.153 -% 		Preparation*, (revised 1989)
  44.154 -% Also added ``All Rights Reserved'' to default copyright notice.
  44.155 -%
  44.156 -%%%%%%%%%%%
  44.157 -% 
  44.158 -% Documentclass options (vi and upcase) and changes to copyright notice
  44.159 -%	Copyright (c) 1990, by Krishna Sethuraman.
  44.160 -%
  44.161 -% Pagestyle and header generation
  44.162 -%	Copyright (c) 1987, 1988 by Peter Nuth
  44.163 -%
  44.164 -% Original version
  44.165 -%	 Copyright (c) 1987 by Stephen Gildea
  44.166 -% Permission to copy all or part of this work is granted, provided
  44.167 -% that the copies are not made or distributed for resale, and that
  44.168 -% the copyright notice and this notice are retained.
  44.169 -% 
  44.170 -% THIS WORK IS PROVIDED ON AN "AS IS" BASIS.  THE AUTHOR PROVIDES NO
  44.171 -% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
  44.172 -% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
  44.173 -% FOR ANY PARTICULAR PURPOSE.
  44.174 -%%%%%%%%
  44.175 -
  44.176 -\NeedsTeXFormat{LaTeX2e}
  44.177 -\ProvidesClass{mitthesis}[1999/10/20]
  44.178 -
  44.179 -\def\mystretch{1.5}		% Double spacing hack
  44.180 -\DeclareOption{doublespace}{}	% This is default
  44.181 -				% So we do not read this style twice
  44.182 -\DeclareOption{singlespace}{		% If he explicitly wants single spacing
  44.183 -    \typeout{Single spaced}
  44.184 -    \def\mystretch{1}}	
  44.185 -
  44.186 -%% `vi' and `upcase' document style options.  Krishna Sethuraman (1990)
  44.187 -\newcount\vithesis
  44.188 -\DeclareOption{vi}{\typeout{Course VI/VIII thesis style.}\advance\vithesis by1}
  44.189 -\vithesis=0
  44.190 -
  44.191 -\DeclareOption{upcase}{\typeout{Uppercase cover page.}
  44.192 -	\gdef\choosecase#1{\uppercase\expandafter{#1}}}
  44.193 -\def\choosecase#1{#1}
  44.194 -
  44.195 -%% leftblank option by Kevin Fu
  44.196 -\newif\if@leftblank \@leftblankfalse
  44.197 -
  44.198 -\DeclareOption{leftblank}{\typeout{Intentionally Leaving Pages Blank}
  44.199 -\@leftblanktrue}
  44.200 -
  44.201 -%  Thesis looks much like report
  44.202 -\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
  44.203 -\ProcessOptions
  44.204 -\LoadClass{report}
  44.205 -
  44.206 -% If the user wants single spacing, set baselinestretch=1.
  44.207 -
  44.208 -\usepackage{setspace}
  44.209 -
  44.210 -% Note - doublespace.sty has some float-related troubles in
  44.211 -% combination with graphics or color, and is not officially compliant
  44.212 -% with 2e.  setspace is a replacement which is 2e-compliant.
  44.213 -
  44.214 -% Read the doublespace style that we got from Rochester:
  44.215 -%\input setdoublespace.sty 		
  44.216 -
  44.217 -\def\baselinestretch{\mystretch}	% Double spacing hack
  44.218 -
  44.219 -%%%%%%%  Set up margins and formatting params %%%
  44.220 -
  44.221 -% Margins.
  44.222 -%  Note we want 1in top margin assuming no header line, so push header
  44.223 -%	into 1in margin.
  44.224 -%  Draft mode brings the header back down.
  44.225 -
  44.226 -\setlength{\oddsidemargin}{0.25in}	% 1.25in left margin 
  44.227 -\setlength{\evensidemargin}{0.25in}	% 1.25in left margin (even pages)
  44.228 -\setlength{\topmargin}{0.0in}		% 1in top margin
  44.229 -\setlength{\textwidth}{6.0in}		% 6.0in text - 1.25in rt margin
  44.230 -\setlength{\textheight}{9in}		% Body ht for 1in margins
  44.231 -\addtolength{\topmargin}{-\headheight}	% No header, so compensate
  44.232 -\addtolength{\topmargin}{-\headsep}	% for header height and separation
  44.233 -
  44.234 -% The next two macros compensate page style for headers and footers
  44.235 -% We only need them in page styles that USE headers and footers.
  44.236 -    % If we have a header, it must be 1in from top of page.
  44.237 -\def\pulldownheader{			% Shift header down 1in from top
  44.238 -    \addtolength{\topmargin}{\headheight}	
  44.239 -    \addtolength{\topmargin}{\headsep}	
  44.240 -    \addtolength{\textheight}{-\headheight}
  44.241 -    \addtolength{\textheight}{-\headsep}
  44.242 -}
  44.243 -    % If we have a footer, put it 1in up from bottom
  44.244 -\def\pullupfooter{				% Shift footer up
  44.245 -    \addtolength{\textheight}{-\footskip}
  44.246 -%    \addtolength{\textheight}{-\footheight}  %footheight doesn't
  44.247 -%    						exist in 2e
  44.248 -}
  44.249 -
  44.250 -%%%%%%%  End of margins and formatting params %%%
  44.251 -
  44.252 -%%%%%%%  Fix various header and footer problems %%%
  44.253 -
  44.254 -% Draft mark on the right side of left pages (outside)
  44.255 -% this mark is also the only one visible on single sided.
  44.256 -\newcommand{\draftrmark}{**DRAFT**} 
  44.257 -% Draft mark on the left side of right pages (outside)
  44.258 -\newcommand{\draftlmark}{**DRAFT**} % 
  44.259 -
  44.260 -% Macros to make changing the Draft easier
  44.261 -\newcommand{\drmark}[1]{\renewcommand{\draftrmark}{#1}}
  44.262 -\newcommand{\dlmark}[1]{\renewcommand{\draftlmark}{#1}}
  44.263 -\newcommand{\dmark}[1]{\drmark{#1}\dlmark{#1}}
  44.264 -
  44.265 -% Format for draft of thesis.  Define our own PageStyle -
  44.266 -% Just like headings, but has foot lines with the date and warning
  44.267 -
  44.268 -\if@twoside         % If two-sided printing.
  44.269 -\def\ps@drafthead{
  44.270 -    \let\@mkboth\markboth
  44.271 -    \def\@oddfoot{\rm \today \hfil \sc \draftrmark}
  44.272 -    \def\@evenfoot{\sc \draftlmark \hfil \rm \today }
  44.273 -    \def\@evenhead{\rm \thepage\hfil \sl \leftmark}
  44.274 -    \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}
  44.275 -    \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
  44.276 -	\@chapapp\ \thechapter. \ \fi ##1}}{}}
  44.277 -    \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
  44.278 -	\thesection. \ \fi ##1}}}
  44.279 -    \pulldownheader				% Bring header down from edge
  44.280 -    \pullupfooter				% Bring footer up
  44.281 -}
  44.282 -\else               % If one-sided printing.
  44.283 -\def\ps@drafthead{
  44.284 -    \let\@mkboth\markboth
  44.285 -    \def\@oddfoot{\rm \today \hfil \sc \draftrmark}
  44.286 -    \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}
  44.287 -    \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
  44.288 -	\@chapapp\ \thechapter. \ \fi ##1}}}
  44.289 -    \pulldownheader				% Bring header down from edge
  44.290 -    \pullupfooter				% Bring footer up
  44.291 -}
  44.292 -\fi
  44.293 -
  44.294 -% I redefine these formats that were defined in report.sty
  44.295 -% Definition of 'headings' page style 
  44.296 -%  Note the use of ##1 for parameter of \def\chaptermark inside the
  44.297 -%  \def\ps@headings.
  44.298 -%
  44.299 -
  44.300 -\if@twoside					% If two-sided printing.
  44.301 -\def\ps@headings{\let\@mkboth\markboth
  44.302 -    \def\@oddfoot{}
  44.303 -    \def\@evenfoot{}		% No feet.
  44.304 -    \def\@evenhead{\rm \thepage\hfil \sl \leftmark}	% Left heading.
  44.305 -    \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}	% Right heading.
  44.306 -    \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
  44.307 -	\@chapapp\ \thechapter. \ \fi ##1}}{}}	
  44.308 -    \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
  44.309 -	\thesection. \ \fi ##1}}}
  44.310 -    \pulldownheader				% Bring header down from edge
  44.311 -}
  44.312 -\else						% If one-sided printing.
  44.313 -\def\ps@headings{\let\@mkboth\markboth
  44.314 -    \def\@oddfoot{}
  44.315 -    \def\@evenfoot{}		%     No feet.
  44.316 -    \def\@oddhead{\hbox {}\sl \rightmark \hfil \rm\thepage}	% Heading.
  44.317 -    \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
  44.318 -	\@chapapp\ \thechapter. \ \fi ##1}}}
  44.319 -    \pulldownheader				% Bring header down from edge
  44.320 -}
  44.321 -\fi
  44.322 -
  44.323 -% Redefinition of 'myheadings' page style.  
  44.324 -%
  44.325 -\def\ps@myheadings{\let\@mkboth\@gobbletwo
  44.326 -    \def\@oddfoot{}
  44.327 -    \def\@evenfoot{}
  44.328 -    \def\sectionmark##1{}
  44.329 -    \def\subsectionmark##1{}
  44.330 -    \def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox {}}	%
  44.331 -    \def\@oddhead{\hbox{}\sl\rightmark \hfil \rm\thepage}	%
  44.332 -    \pulldownheader				% Bring header down from edge
  44.333 -}						
  44.334 -
  44.335 -% Redefine '/chapter' to always start on an odd page.
  44.336 -% Should make no difference in singleside mode.
  44.337 -%
  44.338 -\if@leftblank
  44.339 -% Prints "THIS PAGE INTENTIONALLY LEFT BLANK" on blank pages.
  44.340 -\def\chapter{\clearpage\ifodd\c@page\else
  44.341 -   \hbox{}\par\vfill\centerline%
  44.342 -   {THIS PAGE INTENTIONALLY LEFT BLANK}%
  44.343 -   \vfill\newpage\fi
  44.344 -   \thispagestyle{plain}	% Page style of chapter page is 'plain'
  44.345 -   \global\@topnum\z@		% Prevents figures from going at top of page.
  44.346 -   \@afterindentfalse		% Suppresses indent in first paragraph.  Change
  44.347 -   \secdef\@chapter\@schapter}	% to \@afterindenttrue to have indent.
  44.348 -\else
  44.349 -\def\chapter{\cleardoublepage	% Starts new page.
  44.350 -   \thispagestyle{plain}	% Page style of chapter page is 'plain'
  44.351 -   \global\@topnum\z@		% Prevents figures from going at top of page.
  44.352 -   \@afterindentfalse		% Suppresses indent in first paragraph.  Change
  44.353 -   \secdef\@chapter\@schapter}	% to \@afterindenttrue to have indent.
  44.354 -\fi
  44.355 -% If using the report style, use - instead of . in the figure number.
  44.356 -\@ifundefined{thechapter}{}{\def\thefigure{\thechapter-\arabic{figure}}}
  44.357 -
  44.358 -
  44.359 -%%%%%%%%%  End of Style parameters %%%%
  44.360 -
  44.361 -% Here's Gildea's Boilerplate Stuff.
  44.362 -% Copyright (c) 1987 by Stephen Gildea
  44.363 -% Permission to copy all or part of this work is granted, provided
  44.364 -% that the copies are not made or distributed for resale, and that
  44.365 -% the copyright notice and this notice are retained.
  44.366 -
  44.367 -%% Define all the pieces that go on the title page and the abstract.
  44.368 -
  44.369 -% \title and \author already exist
  44.370 -
  44.371 -\def\prevdegrees#1{\gdef\@prevdegrees{#1}}
  44.372 -\def\@prevdegrees{}
  44.373 -
  44.374 -\def\department#1{\gdef\@department{#1}}
  44.375 -
  44.376 -% If you are getting two degrees, use \and between the names.
  44.377 -\def\degree#1{\setbox0\hbox{#1}	 %for side effect of setting \@degreeword
  44.378 -  \gdef\@degree{#1}}
  44.379 -
  44.380 -% \and is used inside the \degree argument to separate two degrees
  44.381 -\def\and{\gdef\@degreeword{degrees} \par and \par}
  44.382 -\def\@degreeword{degree}
  44.383 -
  44.384 -% The copyright notice stuff is a tremendous mess.
  44.385 -%
  44.386 -% \@copyrightnotice is used by \maketitle to actually put text on the
  44.387 -% page; it defaults to ``Copyright MIT 19xx.  All rights reserved.''
  44.388 -% \copyrightnoticetext takes an argument and defined \@copyrightnotice
  44.389 -% to that argument.  \copyrightnotice takes an argument, and calls
  44.390 -% \copyrightnoticetext with that argument, preceeded by a copyright
  44.391 -% symbol and followed by ``All rights reserved.'' and the standard
  44.392 -% permission notice.
  44.393 -% 
  44.394 -% If you use the 'vi' option, \copyrightnoticetext is used to set the
  44.395 -% copyright to ``(C) Your Name, Current Year in Roman Numerals.''
  44.396 -% followed by the permission notice.
  44.397 -
  44.398 -% If there is no \copyrightnotice command, it is asssumed that MIT
  44.399 -% holds the copyright.  This commands adds the copyright symbol to the
  44.400 -% beginning, and puts the standard permission notice below.
  44.401 -%% ``All rights reserved'' added.  Krishna Sethuraman (1990)
  44.402 -\def\copyrightnotice#1{\copyrightnoticetext{\copyright\ #1.  All rights
  44.403 -reserved.\par\permission}}
  44.404 -
  44.405 -% Occacionally you will need to exactly specify the text of the 
  44.406 -% copyright notice.  The \copyrightnoticetext command is then useful.
  44.407 -\long\def\copyrightnoticetext#1{\gdef\@copyrightnotice{#1}}
  44.408 -\def\@copyrightnotice{\copyright\ \Mit\ \@degreeyear.  All rights reserved.}
  44.409 -
  44.410 -%% `vi' documentclass option: Specifying this option automatically
  44.411 -%% copyrights the thesis to the author and gives MIT permission to copy and
  44.412 -%% distribute the document.  If you want, you can still specify
  44.413 -%% \copyrightnotice{stuff} to copyright to someone else, or
  44.414 -%% \copyrightnoticetext{stuff} to specify the exact text of the copyright
  44.415 -%% notice.
  44.416 -\ifodd\vithesis \copyrightnoticetext{\copyright\ \@author,
  44.417 -\uppercase\expandafter{\romannumeral\@degreeyear}.  All rights reserved.\par\permission}
  44.418 -%% or just
  44.419 -%%\@degreeyear}}
  44.420 -\typeout{Copyright given to author,
  44.421 -	permission to copy/distribute given to MIT.}
  44.422 -\else \typeout{Thesis document copyright MIT unless otherwise (manually) specified}
  44.423 -\fi
  44.424 -
  44.425 -\def\thesisdate#1{\gdef\@thesisdate{#1}}
  44.426 -
  44.427 -% typically just a month and year
  44.428 -\def\degreemonth#1{\gdef\@degreemonth{#1}}
  44.429 -\def\degreeyear#1{\gdef\@degreeyear{#1}}
  44.430 -
  44.431 -% Usage: \supervisor{name}{title}
  44.432 -%        \chairman{name}{title}
  44.433 -
  44.434 -% since there can be more than one supervisor,
  44.435 -% we build the appropriate boxes for the titlepage and
  44.436 -% the abstractpage as the user makes multiple calls
  44.437 -% to \supervisor
  44.438 -\newbox\@titlesupervisor 	\newbox\@abstractsupervisor
  44.439 -
  44.440 -\def\supervisor#1#2{\setbox\@titlesupervisor\vbox
  44.441 -  {\unvbox\@titlesupervisor \vskip 10pt% plus 1fil minus 1fil
  44.442 -  \def\baselinestretch{1}\large
  44.443 -  \signature{Certified by}{#1 \\ #2 \\ Thesis Supervisor}}
  44.444 -  \setbox\@abstractsupervisor\vbox{\unvbox\@abstractsupervisor
  44.445 -  \vskip\baselineskip \def\baselinestretch{1}\@normalsize 
  44.446 -  \par\noindent Thesis Supervisor: #1 \\ Title: #2}}
  44.447 -
  44.448 -% department chairman, not thesis committee chairman
  44.449 -\def\chairman#1#2{\gdef\@chairmanname{#1}\gdef\@chairmantitle{#2}}
  44.450 -
  44.451 -%% `upcase' documentclass option: \choosecase is defined either as a dummy or
  44.452 -%% a macro to change the (expanded) argument to uppercase.
  44.453 -\def\maketitle{\begin{titlepage}
  44.454 -\large
  44.455 -{\def\baselinestretch{1.2}\Large\bf \choosecase{\@title} \par}
  44.456 -by\par
  44.457 -{\Large  \choosecase{\@author}}
  44.458 -\par
  44.459 -\@prevdegrees
  44.460 -\par
  44.461 -\choosecase{Submitted to the} \choosecase{\@department} \\
  44.462 -\choosecase{in partial fulfillment of the requirements for the}
  44.463 -\choosecase{\@degreeword} 
  44.464 -\choosecase{of}
  44.465 -\par
  44.466 -\choosecase{\@degree}
  44.467 -\par
  44.468 -at the
  44.469 -\par\MIT\par
  44.470 -\@degreemonth\ \@degreeyear
  44.471 -\par
  44.472 -\@copyrightnotice
  44.473 -\par
  44.474 -\vskip 3\baselineskip
  44.475 -\signature{Author}{\@department \\ \@thesisdate}
  44.476 -\par
  44.477 -\vfill
  44.478 -\unvbox\@titlesupervisor
  44.479 -\par
  44.480 -\vfill
  44.481 -\signature{Accepted by}{\@chairmanname \\ \@chairmantitle}
  44.482 -\vfill
  44.483 -\end{titlepage}}
  44.484 -
  44.485 -% this environment should probably be called abstract,
  44.486 -% but we want people to also be able to get at the more
  44.487 -% basic abstract environment
  44.488 -\def\abstractpage{\cleardoublepage
  44.489 -\begin{center}{\large{\bf \@title} \\
  44.490 -by \\
  44.491 -\@author \\[\baselineskip]}
  44.492 -\par
  44.493 -\def\baselinestretch{1}\@normalsize
  44.494 -Submitted to the \@department \\
  44.495 -on \@thesisdate, in partial fulfillment of the \\
  44.496 -requirements for the \@degreeword\ of \\
  44.497 -\@degree
  44.498 -\end{center}
  44.499 -\par
  44.500 -\begin{abstract}}
  44.501 -
  44.502 -%% Changed from \unvbox to \unvcopy for use with multiple copies of abstract
  44.503 -%% page.
  44.504 -%% Krishna Sethuraman (1990)
  44.505 -\def\endabstractpage{\end{abstract}\noindent
  44.506 - \unvcopy\@abstractsupervisor \newpage}
  44.507 -
  44.508 -%% This counter is used to save the page number for the second copy of
  44.509 -%% the abstract.
  44.510 -\newcounter{savepage}
  44.511 -
  44.512 -% You can use the titlepage environment to do it all yourself if you
  44.513 -% don't want to use \maketitle.  If the titlepage environment, the
  44.514 -% paragraph skip is infinitely stretchable, so if you leave a blank line
  44.515 -% between lines that you want space between, the space will stretch so
  44.516 -% that the title page fills up the entire page.
  44.517 -\def\titlepage{\cleardoublepage\centering
  44.518 -  \thispagestyle{empty}
  44.519 -  \parindent 0pt \parskip 10pt plus 1fil minus 1fil
  44.520 -  \def\baselinestretch{1}\@normalsize\vbox to \vsize\bgroup\vbox to 9in\bgroup}
  44.521 -% The \kern0pt pushes any depth into the height.  Thanks to Richard Stone.
  44.522 -\def\endtitlepage{\par\kern 0pt\egroup\vss\egroup\newpage}
  44.523 -
  44.524 -\def\MIT{MASSACHUSETTS INSTITUTE OF TECHNOLOGY}
  44.525 -\def\Mit{Massachusetts Institute of Technology}
  44.526 -
  44.527 -\def\permission{\par\noindent{\centering
  44.528 -   The author hereby grants to MIT permission to reproduce and to
  44.529 -   distribute publicly paper and electronic copies of this thesis
  44.530 -   document in whole or in part in any medium now known or hereafter
  44.531 -   created.}\par}
  44.532 -
  44.533 -\def\signature#1#2{\par\noindent#1\dotfill\null\\*
  44.534 -  {\raggedleft #2\par}}
  44.535 -
  44.536 -\def\abstract{\subsection*{Abstract}\small\def\baselinestretch{1}\@normalsize}
  44.537 -\def\endabstract{\par}
  44.538 -
    45.1 --- a/thesis/mitthesis/propcover.tex	Fri Mar 21 00:08:49 2014 -0400
    45.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.3 @@ -1,346 +0,0 @@
    45.4 -%% This file is for producing a Doctoral Thesis proposal.  It should be fairly
    45.5 -%% self-explanatory.  
    45.6 -
    45.7 -\documentclass{article}
    45.8 -\begin{document}
    45.9 -
   45.10 -\bibliographystyle{plain}
   45.11 -\pagestyle{empty}
   45.12 -\markboth{{\sc thesis proposal}}{{\sc thesis proposal}}
   45.13 -\def\title{Parallel Processor Architecture}
   45.14 -\def\author{Peter Nuth}
   45.15 -\def\addrone{305 Memorial Drive, 606C}
   45.16 -\def\addrtwo{Cambridge, MA  02139}
   45.17 -
   45.18 -\def\degree{Doctor of Philosophy}
   45.19 -%% Added \deptname for PhD proposals in other fields.
   45.20 -%% Krishna Sethuraman (1990)
   45.21 -\def\deptname{Electrical Engineering \\ and Computer Science}
   45.22 -\def\laboratory{Artificial Intelligence Laboratory}
   45.23 -
   45.24 -\def\submissiondate{\today}
   45.25 -\def\completiondate{September 1990}
   45.26 -
   45.27 -\def\supervisor{Professor William J. Dally}
   45.28 -\def\supertitleone{Associate Professor of Electrical Engineering}
   45.29 -\def\supertitletwo{and Computer Science}
   45.30 -
   45.31 -\def\readerone{Professor Arvind}
   45.32 -\def\readeronetitleone{Professor of Electrical Engineering}
   45.33 -\def\readeronetitletwo{and Computer Science}
   45.34 -
   45.35 -\def\readertwo{Professor Thomas Knight}
   45.36 -\def\readertwotitleone{Assistant Professor of Electrical Engineering}
   45.37 -\def\readertwotitletwo{and Computer Science}
   45.38 -
   45.39 -\def\readerthree{Professor William J. Dally}
   45.40 -\def\readerthreetitleone{Associate Professor of Electrical Engineering}
   45.41 -\def\readerthreetitletwo{and Computer Science}
   45.42 -
   45.43 -
   45.44 -\def\abstract{
   45.45 -The proposed research
   45.46 -is a study of processor architecture for 
   45.47 -large scale parallel computer systems.
   45.48 -The thesis introduces mechanisms
   45.49 -for fast context switching, 
   45.50 -synchronization between tasks,
   45.51 -and run-time binding of 
   45.52 -variable names to processor memory.
   45.53 -Various design tradeoffs are evaluated 
   45.54 -through simulation of a processor running a typical load.
   45.55 -This work contains
   45.56 -estimates of
   45.57 -the speed and complexity of the different 
   45.58 -alternatives as implemented in  VLSI.
   45.59 -}
   45.60 -
   45.61 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   45.62 -%%%%%%%%%% You Should Not Need To Modify Anything Below Here %%%%%%%%%%%%%%%
   45.63 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   45.64 -
   45.65 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   45.66 -%%% Cover Page - Author signs %%%
   45.67 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   45.68 -
   45.69 -\begin{center}
   45.70 -{\Large \bf 
   45.71 -   Massachusetts Institute of Technology
   45.72 -\\ Department of \deptname \\}
   45.73 -\vspace{.25in}
   45.74 -{\Large \bf
   45.75 -   Proposal for Thesis Research in Partial Fulfillment
   45.76 -\\ of the Requirements for the Degree of
   45.77 -\\ \degree \\}
   45.78 -\end{center}
   45.79 -
   45.80 -\vspace{.5in}
   45.81 -
   45.82 -\def\sig{{\small \sc (Signature of Author)}}
   45.83 -
   45.84 -\begin{tabular}{rlc}
   45.85 -   {\small \sc Title:}                       & \multicolumn{2}{l}{\title}
   45.86 -\\ {\small \sc Submitted by:}
   45.87 -                            & \author  & \\
   45.88 -                            & \addrone & \\
   45.89 -                            & \addrtwo & \\ \cline{3-3}
   45.90 -			    &	       & \makebox[2in][c]{\sig}
   45.91 -\\ {\small \sc Date of Submission:}          & \multicolumn{2}{l}{\submissiondate}
   45.92 -\\ {\small \sc Expected Date of Completion:} & \multicolumn{2}{l}{\completiondate}
   45.93 -\\ {\small \sc Laboratory:}                  & \multicolumn{2}{l}{\laboratory}
   45.94 -\end{tabular}
   45.95 -
   45.96 -
   45.97 -\vspace{.75in}
   45.98 -{\bf \sc Brief Statement of the Problem:}
   45.99 -
  45.100 -\abstract
  45.101 -
  45.102 -         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  45.103 -\newpage %%% Supervision Agreement %%%
  45.104 -         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  45.105 -
  45.106 -\begin{flushright}
  45.107 -   Massachusetts Institute of Technology
  45.108 -\\ Department of \deptname
  45.109 -\\ Cambridge, Massachusetts 02139
  45.110 -\end{flushright}
  45.111 -
  45.112 -\underline{\bf Doctoral Thesis Supervision Agreement}
  45.113 -
  45.114 -\vspace{.25in}
  45.115 -\begin{tabular}{rl}
  45.116 -   {\small \sc To:}   & Department Graduate Committee
  45.117 -\\ {\small \sc From:} & \supervisor
  45.118 -\end{tabular}
  45.119 -
  45.120 -\vspace{.25in}
  45.121 -The program outlined in the proposal:
  45.122 -
  45.123 -\vspace{.25in}
  45.124 -\begin{tabular}{rl}
  45.125 -   {\small \sc Title:}  & \title
  45.126 -\\ {\small \sc Author:} & \author
  45.127 -\\ {\small \sc Date:}   & \submissiondate
  45.128 -\end{tabular}
  45.129 -
  45.130 -\vspace{.25in}
  45.131 -is adequate for a Doctoral thesis.
  45.132 -I believe that appropriate readers for this thesis would be:
  45.133 -
  45.134 -\vspace{.25in}
  45.135 -\begin{tabular}{rl}
  45.136 -   {\small \sc Reader 1:} & \readerone
  45.137 -\\ {\small \sc Reader 2:} & \readertwo
  45.138 -%\\ {\small \sc Reader 3:} & \readerthree
  45.139 -\end{tabular}
  45.140 -
  45.141 -\vspace{.25in}
  45.142 -Facilities and support for the research outlined in the proposal are available.
  45.143 -I am willing to supervise the thesis and evaluate the thesis report.
  45.144 -
  45.145 -\vspace{.25in}
  45.146 -\begin{tabular}{crc}
  45.147 -  \hspace{2in} & {\sc Signed:} & \\ \cline{3-3}
  45.148 -               &               & {\small \sc \supertitleone} \\
  45.149 -               &               & {\small \sc \supertitletwo} \\
  45.150 -               &               &                             \\
  45.151 -               & {\sc Date:}   & \\ \cline{3-3}
  45.152 -\end{tabular}
  45.153 -
  45.154 -\vspace{0in plus 1fill}
  45.155 -
  45.156 -Comments: \\
  45.157 -\begin{tabular}{c}
  45.158 -  \hspace{6.25in} \\
  45.159 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.160 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.161 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.162 -%  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.163 -%  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.164 -%  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.165 -\end{tabular}
  45.166 -
  45.167 -          %%%%%%%%%%%%%%%%%%%%%%%%%%
  45.168 -\newpage  %%% Reader I Agreement %%%
  45.169 -          %%%%%%%%%%%%%%%%%%%%%%%%%%
  45.170 -
  45.171 -\begin{flushright}
  45.172 -   Massachusetts Institute of Technology
  45.173 -\\ Department of \deptname
  45.174 -\\ Cambridge, Massachusetts 02139
  45.175 -\end{flushright}
  45.176 -
  45.177 -\underline{\bf Doctoral Thesis Reader Agreement}
  45.178 -
  45.179 -\vspace{.25in}
  45.180 -\begin{tabular}{rl}
  45.181 -   {\small \sc To:}   & Department Graduate Committee
  45.182 -\\ {\small \sc From:} & \readerone
  45.183 -\end{tabular}
  45.184 -
  45.185 -\vspace{.25in}
  45.186 -The program outlined in the proposal:
  45.187 -
  45.188 -\vspace{.25in}
  45.189 -\begin{tabular}{rl}
  45.190 -   {\small \sc Title:}          & \title
  45.191 -\\ {\small \sc Author:}         & \author
  45.192 -\\ {\small \sc Date:}           & \submissiondate
  45.193 -\\ {\small \sc Supervisor:}     & \supervisor
  45.194 -\\ {\small \sc Other Reader:}   & \readertwo
  45.195 -%\\ {\small \sc Other Reader:}   & \readerthree
  45.196 -\end{tabular}
  45.197 -
  45.198 -\vspace{.25in}
  45.199 -is adequate for a Doctoral thesis.
  45.200 -I am willing to aid in guiding the research
  45.201 -and in evaluating the thesis report as a reader.
  45.202 -
  45.203 -\vspace{.25in}
  45.204 -\begin{tabular}{crc}
  45.205 -  \hspace{2in} & {\sc Signed:} & \\ \cline{3-3}
  45.206 -               &               & {\small \sc \readeronetitleone} \\
  45.207 -               &               & {\small \sc \readeronetitletwo} \\
  45.208 -               &               &                                 \\
  45.209 -               & {\sc Date:}   & \\ \cline{3-3}
  45.210 -\end{tabular}
  45.211 -
  45.212 -\vspace{0in plus 1fill}
  45.213 -
  45.214 -Comments: \\
  45.215 -\begin{tabular}{c}
  45.216 -  \hspace{6.25in} \\
  45.217 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.218 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.219 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.220 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.221 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.222 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.223 -\end{tabular}
  45.224 -
  45.225 -
  45.226 -          %%%%%%%%%%%%%%%%%%%%%%%%%%%
  45.227 -\newpage  %%% Reader II Agreement %%%
  45.228 -          %%%%%%%%%%%%%%%%%%%%%%%%%%%
  45.229 -
  45.230 -
  45.231 -\begin{flushright}
  45.232 -   Massachusetts Institute of Technology
  45.233 -\\ Department of \deptname
  45.234 -\\ Cambridge, Massachusetts 02139
  45.235 -\end{flushright}
  45.236 -
  45.237 -\underline{\bf Doctoral Thesis Reader Agreement}
  45.238 -
  45.239 -\vspace{.25in}
  45.240 -\begin{tabular}{rl}
  45.241 -   {\small \sc To:}   & Department Graduate Committee
  45.242 -\\ {\small \sc From:} & \readertwo
  45.243 -\end{tabular}
  45.244 -
  45.245 -\vspace{.25in}
  45.246 -The program outlined in the proposal:
  45.247 -
  45.248 -\vspace{.25in}
  45.249 -\begin{tabular}{rl}
  45.250 -   {\small \sc Title:}          & \title
  45.251 -\\ {\small \sc Author:}         & \author
  45.252 -\\ {\small \sc Date:}           & \submissiondate
  45.253 -\\ {\small \sc Supervisor:}     & \supervisor
  45.254 -\\ {\small \sc Other Reader:}   & \readerone
  45.255 -%\\ {\small \sc Other Reader:}   & \readerthree
  45.256 -\end{tabular}
  45.257 -
  45.258 -\vspace{.25in}
  45.259 -is adequate for a Doctoral thesis.
  45.260 -I am willing to aid in guiding the research
  45.261 -and in evaluating the thesis report as a reader.
  45.262 -
  45.263 -\vspace{.25in}
  45.264 -\begin{tabular}{crc}
  45.265 -  \hspace{2in} & {\sc Signed:} & \\ \cline{3-3}
  45.266 -               &               & {\small \sc \readertwotitleone} \\
  45.267 -               &               & {\small \sc \readertwotitletwo} \\
  45.268 -               &               &                                 \\
  45.269 -               & {\sc Date:}   & \\ \cline{3-3}
  45.270 -\end{tabular}
  45.271 -
  45.272 -\vspace{0in plus 1fill}
  45.273 -
  45.274 -Comments: \\
  45.275 -\begin{tabular}{c}
  45.276 -  \hspace{6.25in} \\
  45.277 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.278 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.279 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.280 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.281 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.282 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.283 -\end{tabular}
  45.284 -\newpage
  45.285 -          %%%%%%%%%%%%%%%%%%%%%%%%%%%
  45.286 -\newpage  %%% Reader III Agreement %%%
  45.287 -          %%%%%%%%%%%%%%%%%%%%%%%%%%%
  45.288 -
  45.289 -
  45.290 -\begin{flushright}
  45.291 -   Massachusetts Institute of Technology
  45.292 -\\ Department of \deptname
  45.293 -\\ Cambridge, Massachusetts 02139
  45.294 -\end{flushright}
  45.295 -
  45.296 -\underline{\bf Doctoral Thesis Reader Agreement}
  45.297 -
  45.298 -\vspace{.25in}
  45.299 -\begin{tabular}{rl}
  45.300 -   {\small \sc To:}   & Department Graduate Committee
  45.301 -\\ {\small \sc From:} & \readerthree
  45.302 -\end{tabular}
  45.303 -
  45.304 -\vspace{.25in}
  45.305 -The program outlined in the proposal:
  45.306 -
  45.307 -\vspace{.25in}
  45.308 -\begin{tabular}{rl}
  45.309 -   {\small \sc Title:}          & \title
  45.310 -\\ {\small \sc Author:}         & \author
  45.311 -\\ {\small \sc Date:}           & \submissiondate
  45.312 -\\ {\small \sc Supervisor:}     & \supervisor
  45.313 -\\ {\small \sc Other Reader:}   & \readerone
  45.314 -\\ {\small \sc Other Reader:}   & \readertwo
  45.315 -\end{tabular}
  45.316 -
  45.317 -\vspace{.25in}
  45.318 -is adequate for a Doctoral thesis.
  45.319 -I am willing to aid in guiding the research
  45.320 -and in evaluating the thesis report as a reader.
  45.321 -
  45.322 -\vspace{.25in}
  45.323 -\begin{tabular}{crc}
  45.324 -  \hspace{2in} & {\sc Signed:} & \\ \cline{3-3}
  45.325 -               &               & {\small \sc \readerthreetitleone} \\
  45.326 -               &               & {\small \sc \readerthreetitletwo} \\
  45.327 -               &               &                                 \\
  45.328 -               & {\sc Date:}   & \\ \cline{3-3}
  45.329 -\end{tabular}
  45.330 -
  45.331 -\vspace{0in plus 1fill}
  45.332 -
  45.333 -Comments: \\
  45.334 -\begin{tabular}{c}
  45.335 -  \hspace{6.25in} \\
  45.336 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.337 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.338 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.339 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.340 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.341 -  \mbox{} \\ \cline{1-1} \mbox{} \\
  45.342 -\end{tabular}
  45.343 -\newpage
  45.344 -
  45.345 -\end{document}
  45.346 -
  45.347 -
  45.348 -
  45.349 -
    46.1 --- a/thesis/mitthesis/sample.org	Fri Mar 21 00:08:49 2014 -0400
    46.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.3 @@ -1,7 +0,0 @@
    46.4 -#+TITLE: asdhfklasdfkljasdf
    46.5 -#+AUTHOR: asdhfkjasdhfkljdasf
    46.6 -
    46.7 -* Section one
    46.8 -asdfasdfasdf
    46.9 -* Another section
   46.10 -aqghowahaoshfwhowehorwer
   46.11 \ No newline at end of file
    47.1 --- a/thesis/mitthesis/sample.tex	Fri Mar 21 00:08:49 2014 -0400
    47.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.3 @@ -1,40 +0,0 @@
    47.4 -% Created 2014-03-20 Thu 23:12
    47.5 -\documentclass[11pt]{article}
    47.6 -\usepackage[utf8]{inputenc}
    47.7 -\usepackage[T1]{fontenc}
    47.8 -\usepackage{fixltx2e}
    47.9 -\usepackage{graphicx}
   47.10 -\usepackage{longtable}
   47.11 -\usepackage{float}
   47.12 -\usepackage{wrapfig}
   47.13 -\usepackage{rotating}
   47.14 -\usepackage[normalem]{ulem}
   47.15 -\usepackage{amsmath}
   47.16 -\usepackage{textcomp}
   47.17 -\usepackage{marvosym}
   47.18 -\usepackage{wasysym}
   47.19 -\usepackage{amssymb}
   47.20 -\usepackage{hyperref}
   47.21 -\tolerance=1000
   47.22 -\author{asdhfkjasdhfkljdasf}
   47.23 -\date{\today}
   47.24 -\title{asdhfklasdfkljasdf}
   47.25 -\hypersetup{
   47.26 -  pdfkeywords={},
   47.27 -  pdfsubject={},
   47.28 -  pdfcreator={Emacs 24.2.1 (Org mode 8.2.5h)}}
   47.29 -\begin{document}
   47.30 -
   47.31 -\maketitle
   47.32 -\tableofcontents
   47.33 -
   47.34 -
   47.35 -\section{Section one}
   47.36 -\label{sec-1}
   47.37 -asdfasdfasdf
   47.38 -
   47.39 -\section{Another section}
   47.40 -\label{sec-2}
   47.41 -aqghowahaoshfwhowehorwer
   47.42 -% Emacs 24.2.1 (Org mode 8.2.5h)
   47.43 -\end{document}
   47.44 \ No newline at end of file
    48.1 --- a/thesis/mitthesis/signature.tex	Fri Mar 21 00:08:49 2014 -0400
    48.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.3 @@ -1,31 +0,0 @@
    48.4 -% -*- Mode:TeX -*-
    48.5 -%
    48.6 -% Some departments (e.g. Chemistry) require an additional cover page
    48.7 -% with signatures of the thesis committee.  Please check with your
    48.8 -% thesis advisor or other appropriate person to determine if such a 
    48.9 -% page is required for your thesis.  
   48.10 -%
   48.11 -% If you choose not to use the "titlepage" environment, a \newpage
   48.12 -% commands, and several \vspace{\fill} commands may be necessary to
   48.13 -% achieve the required spacing.  The \signature command is defined in
   48.14 -% the "mitthesis" class
   48.15 -%
   48.16 -% The following sample appears courtesy of Ben Kaduk <kaduk@mit.edu> and
   48.17 -% was used in his June 2012 doctoral thesis in Chemistry. 
   48.18 -
   48.19 -\begin{titlepage}
   48.20 -\begin{large}
   48.21 -This doctoral thesis has been examined by a Committee of the Department
   48.22 -of Chemistry as follows:
   48.23 -
   48.24 -\signature{Professor Jianshu Cao}{Chairman, Thesis Committee \\
   48.25 -   Professor of Chemistry}
   48.26 -
   48.27 -\signature{Professor Troy Van Voorhis}{Thesis Supervisor \\
   48.28 -   Associate Professor of Chemistry}
   48.29 -
   48.30 -\signature{Professor Robert W. Field}{Member, Thesis Committee \\
   48.31 -   Haslam and Dewey Professor of Chemistry}
   48.32 -\end{large}
   48.33 -\end{titlepage}
   48.34 -
    49.1 Binary file thesis/mitthesis/templates.zip has changed
    50.1 --- a/thesis/org/first-chapter.html	Fri Mar 21 00:08:49 2014 -0400
    50.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.3 @@ -1,455 +0,0 @@
    50.4 -<?xml version="1.0" encoding="utf-8"?>
    50.5 -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    50.6 -               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    50.7 -<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    50.8 -<head>
    50.9 -<title><code>CORTEX</code></title>
   50.10 -<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
   50.11 -<meta name="title" content="<code>CORTEX</code>"/>
   50.12 -<meta name="generator" content="Org-mode"/>
   50.13 -<meta name="generated" content="2013-11-07 04:21:29 EST"/>
   50.14 -<meta name="author" content="Robert McIntyre"/>
   50.15 -<meta name="description" content="Using embodied AI to facilitate Artificial Imagination."/>
   50.16 -<meta name="keywords" content="AI, clojure, embodiment"/>
   50.17 -<style type="text/css">
   50.18 - <!--/*--><![CDATA[/*><!--*/
   50.19 -  html { font-family: Times, serif; font-size: 12pt; }
   50.20 -  .title  { text-align: center; }
   50.21 -  .todo   { color: red; }
   50.22 -  .done   { color: green; }
   50.23 -  .tag    { background-color: #add8e6; font-weight:normal }
   50.24 -  .target { }
   50.25 -  .timestamp { color: #bebebe; }
   50.26 -  .timestamp-kwd { color: #5f9ea0; }
   50.27 -  .right  {margin-left:auto; margin-right:0px;  text-align:right;}
   50.28 -  .left   {margin-left:0px;  margin-right:auto; text-align:left;}
   50.29 -  .center {margin-left:auto; margin-right:auto; text-align:center;}
   50.30 -  p.verse { margin-left: 3% }
   50.31 -  pre {
   50.32 -	border: 1pt solid #AEBDCC;
   50.33 -	background-color: #F3F5F7;
   50.34 -	padding: 5pt;
   50.35 -	font-family: courier, monospace;
   50.36 -        font-size: 90%;
   50.37 -        overflow:auto;
   50.38 -  }
   50.39 -  table { border-collapse: collapse; }
   50.40 -  td, th { vertical-align: top;  }
   50.41 -  th.right  { text-align:center;  }
   50.42 -  th.left   { text-align:center;   }
   50.43 -  th.center { text-align:center; }
   50.44 -  td.right  { text-align:right;  }
   50.45 -  td.left   { text-align:left;   }
   50.46 -  td.center { text-align:center; }
   50.47 -  dt { font-weight: bold; }
   50.48 -  div.figure { padding: 0.5em; }
   50.49 -  div.figure p { text-align: center; }
   50.50 -  div.inlinetask {
   50.51 -    padding:10px;
   50.52 -    border:2px solid gray;
   50.53 -    margin:10px;
   50.54 -    background: #ffffcc;
   50.55 -  }
   50.56 -  textarea { overflow-x: auto; }
   50.57 -  .linenr { font-size:smaller }
   50.58 -  .code-highlighted {background-color:#ffff00;}
   50.59 -  .org-info-js_info-navigation { border-style:none; }
   50.60 -  #org-info-js_console-label { font-size:10px; font-weight:bold;
   50.61 -                               white-space:nowrap; }
   50.62 -  .org-info-js_search-highlight {background-color:#ffff00; color:#000000;
   50.63 -                                 font-weight:bold; }
   50.64 -  /*]]>*/-->
   50.65 -</style>
   50.66 -<script type="text/javascript">var _gaq = _gaq || [];_gaq.push(['_setAccount', 'UA-31261312-1']);_gaq.push(['_trackPageview']);(function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();</script><link rel="stylesheet" type="text/css" href="../../aurellem/css/argentum.css" />
   50.67 -<script type="text/javascript">
   50.68 -<!--/*--><![CDATA[/*><!--*/
   50.69 - function CodeHighlightOn(elem, id)
   50.70 - {
   50.71 -   var target = document.getElementById(id);
   50.72 -   if(null != target) {
   50.73 -     elem.cacheClassElem = elem.className;
   50.74 -     elem.cacheClassTarget = target.className;
   50.75 -     target.className = "code-highlighted";
   50.76 -     elem.className   = "code-highlighted";
   50.77 -   }
   50.78 - }
   50.79 - function CodeHighlightOff(elem, id)
   50.80 - {
   50.81 -   var target = document.getElementById(id);
   50.82 -   if(elem.cacheClassElem)
   50.83 -     elem.className = elem.cacheClassElem;
   50.84 -   if(elem.cacheClassTarget)
   50.85 -     target.className = elem.cacheClassTarget;
   50.86 - }
   50.87 -/*]]>*///-->
   50.88 -</script>
   50.89 -
   50.90 -</head>
   50.91 -<body>
   50.92 -
   50.93 -
   50.94 -<div id="content">
   50.95 -<h1 class="title"><code>CORTEX</code></h1>
   50.96 -
   50.97 -
   50.98 -<div class="header">
   50.99 -  <div class="float-right">	
  50.100 -    <!-- 
  50.101 -    <form>
  50.102 -      <input type="text"/><input type="submit" value="search the blog &raquo;"/> 
  50.103 -    </form>
  50.104 -    -->
  50.105 -  </div>
  50.106 -
  50.107 -  <h1>aurellem <em>&#x2609;</em></h1>
  50.108 -  <ul class="nav">
  50.109 -    <li><a href="/">read the blog &raquo;</a></li>
  50.110 -    <!-- li><a href="#">learn about us &raquo;</a></li-->
  50.111 -  </ul>
  50.112 -</div>
  50.113 -
  50.114 -<div class="author">Written by <author>Robert McIntyre</author></div>
  50.115 -
  50.116 -
  50.117 -
  50.118 -
  50.119 -
  50.120 -
  50.121 -
  50.122 -<div id="outline-container-1" class="outline-2">
  50.123 -<h2 id="sec-1">Artificial Imagination</h2>
  50.124 -<div class="outline-text-2" id="text-1">
  50.125 -
  50.126 -
  50.127 -<p>
  50.128 -  Imagine watching a video of someone skateboarding. When you watch
  50.129 -  the video, you can imagine yourself skateboarding, and your
  50.130 -  knowledge of the human body and its dynamics guides your
  50.131 -  interpretation of the scene. For example, even if the skateboarder
  50.132 -  is partially occluded, you can infer the positions of his arms and
  50.133 -  body from your own knowledge of how your body would be positioned if
  50.134 -  you were skateboarding. If the skateboarder suffers an accident, you
  50.135 -  wince in sympathy, imagining the pain your own body would experience
  50.136 -  if it were in the same situation. This empathy with other people
  50.137 -  guides our understanding of whatever they are doing because it is a
  50.138 -  powerful constraint on what is probable and possible. In order to
  50.139 -  make use of this powerful empathy constraint, I need a system that
  50.140 -  can generate and make sense of sensory data from the many different
  50.141 -  senses that humans possess. The two key proprieties of such a system
  50.142 -  are <i>embodiment</i> and <i>imagination</i>.
  50.143 -</p>
  50.144 -
  50.145 -</div>
  50.146 -
  50.147 -<div id="outline-container-1-1" class="outline-3">
  50.148 -<h3 id="sec-1-1">What is imagination?</h3>
  50.149 -<div class="outline-text-3" id="text-1-1">
  50.150 -
  50.151 -
  50.152 -<p>
  50.153 -   One kind of imagination is <i>sympathetic</i> imagination: you imagine
  50.154 -   yourself in the position of something/someone you are
  50.155 -   observing. This type of imagination comes into play when you follow
  50.156 -   along visually when watching someone perform actions, or when you
  50.157 -   sympathetically grimace when someone hurts themselves. This type of
  50.158 -   imagination uses the constraints you have learned about your own
  50.159 -   body to highly constrain the possibilities in whatever you are
  50.160 -   seeing. It uses all your senses to including your senses of touch,
  50.161 -   proprioception, etc. Humans are flexible when it comes to "putting
  50.162 -   themselves in another's shoes," and can sympathetically understand
  50.163 -   not only other humans, but entities ranging animals to cartoon
  50.164 -   characters to <a href="http://www.youtube.com/watch?v=0jz4HcwTQmU">single dots</a> on a screen!
  50.165 -</p>
  50.166 -<p>
  50.167 -   Another kind of imagination is <i>predictive</i> imagination: you
  50.168 -   construct scenes in your mind that are not entirely related to
  50.169 -   whatever you are observing, but instead are predictions of the
  50.170 -   future or simply flights of fancy. You use this type of imagination
  50.171 -   to plan out multi-step actions, or play out dangerous situations in
  50.172 -   your mind so as to avoid messing them up in reality.
  50.173 -</p>
  50.174 -<p>
  50.175 -   Of course, sympathetic and predictive imagination blend into each
  50.176 -   other and are not completely separate concepts. One dimension along
  50.177 -   which you can distinguish types of imagination is dependence on raw
  50.178 -   sense data. Sympathetic imagination is highly constrained by your
  50.179 -   senses, while predictive imagination can be more or less dependent
  50.180 -   on your senses depending on how far ahead you imagine. Daydreaming
  50.181 -   is an extreme form of predictive imagination that wanders through
  50.182 -   different possibilities without concern for whether they are
  50.183 -   related to whatever is happening in reality.
  50.184 -</p>
  50.185 -<p>
  50.186 -   For this thesis, I will mostly focus on sympathetic imagination and
  50.187 -   the constraint it provides for understanding sensory data.
  50.188 -</p>
  50.189 -</div>
  50.190 -
  50.191 -</div>
  50.192 -
  50.193 -<div id="outline-container-1-2" class="outline-3">
  50.194 -<h3 id="sec-1-2">What problems can imagination solve?</h3>
  50.195 -<div class="outline-text-3" id="text-1-2">
  50.196 -
  50.197 -
  50.198 -<p>
  50.199 -   Consider a video of a cat drinking some water.
  50.200 -</p>
  50.201 -
  50.202 -<div class="figure">
  50.203 -<p><img src="../images/cat-drinking.jpg"  alt="../images/cat-drinking.jpg" /></p>
  50.204 -<p>A cat drinking some water. Identifying this action is beyond the state of the art for computers.</p>
  50.205 -</div>
  50.206 -
  50.207 -<p>
  50.208 -   It is currently impossible for any computer program to reliably
  50.209 -   label such an video as "drinking". I think humans are able to label
  50.210 -   such video as "drinking" because they imagine <i>themselves</i> as the
  50.211 -   cat, and imagine putting their face up against a stream of water
  50.212 -   and sticking out their tongue. In that imagined world, they can
  50.213 -   feel the cool water hitting their tongue, and feel the water
  50.214 -   entering their body, and are able to recognize that <i>feeling</i> as
  50.215 -   drinking. So, the label of the action is not really in the pixels
  50.216 -   of the image, but is found clearly in a simulation inspired by
  50.217 -   those pixels. An imaginative system, having been trained on
  50.218 -   drinking and non-drinking examples and learning that the most
  50.219 -   important component of drinking is the feeling of water sliding
  50.220 -   down one's throat, would analyze a video of a cat drinking in the
  50.221 -   following manner:
  50.222 -</p>
  50.223 -<ul>
  50.224 -<li>Create a physical model of the video by putting a "fuzzy" model
  50.225 -     of its own body in place of the cat. Also, create a simulation of
  50.226 -     the stream of water.
  50.227 -
  50.228 -</li>
  50.229 -<li>Play out this simulated scene and generate imagined sensory
  50.230 -     experience. This will include relevant muscle contractions, a
  50.231 -     close up view of the stream from the cat's perspective, and most
  50.232 -     importantly, the imagined feeling of water entering the mouth.
  50.233 -
  50.234 -</li>
  50.235 -<li>The action is now easily identified as drinking by the sense of
  50.236 -     taste alone. The other senses (such as the tongue moving in and
  50.237 -     out) help to give plausibility to the simulated action. Note that
  50.238 -     the sense of vision, while critical in creating the simulation,
  50.239 -     is not critical for identifying the action from the simulation.
  50.240 -</li>
  50.241 -</ul>
  50.242 -
  50.243 -
  50.244 -<p>
  50.245 -   More generally, I expect imaginative systems to be particularly
  50.246 -   good at identifying embodied actions in videos.
  50.247 -</p>
  50.248 -</div>
  50.249 -</div>
  50.250 -
  50.251 -</div>
  50.252 -
  50.253 -<div id="outline-container-2" class="outline-2">
  50.254 -<h2 id="sec-2">Cortex</h2>
  50.255 -<div class="outline-text-2" id="text-2">
  50.256 -
  50.257 -
  50.258 -<p>
  50.259 -  The previous example involves liquids, the sense of taste, and
  50.260 -  imagining oneself as a cat. For this thesis I constrain myself to
  50.261 -  simpler, more easily digitizable senses and situations.
  50.262 -</p>
  50.263 -<p>
  50.264 -  My system, <code>Cortex</code> performs imagination in two different simplified
  50.265 -  worlds: <i>worm world</i> and <i>stick figure world</i>. In each of these
  50.266 -  worlds, entities capable of imagination recognize actions by
  50.267 -  simulating the experience from their own perspective, and then
  50.268 -  recognizing the action from a database of examples.
  50.269 -</p>
  50.270 -<p>
  50.271 -  In order to serve as a framework for experiments in imagination,
  50.272 -  <code>Cortex</code> requires simulated bodies, worlds, and senses like vision,
  50.273 -  hearing, touch, proprioception, etc.
  50.274 -</p>
  50.275 -
  50.276 -</div>
  50.277 -
  50.278 -<div id="outline-container-2-1" class="outline-3">
  50.279 -<h3 id="sec-2-1">A Video Game Engine takes care of some of the groundwork</h3>
  50.280 -<div class="outline-text-3" id="text-2-1">
  50.281 -
  50.282 -
  50.283 -<p>
  50.284 -   When it comes to simulation environments, the engines used to
  50.285 -   create the worlds in video games offer top-notch physics and
  50.286 -   graphics support. These engines also have limited support for
  50.287 -   creating cameras and rendering 3D sound, which can be repurposed
  50.288 -   for vision and hearing respectively. Physics collision detection
  50.289 -   can be expanded to create a sense of touch.
  50.290 -</p>
  50.291 -<p>   
  50.292 -   jMonkeyEngine3 is one such engine for creating video games in
  50.293 -   Java. It uses OpenGL to render to the screen and uses screengraphs
  50.294 -   to avoid drawing things that do not appear on the screen. It has an
  50.295 -   active community and several games in the pipeline. The engine was
  50.296 -   not built to serve any particular game but is instead meant to be
  50.297 -   used for any 3D game. I chose jMonkeyEngine3 it because it had the
  50.298 -   most features out of all the open projects I looked at, and because
  50.299 -   I could then write my code in Clojure, an implementation of LISP
  50.300 -   that runs on the JVM.
  50.301 -</p>
  50.302 -</div>
  50.303 -
  50.304 -</div>
  50.305 -
  50.306 -<div id="outline-container-2-2" class="outline-3">
  50.307 -<h3 id="sec-2-2"><code>CORTEX</code> Extends jMonkeyEngine3 to implement rich senses</h3>
  50.308 -<div class="outline-text-3" id="text-2-2">
  50.309 -
  50.310 -
  50.311 -<p>
  50.312 -   Using the game-making primitives provided by jMonkeyEngine3, I have
  50.313 -   constructed every major human sense except for smell and
  50.314 -   taste. <code>Cortex</code> also provides an interface for creating creatures
  50.315 -   in Blender, a 3D modeling environment, and then "rigging" the
  50.316 -   creatures with senses using 3D annotations in Blender. A creature
  50.317 -   can have any number of senses, and there can be any number of
  50.318 -   creatures in a simulation.
  50.319 -</p>
  50.320 -<p>   
  50.321 -   The senses available in <code>Cortex</code> are:
  50.322 -</p>
  50.323 -<ul>
  50.324 -<li><a href="../../cortex/html/vision.html">Vision</a>
  50.325 -</li>
  50.326 -<li><a href="../../cortex/html/hearing.html">Hearing</a>
  50.327 -</li>
  50.328 -<li><a href="../../cortex/html/touch.html">Touch</a>
  50.329 -</li>
  50.330 -<li><a href="../../cortex/html/proprioception.html">Proprioception</a>
  50.331 -</li>
  50.332 -<li><a href="../../cortex/html/movement.html">Muscle Tension</a>
  50.333 -</li>
  50.334 -</ul>
  50.335 -
  50.336 -
  50.337 -</div>
  50.338 -</div>
  50.339 -
  50.340 -</div>
  50.341 -
  50.342 -<div id="outline-container-3" class="outline-2">
  50.343 -<h2 id="sec-3">A roadmap for <code>Cortex</code> experiments</h2>
  50.344 -<div class="outline-text-2" id="text-3">
  50.345 -
  50.346 -
  50.347 -
  50.348 -</div>
  50.349 -
  50.350 -<div id="outline-container-3-1" class="outline-3">
  50.351 -<h3 id="sec-3-1">Worm World</h3>
  50.352 -<div class="outline-text-3" id="text-3-1">
  50.353 -
  50.354 -
  50.355 -<p>
  50.356 -   Worms in <code>Cortex</code> are segmented creatures which vary in length and
  50.357 -   number of segments, and have the senses of vision, proprioception,
  50.358 -   touch, and muscle tension.
  50.359 -</p>
  50.360 -
  50.361 -<div class="figure">
  50.362 -<p><img src="../images/finger-UV.png" width=755 alt="../images/finger-UV.png" /></p>
  50.363 -<p>This is the tactile-sensor-profile for the upper segment of a worm. It defines regions of high touch sensitivity (where there are many white pixels) and regions of low sensitivity (where white pixels are sparse).</p>
  50.364 -</div>
  50.365 -
  50.366 -
  50.367 -
  50.368 -
  50.369 -<div class="figure">
  50.370 -  <center>
  50.371 -    <video controls="controls" width="550">
  50.372 -      <source src="../video/worm-touch.ogg" type="video/ogg"
  50.373 -              preload="none" />
  50.374 -    </video>
  50.375 -    <br> <a href="http://youtu.be/RHx2wqzNVcU"> YouTube </a>
  50.376 -  </center>
  50.377 -  <p>The worm responds to touch.</p>
  50.378 -</div>
  50.379 -
  50.380 -<div class="figure">
  50.381 -  <center>
  50.382 -    <video controls="controls" width="550">
  50.383 -      <source src="../video/test-proprioception.ogg" type="video/ogg"
  50.384 -              preload="none" />
  50.385 -    </video>
  50.386 -    <br> <a href="http://youtu.be/JjdDmyM8b0w"> YouTube </a>
  50.387 -  </center>
  50.388 -  <p>Proprioception in a worm. The proprioceptive readout is
  50.389 -    in the upper left corner of the screen.</p>
  50.390 -</div>
  50.391 -
  50.392 -<p>
  50.393 -   A worm is trained in various actions such as sinusoidal movement,
  50.394 -   curling, flailing, and spinning by directly playing motor
  50.395 -   contractions while the worm "feels" the experience. These actions
  50.396 -   are recorded both as vectors of muscle tension, touch, and
  50.397 -   proprioceptive data, but also in higher level forms such as
  50.398 -   frequencies of the various contractions and a symbolic name for the
  50.399 -   action.
  50.400 -</p>
  50.401 -<p>
  50.402 -   Then, the worm watches a video of another worm performing one of
  50.403 -   the actions, and must judge which action was performed. Normally
  50.404 -   this would be an extremely difficult problem, but the worm is able
  50.405 -   to greatly diminish the search space through sympathetic
  50.406 -   imagination. First, it creates an imagined copy of its body which
  50.407 -   it observes from a third person point of view. Then for each frame
  50.408 -   of the video, it maneuvers its simulated body to be in registration
  50.409 -   with the worm depicted in the video. The physical constraints
  50.410 -   imposed by the physics simulation greatly decrease the number of
  50.411 -   poses that have to be tried, making the search feasible. As the
  50.412 -   imaginary worm moves, it generates imaginary muscle tension and
  50.413 -   proprioceptive sensations. The worm determines the action not by
  50.414 -   vision, but by matching the imagined proprioceptive data with
  50.415 -   previous examples.
  50.416 -</p>
  50.417 -<p>
  50.418 -   By using non-visual sensory data such as touch, the worms can also
  50.419 -   answer body related questions such as "did your head touch your
  50.420 -   tail?" and "did worm A touch worm B?"
  50.421 -</p>
  50.422 -<p>
  50.423 -   The proprioceptive information used for action identification is
  50.424 -   body-centric, so only the registration step is dependent on point
  50.425 -   of view, not the identification step. Registration is not specific
  50.426 -   to any particular action. Thus, action identification can be
  50.427 -   divided into a point-of-view dependent generic registration step,
  50.428 -   and a action-specific step that is body-centered and invariant to
  50.429 -   point of view.
  50.430 -</p>
  50.431 -</div>
  50.432 -
  50.433 -</div>
  50.434 -
  50.435 -<div id="outline-container-3-2" class="outline-3">
  50.436 -<h3 id="sec-3-2">Stick Figure World</h3>
  50.437 -<div class="outline-text-3" id="text-3-2">
  50.438 -
  50.439 -
  50.440 -<p>
  50.441 -   This environment is similar to Worm World, except the creatures are
  50.442 -   more complicated and the actions and questions more varied. It is
  50.443 -   an experiment to see how far imagination can go in interpreting
  50.444 -   actions.  
  50.445 -</p></div>
  50.446 -</div>
  50.447 -</div>
  50.448 -</div>
  50.449 -
  50.450 -<div id="postamble">
  50.451 -<p class="date">Date: 2013-11-07 04:21:29 EST</p>
  50.452 -<p class="author">Author: Robert McIntyre</p>
  50.453 -<p class="creator">Org version 7.7 with Emacs version 24</p>
  50.454 -<a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
  50.455 -
  50.456 -</div>
  50.457 -</body>
  50.458 -</html>
    51.1 --- a/thesis/org/first-chapter.org	Fri Mar 21 00:08:49 2014 -0400
    51.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.3 @@ -1,238 +0,0 @@
    51.4 -#+title: =CORTEX=
    51.5 -#+author: Robert McIntyre
    51.6 -#+email: rlm@mit.edu
    51.7 -#+description: Using embodied AI to facilitate Artificial Imagination.
    51.8 -#+keywords: AI, clojure, embodiment
    51.9 -#+SETUPFILE: ../../aurellem/org/setup.org
   51.10 -#+INCLUDE: ../../aurellem/org/level-0.org
   51.11 -#+babel: :mkdirp yes :noweb yes :exports both
   51.12 -#+OPTIONS: toc:nil, num:nil
   51.13 -
   51.14 -* Artificial Imagination
   51.15 -
   51.16 -  Imagine watching a video of someone skateboarding. When you watch
   51.17 -  the video, you can imagine yourself skateboarding, and your
   51.18 -  knowledge of the human body and its dynamics guides your
   51.19 -  interpretation of the scene. For example, even if the skateboarder
   51.20 -  is partially occluded, you can infer the positions of his arms and
   51.21 -  body from your own knowledge of how your body would be positioned if
   51.22 -  you were skateboarding. If the skateboarder suffers an accident, you
   51.23 -  wince in sympathy, imagining the pain your own body would experience
   51.24 -  if it were in the same situation. This empathy with other people
   51.25 -  guides our understanding of whatever they are doing because it is a
   51.26 -  powerful constraint on what is probable and possible. In order to
   51.27 -  make use of this powerful empathy constraint, I need a system that
   51.28 -  can generate and make sense of sensory data from the many different
   51.29 -  senses that humans possess. The two key proprieties of such a system
   51.30 -  are /embodiment/ and /imagination/.
   51.31 -
   51.32 -** What is imagination?
   51.33 -
   51.34 -   One kind of imagination is /sympathetic/ imagination: you imagine
   51.35 -   yourself in the position of something/someone you are
   51.36 -   observing. This type of imagination comes into play when you follow
   51.37 -   along visually when watching someone perform actions, or when you
   51.38 -   sympathetically grimace when someone hurts themselves. This type of
   51.39 -   imagination uses the constraints you have learned about your own
   51.40 -   body to highly constrain the possibilities in whatever you are
   51.41 -   seeing. It uses all your senses to including your senses of touch,
   51.42 -   proprioception, etc. Humans are flexible when it comes to "putting
   51.43 -   themselves in another's shoes," and can sympathetically understand
   51.44 -   not only other humans, but entities ranging from animals to cartoon
   51.45 -   characters to [[http://www.youtube.com/watch?v=0jz4HcwTQmU][single dots]] on a screen!
   51.46 -
   51.47 -   Another kind of imagination is /predictive/ imagination: you
   51.48 -   construct scenes in your mind that are not entirely related to
   51.49 -   whatever you are observing, but instead are predictions of the
   51.50 -   future or simply flights of fancy. You use this type of imagination
   51.51 -   to plan out multi-step actions, or play out dangerous situations in
   51.52 -   your mind so as to avoid messing them up in reality.
   51.53 -
   51.54 -   Of course, sympathetic and predictive imagination blend into each
   51.55 -   other and are not completely separate concepts. One dimension along
   51.56 -   which you can distinguish types of imagination is dependence on raw
   51.57 -   sense data. Sympathetic imagination is highly constrained by your
   51.58 -   senses, while predictive imagination can be more or less dependent
   51.59 -   on your senses depending on how far ahead you imagine. Daydreaming
   51.60 -   is an extreme form of predictive imagination that wanders through
   51.61 -   different possibilities without concern for whether they are
   51.62 -   related to whatever is happening in reality.
   51.63 -
   51.64 -   For this thesis, I will mostly focus on sympathetic imagination and
   51.65 -   the constraint it provides for understanding sensory data.
   51.66 -   
   51.67 -** What problems can imagination solve?
   51.68 -
   51.69 -   Consider a video of a cat drinking some water.
   51.70 -
   51.71 -   #+caption: A cat drinking some water. Identifying this action is beyond the state of the art for computers.
   51.72 -   #+ATTR_LaTeX: width=5cm
   51.73 -   [[../images/cat-drinking.jpg]]
   51.74 -
   51.75 -   It is currently impossible for any computer program to reliably
   51.76 -   label such an video as "drinking". I think humans are able to label
   51.77 -   such video as "drinking" because they imagine /themselves/ as the
   51.78 -   cat, and imagine putting their face up against a stream of water
   51.79 -   and sticking out their tongue. In that imagined world, they can
   51.80 -   feel the cool water hitting their tongue, and feel the water
   51.81 -   entering their body, and are able to recognize that /feeling/ as
   51.82 -   drinking. So, the label of the action is not really in the pixels
   51.83 -   of the image, but is found clearly in a simulation inspired by
   51.84 -   those pixels. An imaginative system, having been trained on
   51.85 -   drinking and non-drinking examples and learning that the most
   51.86 -   important component of drinking is the feeling of water sliding
   51.87 -   down one's throat, would analyze a video of a cat drinking in the
   51.88 -   following manner:
   51.89 -   
   51.90 -   - Create a physical model of the video by putting a "fuzzy" model
   51.91 -     of its own body in place of the cat. Also, create a simulation of
   51.92 -     the stream of water.
   51.93 -
   51.94 -   - Play out this simulated scene and generate imagined sensory
   51.95 -     experience. This will include relevant muscle contractions, a
   51.96 -     close up view of the stream from the cat's perspective, and most
   51.97 -     importantly, the imagined feeling of water entering the mouth.
   51.98 -
   51.99 -   - The action is now easily identified as drinking by the sense of
  51.100 -     taste alone. The other senses (such as the tongue moving in and
  51.101 -     out) help to give plausibility to the simulated action. Note that
  51.102 -     the sense of vision, while critical in creating the simulation,
  51.103 -     is not critical for identifying the action from the simulation.
  51.104 -
  51.105 -   More generally, I expect imaginative systems to be particularly
  51.106 -   good at identifying embodied actions in videos.
  51.107 -
  51.108 -* Cortex
  51.109 -
  51.110 -  The previous example involves liquids, the sense of taste, and
  51.111 -  imagining oneself as a cat. For this thesis I constrain myself to
  51.112 -  simpler, more easily digitizable senses and situations.
  51.113 -
  51.114 -  My system, =CORTEX= performs imagination in two different simplified
  51.115 -  worlds: /worm world/ and /stick-figure world/. In each of these
  51.116 -  worlds, entities capable of imagination recognize actions by
  51.117 -  simulating the experience from their own perspective, and then
  51.118 -  recognizing the action from a database of examples.
  51.119 -
  51.120 -  In order to serve as a framework for experiments in imagination,
  51.121 -  =CORTEX= requires simulated bodies, worlds, and senses like vision,
  51.122 -  hearing, touch, proprioception, etc.
  51.123 -
  51.124 -** A Video Game Engine takes care of some of the groundwork
  51.125 -
  51.126 -   When it comes to simulation environments, the engines used to
  51.127 -   create the worlds in video games offer top-notch physics and
  51.128 -   graphics support. These engines also have limited support for
  51.129 -   creating cameras and rendering 3D sound, which can be repurposed
  51.130 -   for vision and hearing respectively. Physics collision detection
  51.131 -   can be expanded to create a sense of touch.
  51.132 -   
  51.133 -   jMonkeyEngine3 is one such engine for creating video games in
  51.134 -   Java. It uses OpenGL to render to the screen and uses screengraphs
  51.135 -   to avoid drawing things that do not appear on the screen. It has an
  51.136 -   active community and several games in the pipeline. The engine was
  51.137 -   not built to serve any particular game but is instead meant to be
  51.138 -   used for any 3D game. I chose jMonkeyEngine3 it because it had the
  51.139 -   most features out of all the open projects I looked at, and because
  51.140 -   I could then write my code in Clojure, an implementation of LISP
  51.141 -   that runs on the JVM.
  51.142 -
  51.143 -** =CORTEX= Extends jMonkeyEngine3 to implement rich senses
  51.144 -
  51.145 -   Using the game-making primitives provided by jMonkeyEngine3, I have
  51.146 -   constructed every major human sense except for smell and
  51.147 -   taste. =CORTEX= also provides an interface for creating creatures
  51.148 -   in Blender, a 3D modeling environment, and then "rigging" the
  51.149 -   creatures with senses using 3D annotations in Blender. A creature
  51.150 -   can have any number of senses, and there can be any number of
  51.151 -   creatures in a simulation.
  51.152 -   
  51.153 -   The senses available in =CORTEX= are:
  51.154 -
  51.155 -   - [[../../cortex/html/vision.html][Vision]]
  51.156 -   - [[../../cortex/html/hearing.html][Hearing]]
  51.157 -   - [[../../cortex/html/touch.html][Touch]]
  51.158 -   - [[../../cortex/html/proprioception.html][Proprioception]]
  51.159 -   - [[../../cortex/html/movement.html][Muscle Tension]]
  51.160 -
  51.161 -* A roadmap for =CORTEX= experiments
  51.162 -
  51.163 -** Worm World
  51.164 -
  51.165 -   Worms in =CORTEX= are segmented creatures which vary in length and
  51.166 -   number of segments, and have the senses of vision, proprioception,
  51.167 -   touch, and muscle tension.
  51.168 -
  51.169 -#+attr_html: width=755
  51.170 -#+caption: This is the tactile-sensor-profile for the upper segment of a worm. It defines regions of high touch sensitivity (where there are many white pixels) and regions of low sensitivity (where white pixels are sparse).
  51.171 -[[../images/finger-UV.png]]
  51.172 -
  51.173 -
  51.174 -#+begin_html
  51.175 -<div class="figure">
  51.176 -  <center>
  51.177 -    <video controls="controls" width="550">
  51.178 -      <source src="../video/worm-touch.ogg" type="video/ogg"
  51.179 -	      preload="none" />
  51.180 -    </video>
  51.181 -    <br> <a href="http://youtu.be/RHx2wqzNVcU"> YouTube </a>
  51.182 -  </center>
  51.183 -  <p>The worm responds to touch.</p>
  51.184 -</div>
  51.185 -#+end_html
  51.186 -
  51.187 -#+begin_html
  51.188 -<div class="figure">
  51.189 -  <center>
  51.190 -    <video controls="controls" width="550">
  51.191 -      <source src="../video/test-proprioception.ogg" type="video/ogg"
  51.192 -	      preload="none" />
  51.193 -    </video>
  51.194 -    <br> <a href="http://youtu.be/JjdDmyM8b0w"> YouTube </a>
  51.195 -  </center>
  51.196 -  <p>Proprioception in a worm. The proprioceptive readout is
  51.197 -    in the upper left corner of the screen.</p>
  51.198 -</div>
  51.199 -#+end_html
  51.200 -
  51.201 -   A worm is trained in various actions such as sinusoidal movement,
  51.202 -   curling, flailing, and spinning by directly playing motor
  51.203 -   contractions while the worm "feels" the experience. These actions
  51.204 -   are recorded both as vectors of muscle tension, touch, and
  51.205 -   proprioceptive data, but also in higher level forms such as
  51.206 -   frequencies of the various contractions and a symbolic name for the
  51.207 -   action.
  51.208 -
  51.209 -   Then, the worm watches a video of another worm performing one of
  51.210 -   the actions, and must judge which action was performed. Normally
  51.211 -   this would be an extremely difficult problem, but the worm is able
  51.212 -   to greatly diminish the search space through sympathetic
  51.213 -   imagination. First, it creates an imagined copy of its body which
  51.214 -   it observes from a third person point of view. Then for each frame
  51.215 -   of the video, it maneuvers its simulated body to be in registration
  51.216 -   with the worm depicted in the video. The physical constraints
  51.217 -   imposed by the physics simulation greatly decrease the number of
  51.218 -   poses that have to be tried, making the search feasible. As the
  51.219 -   imaginary worm moves, it generates imaginary muscle tension and
  51.220 -   proprioceptive sensations. The worm determines the action not by
  51.221 -   vision, but by matching the imagined proprioceptive data with
  51.222 -   previous examples.
  51.223 -
  51.224 -   By using non-visual sensory data such as touch, the worms can also
  51.225 -   answer body related questions such as "did your head touch your
  51.226 -   tail?" and "did worm A touch worm B?"
  51.227 -
  51.228 -   The proprioceptive information used for action identification is
  51.229 -   body-centric, so only the registration step is dependent on point
  51.230 -   of view, not the identification step. Registration is not specific
  51.231 -   to any particular action. Thus, action identification can be
  51.232 -   divided into a point-of-view dependent generic registration step,
  51.233 -   and a action-specific step that is body-centered and invariant to
  51.234 -   point of view.
  51.235 -
  51.236 -** Stick Figure World
  51.237 -
  51.238 -   This environment is similar to Worm World, except the creatures are
  51.239 -   more complicated and the actions and questions more varied. It is
  51.240 -   an experiment to see how far imagination can go in interpreting
  51.241 -   actions.  
    52.1 --- a/thesis/org/roadmap.org	Fri Mar 21 00:08:49 2014 -0400
    52.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.3 @@ -1,220 +0,0 @@
    52.4 -In order for this to be a reasonable thesis that I can be proud of,
    52.5 -what are the /minimum/ number of things I need to get done?
    52.6 -
    52.7 -
    52.8 -* worm OR hand registration
    52.9 -  - training from a few examples (2 to start out)
   52.10 -  - aligning the body with the scene
   52.11 -  - generating sensory data
   52.12 -  - matching previous labeled examples using dot-products or some
   52.13 -    other basic thing
   52.14 -  - showing that it works with different views
   52.15 -
   52.16 -* first draft
   52.17 -  - draft of thesis without bibliography or formatting
   52.18 -  - should have basic experiment and have full description of
   52.19 -    framework with code
   52.20 -  - review with Winston
   52.21 -  
   52.22 -* final draft
   52.23 -  - implement stretch goals from Winston if possible
   52.24 -  - complete final formatting and submit
   52.25 -
   52.26 -* CORTEX
   52.27 -  DEADLINE: <2014-05-09 Fri>
   52.28 -  SHIT THAT'S IN 67 DAYS!!!
   52.29 -
   52.30 -** program simple feature matching code for the worm's segments
   52.31 -
   52.32 -Subgoals:
   52.33 -*** DONE Get cortex working again, run tests, no jmonkeyengine updates
   52.34 -    CLOSED: [2014-03-03 Mon 22:07] SCHEDULED: <2014-03-03 Mon>
   52.35 -*** DONE get blender working again
   52.36 -    CLOSED: [2014-03-03 Mon 22:43] SCHEDULED: <2014-03-03 Mon>
   52.37 -*** DONE make sparce touch worm segment in blender
   52.38 -    CLOSED: [2014-03-03 Mon 23:16] SCHEDULED: <2014-03-03 Mon>
   52.39 -    CLOCK: [2014-03-03 Mon 22:44]--[2014-03-03 Mon 23:16] =>  0:32
   52.40 -*** DONE make multi-segment touch worm with touch sensors and display
   52.41 -    CLOSED: [2014-03-03 Mon 23:54] SCHEDULED: <2014-03-03 Mon>
   52.42 -
   52.43 -*** DONE Make a worm wiggle and curl
   52.44 -    CLOSED: [2014-03-04 Tue 23:03] SCHEDULED: <2014-03-04 Tue>
   52.45 -
   52.46 -
   52.47 -** First draft
   52.48 -
   52.49 -Subgoals:
   52.50 -*** Writeup new worm experiments.
   52.51 -*** Triage implementation code and get it into chapter form.
   52.52 -
   52.53 -
   52.54 -
   52.55 - 
   52.56 -
   52.57 -** for today
   52.58 -
   52.59 -- guided worm :: control the worm with the keyboard. Useful for
   52.60 -                 testing the body-centered recog scripts, and for
   52.61 -                 preparing a cool demo video.
   52.62 -
   52.63 -- body-centered recognition :: detect actions using hard coded
   52.64 -     body-centered scripts. 
   52.65 -
   52.66 -- cool demo video of the worm being moved and recognizing things ::
   52.67 -     will be a neat part of the thesis.
   52.68 -
   52.69 -- thesis export :: refactoring and organization of code so that it
   52.70 -                   spits out a thesis in addition to the web page.
   52.71 -
   52.72 -- video alignment :: analyze the frames of a video in order to align
   52.73 -     the worm. Requires body-centered recognition. Can "cheat".
   52.74 -
   52.75 -- smoother actions :: use debugging controls to directly influence the
   52.76 -     demo actions, and to generate recoginition procedures.
   52.77 -
   52.78 -- degenerate video demonstration :: show the system recognizing a
   52.79 -     curled worm from dead on. Crowning achievement of thesis.
   52.80 -
   52.81 -** Ordered from easiest to hardest
   52.82 -
   52.83 -Just report the positions of everything. I don't think that this
   52.84 -necessairly shows anything usefull.
   52.85 -
   52.86 -Worm-segment vision -- you initialize a view of the worm, but instead
   52.87 -of pixels you use labels via ray tracing. Has the advantage of still
   52.88 -allowing for visual occlusion, but reliably identifies the objects,
   52.89 -even without rainbow coloring. You can code this as an image. 
   52.90 -
   52.91 -Same as above, except just with worm/non-worm labels.
   52.92 -
   52.93 -Color code each worm segment and then recognize them using blob
   52.94 -detectors. Then you solve for the perspective and the action
   52.95 -simultaneously.
   52.96 -
   52.97 -The entire worm can be colored the same, high contrast color against a
   52.98 -nearly black background.
   52.99 -
  52.100 -"Rooted" vision. You give the exact coordinates of ONE piece of the
  52.101 -worm, but the algorithm figures out the rest.
  52.102 -
  52.103 -More rooted vision -- start off the entire worm with one posistion.
  52.104 -
  52.105 -The right way to do alignment is to use motion over multiple frames to
  52.106 -snap individual pieces of the model into place sharing and
  52.107 -propragating the individual alignments over the whole model. We also
  52.108 -want to limit the alignment search to just those actions we are
  52.109 -prepared to identify. This might mean that I need some small "micro
  52.110 -actions" such as the individual movements of the worm pieces.
  52.111 -
  52.112 -Get just the centers of each segment projected onto the imaging
  52.113 -plane. (best so far).
  52.114 -
  52.115 -
  52.116 -Repertoire of actions  +  video frames -->
  52.117 -   directed multi-frame-search alg
  52.118 -
  52.119 -
  52.120 -
  52.121 -
  52.122 -
  52.123 -
  52.124 -!! Could also have a bounding box around the worm provided by
  52.125 -filtering the worm/non-worm render, and use bbbgs. As a bonus, I get
  52.126 -to include bbbgs in my thesis! Could finally do that recursive things
  52.127 -where I make bounding boxes be those things that give results that
  52.128 -give good bounding boxes. If I did this I could use a disruptive
  52.129 -pattern on the worm.
  52.130 -
  52.131 -Re imagining using default textures is very simple for this system,
  52.132 -but hard for others.
  52.133 -
  52.134 -
  52.135 -Want to demonstrate, at minimum, alignment of some model of the worm
  52.136 -to the video, and a lookup of the action by simulated perception.
  52.137 -
  52.138 -note: the purple/white points is a very beautiful texture, because
  52.139 -when it moves slightly, the white dots look like they're
  52.140 -twinkling. Would look even better if it was a darker purple. Also
  52.141 -would look better more spread out.
  52.142 -
  52.143 -
  52.144 -embed assumption of one frame of view, search by moving around in
  52.145 -simulated world.
  52.146 -
  52.147 -Allowed to limit search by setting limits to a hemisphere around the
  52.148 -imagined worm! This limits scale also.
  52.149 -
  52.150 -
  52.151 -
  52.152 -
  52.153 -
  52.154 -!! Limited search with worm/non-worm rendering. 
  52.155 -How much inverse kinematics do we have to do?
  52.156 -What about cached (allowed state-space) paths, derived from labeled
  52.157 -training. You have to lead from one to another.
  52.158 -
  52.159 -What about initial state? Could start the input videos at a specific
  52.160 -state, then just match that explicitly.
  52.161 -
  52.162 -!! The training doesn't have to be labeled -- you can just move around
  52.163 -for a while!!
  52.164 -
  52.165 -!! Limited search with motion based alignment.
  52.166 -
  52.167 -
  52.168 -
  52.169 -
  52.170 -"play arounds" can establish a chain of linked sensoriums. Future
  52.171 -matches must fall into one of the already experienced things, and once
  52.172 -they do, it greatly limits the things that are possible in the future.
  52.173 -
  52.174 -
  52.175 -frame differences help to detect muscle exertion.
  52.176 -
  52.177 -Can try to match on a few "representative" frames. Can also just have
  52.178 -a few "bodies" in various states which we try to match.
  52.179 -
  52.180 -
  52.181 -
  52.182 -Paths through state-space have the exact same signature as
  52.183 -simulation. BUT, these can be searched in parallel and don't interfere
  52.184 -with each other.
  52.185 -
  52.186 -
  52.187 -
  52.188 -
  52.189 -** Final stretch up to First Draft
  52.190 -
  52.191 -*** DONE complete debug control of worm
  52.192 -    CLOSED: [2014-03-17 Mon 17:29] SCHEDULED: <2014-03-17 Mon>
  52.193 -    CLOCK: [2014-03-17 Mon 14:01]--[2014-03-17 Mon 17:29] =>  3:28
  52.194 -*** DONE add phi-space output to debug control
  52.195 -    CLOSED: [2014-03-17 Mon 17:42] SCHEDULED: <2014-03-17 Mon>
  52.196 -    CLOCK: [2014-03-17 Mon 17:31]--[2014-03-17 Mon 17:42] =>  0:11
  52.197 -
  52.198 -*** DONE complete automatic touch partitioning
  52.199 -    CLOSED: [2014-03-18 Tue 21:43] SCHEDULED: <2014-03-18 Tue>
  52.200 -*** DONE complete cyclic predicate
  52.201 -    CLOSED: [2014-03-19 Wed 16:34] SCHEDULED: <2014-03-18 Tue>
  52.202 -    CLOCK: [2014-03-19 Wed 13:16]--[2014-03-19 Wed 16:34] =>  3:18
  52.203 -*** DONE complete three phi-stream action predicatates; test them with debug control
  52.204 -    CLOSED: [2014-03-19 Wed 16:35] SCHEDULED: <2014-03-17 Mon>
  52.205 -    CLOCK: [2014-03-18 Tue 18:36]--[2014-03-18 Tue 21:43] =>  3:07
  52.206 -    CLOCK: [2014-03-18 Tue 18:34]--[2014-03-18 Tue 18:36] =>  0:02
  52.207 -    CLOCK: [2014-03-17 Mon 19:19]--[2014-03-17 Mon 21:19] =>  2:00
  52.208 -*** DONE build an automatic "do all the things" sequence.
  52.209 -    CLOSED: [2014-03-19 Wed 16:55] SCHEDULED: <2014-03-19 Wed>
  52.210 -    CLOCK: [2014-03-19 Wed 16:53]--[2014-03-19 Wed 16:55] =>  0:02
  52.211 -*** DONE implement proprioception based movement lookup in phi-space
  52.212 -    CLOSED: [2014-03-19 Wed 22:04] SCHEDULED: <2014-03-19 Wed>
  52.213 -    CLOCK: [2014-03-19 Wed 19:32]--[2014-03-19 Wed 22:04] =>  2:32
  52.214 -*** DONE make proprioception reference phi-space indexes
  52.215 -    CLOSED: [2014-03-19 Wed 22:47] SCHEDULED: <2014-03-19 Wed>
  52.216 -    CLOCK: [2014-03-19 Wed 22:07]
  52.217 -
  52.218 -
  52.219 -*** DONE create test videos, also record positions of worm segments
  52.220 -    CLOSED: [2014-03-20 Thu 22:02] SCHEDULED: <2014-03-19 Wed>
  52.221 -
  52.222 -*** TODO Collect intro, worm-learn and cortex creation into draft thesis. 
  52.223 -    
    53.1 Binary file thesis/thesis.pdf has changed
    54.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.2 +++ b/thesis/thesis.tex	Fri Mar 21 01:17:41 2014 -0400
    54.3 @@ -0,0 +1,46 @@
    54.4 +% -*- Mode:TeX -*-
    54.5 +
    54.6 +%% IMPORTANT: The official thesis specifications are available at:
    54.7 +%%            http://libraries.mit.edu/archives/thesis-specs/
    54.8 +%%
    54.9 +%%            Please verify your thesis' formatting and copyright
   54.10 +%%            assignment before submission.  If you notice any
   54.11 +%%            discrepancies between these templates and the 
   54.12 +%%            MIT Libraries' specs, please let us know
   54.13 +%%            by e-mailing thesis@mit.edu
   54.14 +
   54.15 +%% The documentclass options along with the pagestyle can be used to generate
   54.16 +%% a technical report, a draft copy, or a regular thesis.  You may need to
   54.17 +%% re-specify the pagestyle after you \include  cover.tex.  For more
   54.18 +%% information, see the first few lines of mitthesis.cls. 
   54.19 +
   54.20 +%\documentclass[12pt,vi,twoside]{mitthesis}
   54.21 +%%
   54.22 +%%  If you want your thesis copyright to you instead of MIT, use the
   54.23 +%%  ``vi'' option, as above.
   54.24 +%%
   54.25 +%\documentclass[12pt,twoside,leftblank]{mitthesis}
   54.26 +%%
   54.27 +%% If you want blank pages before new chapters to be labelled ``This
   54.28 +%% Page Intentionally Left Blank'', use the ``leftblank'' option, as
   54.29 +%% above. 
   54.30 +
   54.31 +\documentclass[12pt,twoside]{mitthesis}
   54.32 +%\usepackage{lgrind}
   54.33 +\pagestyle{plain}
   54.34 +
   54.35 +\begin{document}
   54.36 +
   54.37 +\include{cover}
   54.38 +% Some departments (e.g. 5) require an additional signature page.  See
   54.39 +% signature.tex for more information and uncomment the following line if
   54.40 +% applicable.
   54.41 +% \include{signature}
   54.42 +\pagestyle{plain}
   54.43 +\include{contents}
   54.44 +\include{cortex}
   54.45 +\include{chap2}
   54.46 +\appendix
   54.47 +\include{biblio}
   54.48 +\end{document}
   54.49 +
    55.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.2 +++ b/thesis/weave-thesis.sh	Fri Mar 21 01:17:41 2014 -0400
    55.3 @@ -0,0 +1,15 @@
    55.4 +#!/bin/sh
    55.5 +
    55.6 +emacs  \
    55.7 +-l /home/r/config/emacs/clojure-init.el \
    55.8 +-l /home/r/config/emacs/org-init.el \
    55.9 +-l /home/r/config/emacs/thesis-color.el \
   55.10 +--batch \
   55.11 +--eval "
   55.12 +(progn
   55.13 +  (find-file \"/home/r/proj/cortex/thesis/cortex.org\")
   55.14 +  (org-latex-export-to-latex nil nil nil t nil))" \
   55.15 +\
   55.16 +2>&1 
   55.17 +
   55.18 +rm cortex.tex~
   55.19 \ No newline at end of file