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