Initial draft of proposal.txt. Placeholders for missing sectoins.
This commit is contained in:
BIN
proposal/proposal.pdf
Executable file
BIN
proposal/proposal.pdf
Executable file
Binary file not shown.
143
proposal/proposal.tex
Executable file
143
proposal/proposal.tex
Executable file
@@ -0,0 +1,143 @@
|
|||||||
|
\documentclass[11pt]{article}
|
||||||
|
|
||||||
|
\usepackage{setspace}
|
||||||
|
\usepackage[margin=1in]{geometry}
|
||||||
|
|
||||||
|
\usepackage{tabularx}
|
||||||
|
|
||||||
|
\usepackage{tocloft}
|
||||||
|
\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}}
|
||||||
|
|
||||||
|
\usepackage{txfonts}
|
||||||
|
|
||||||
|
%% END PREAMBLE
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
%\doublespacing
|
||||||
|
\setlength{\parindent}{2em}
|
||||||
|
|
||||||
|
\begin{titlepage}
|
||||||
|
\clearpage
|
||||||
|
\thispagestyle{empty}
|
||||||
|
|
||||||
|
Letter of transmittal goes HEER
|
||||||
|
|
||||||
|
\end{titlepage}
|
||||||
|
|
||||||
|
\begin{titlepage}
|
||||||
|
\clearpage
|
||||||
|
\thispagestyle{empty}
|
||||||
|
|
||||||
|
This is a title page
|
||||||
|
|
||||||
|
Included is an abstract
|
||||||
|
\end{titlepage}
|
||||||
|
|
||||||
|
\pagenumbering{roman}
|
||||||
|
\tableofcontents
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
\pagenumbering{arabic}
|
||||||
|
|
||||||
|
\section{Introduction}
|
||||||
|
I'd like to introduce some things.
|
||||||
|
|
||||||
|
\section{Literature Review}
|
||||||
|
\par
|
||||||
|
Here we will discuss projects similar to ours, as well as technology
|
||||||
|
we plan to use for our project.
|
||||||
|
\begin{itemize}
|
||||||
|
\item Building an In-Browser JavaScript VM and Debugger Using Generators\\
|
||||||
|
http://amasad.me/2014/01/06/building-an-in-browser-javascript-vm-and-debugger-using-generators/
|
||||||
|
\par
|
||||||
|
In this blog post, Amjad Masad describes how he implemented
|
||||||
|
debug.js, a JavaScript debugger running inside the web
|
||||||
|
browser. Since we wish to implement a c0 debugger running inside the
|
||||||
|
web browser, Masad's notes seem to be relevant. Specifically, this
|
||||||
|
post discusses the architecture of debug.js, as well as various
|
||||||
|
challenges Masad faced in developing it. Debug.js was designed in
|
||||||
|
two separate parts: a virtual machine and a debugger. The virtual
|
||||||
|
machine handled the task of evaluating the JavaScript program being
|
||||||
|
debugged, adding support for stopping, starting, and analyzing the
|
||||||
|
program. The debugger was the visual interface to the virtual
|
||||||
|
machine, allowing users to control the virtual machine and see its
|
||||||
|
output.
|
||||||
|
\par
|
||||||
|
Masad also discusses challenges he overcame while writing
|
||||||
|
debug.js. These included being able to step line-by-line through a
|
||||||
|
program, keeping track of a call stack, handling errors and
|
||||||
|
exceptions, implementing native APIs, and dealing with events. While
|
||||||
|
many of the details will be different when working with c0, we must
|
||||||
|
still consider all of these challenges in developing our project.
|
||||||
|
|
||||||
|
\item The Architecture of Open Source Applications (Volume 2): Processing.js\\
|
||||||
|
http://www.aosabook.org/en/pjs.html
|
||||||
|
\par
|
||||||
|
In Chapter 17 of Mike Kamermans' book The Architecture of Open
|
||||||
|
Source Applications, he discusses the design of
|
||||||
|
Processing.js. Processing is a Java-based programming language
|
||||||
|
designed to help teach computer programming in a visual
|
||||||
|
context. Processing.js is a project designed to run Processing
|
||||||
|
programs in the web browser using only JavaScript. This was done by
|
||||||
|
writing a own Java-to-JavaScript compiler, and running the resulting
|
||||||
|
code attached to a HTML canvas. Along the way, the developers ran
|
||||||
|
into several different challenges, mostly due to differences between
|
||||||
|
the Java and JavaScript languages. The largest difference between
|
||||||
|
the languages was that JavaScript programs do not get their own
|
||||||
|
thread; the browser freezes if a JavaScript program tries to run for
|
||||||
|
too long. We must consider this issue among others for our project.
|
||||||
|
|
||||||
|
\item Node.js Documentation\\
|
||||||
|
http://nodejs.org/documentation/
|
||||||
|
\par
|
||||||
|
This is the documentation for the node.js platform. We plan to use
|
||||||
|
node.js to write the server-side code for our project. We believe
|
||||||
|
that node is a good fit for our project since we are writing
|
||||||
|
JavaScript for the client side of our code, so this will let us work
|
||||||
|
in the same language on the server and client side. Also, we can
|
||||||
|
make use of the existing cc0 compiler to translate c0 source code to
|
||||||
|
the bytecode our virtual machine will run. This is the same compiler
|
||||||
|
used in 15-122, and integrating it with our server will make it
|
||||||
|
feasible to run actual c0 source code.
|
||||||
|
\end{itemize}
|
||||||
|
\section{Plan}
|
||||||
|
\par
|
||||||
|
Our goal is to build a web application that can debug c0 code.
|
||||||
|
The user will type in or upload c0 source files.
|
||||||
|
Once this is done, these files will be transferred to our server,
|
||||||
|
where the cc0 compiler will be used to
|
||||||
|
generate bytecode corresponding to the user's source code.
|
||||||
|
This bytecode will be sent back to the user's web browser,
|
||||||
|
where we will be running a c0 virtual machine.
|
||||||
|
The user will be able to control this virtual machine as it executes their code.
|
||||||
|
This will give the user the ability to run their code line-by-line,
|
||||||
|
to set breakpoints, view stack traces, and see the values of variables.
|
||||||
|
By providing access to all this information,
|
||||||
|
we hope to make it easier for users to write and debug c0 programs.
|
||||||
|
\par
|
||||||
|
For version control, we will use a git repository hosted on GitHub.
|
||||||
|
We will use a Gantt chart, shown later in this proposal, to stay on schedule.
|
||||||
|
|
||||||
|
|
||||||
|
\section{Benefits}
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Write c0 on cement
|
||||||
|
\item Write c0.js
|
||||||
|
\item Write cQuery
|
||||||
|
\item ???????
|
||||||
|
\item Profit!
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
\section{Approach}
|
||||||
|
Use JavaScript and c0.
|
||||||
|
|
||||||
|
\section{Evaluation Criteria}
|
||||||
|
Can you c it working, or not?
|
||||||
|
|
||||||
|
\section{Qualifications of Team Members}
|
||||||
|
We are all c0 experts.
|
||||||
|
|
||||||
|
\section{Sources Cited}
|
||||||
|
TBD
|
||||||
|
|
||||||
|
\end{document}
|
||||||
Reference in New Issue
Block a user