Mercurial > cortex
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 »"/> 21.103 + </form> 21.104 + --> 21.105 + </div> 21.106 + 21.107 + <h1>aurellem <em>☉</em></h1> 21.108 + <ul class="nav"> 21.109 + <li><a href="/">read the blog »</a></li> 21.110 + <!-- li><a href="#">learn about us »</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 »"/> 50.103 - </form> 50.104 - --> 50.105 - </div> 50.106 - 50.107 - <h1>aurellem <em>☉</em></h1> 50.108 - <ul class="nav"> 50.109 - <li><a href="/">read the blog »</a></li> 50.110 - <!-- li><a href="#">learn about us »</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