diff --git a/app.js b/app.js index 15e2251..8393d68 100644 --- a/app.js +++ b/app.js @@ -11,7 +11,7 @@ app.configure(function() { app.set('view engine', 'jade'); app.use(express.logger('dev')); app.use(express.json()); - + app.use(express.static(path.join(__dirname, 'public'))); //debug error handler diff --git a/progress_report/lit_review.fdb_latexmk b/progress_report/lit_review.fdb_latexmk new file mode 100644 index 0000000..bbd7436 --- /dev/null +++ b/progress_report/lit_review.fdb_latexmk @@ -0,0 +1,10 @@ +# Fdb version 3 +["latex"] 1429036983 "lit_review.tex" "lit_review.dvi" "lit_review" 1429036987 + "/usr/local/texlive/2014/texmf-dist/web2c/texmf.cnf" 1398200874 31722 4f52421e59a4b9e910cf18e64c1f2b4a "" + "/usr/local/texlive/2014/texmf-var/web2c/pdftex/latex.fmt" 1401025988 3831950 412798929e0196806f9f91e131a01806 "" + "/usr/local/texlive/2014/texmf.cnf" 1401025936 577 a59edbde8d3a8c549d0eeaab1739e2ff "" + "lit_review.aux" 1429036983 8 a94a2480d3289e625eea47cd1b285758 "" + "lit_review.tex" 1429035932 1602 8c64955909e149f1edf1ceb643d93c17 "" + (generated) + "lit_review.dvi" + "lit_review.log" diff --git a/progress_report/lit_review.fls b/progress_report/lit_review.fls new file mode 100644 index 0000000..4d6c145 --- /dev/null +++ b/progress_report/lit_review.fls @@ -0,0 +1,6 @@ +PWD /Users/shyam/Dropbox/cdb/progress_report +INPUT /usr/local/texlive/2014/texmf.cnf +INPUT /usr/local/texlive/2014/texmf-dist/web2c/texmf.cnf +INPUT /usr/local/texlive/2014/texmf-var/web2c/pdftex/latex.fmt +INPUT lit_review.tex +OUTPUT lit_review.log diff --git a/progress_report/lit_review.tex b/progress_report/lit_review.tex index 7f5ed3a..f391162 100755 --- a/progress_report/lit_review.tex +++ b/progress_report/lit_review.tex @@ -1,5 +1,5 @@ \section{Literature Review} -Since the start of our project, we have found multiple new information sources; +Since the start of our project, we have found multiple new information sources; the following are the most important ones. \begin{itemize} \item Nodeunit documentation \\ @@ -7,7 +7,7 @@ https://github.com/caolan/nodeunit \\ % It might be better to put the URLs in the "References" section and add a [\ref{}] here We are using nodeunit to test our virtual machine. Since the c0 bytecode has many different opcodes that it uses, it is very easy -for mistakes in the virtual machine to go unnoticed. +for mistakes in the virtual machine to go unnoticed. To prevent this, we are using the nodeunit library to write unit tests for our code. This has already helped us to find and solve multiple bugs in the VM, and having @@ -21,8 +21,8 @@ It has been an important reference while developing a JavaScript version of the c0 virtual machine. \end{itemize} So far, the most important thing we have learned is that good unit tests are -vital for developing this sort of project. Without unit tests that verify +vital for developing this sort of project. Without unit tests that verify each opcode used by the virtual machine, many bugs would have gone unnoticed, causing problems later down the line. If we only found these bugs by using the frontend, they would have been much harder to debug, as there would have -been much more code to work through. \ No newline at end of file +been much more code to work through. diff --git a/progress_report/new-gantt.png b/progress_report/new-gantt.png new file mode 100644 index 0000000..735dbfc Binary files /dev/null and b/progress_report/new-gantt.png differ diff --git a/progress_report/old-gantt.jpg b/progress_report/old-gantt.jpg new file mode 100644 index 0000000..e68ac3d Binary files /dev/null and b/progress_report/old-gantt.jpg differ diff --git a/progress_report/overview.fdb_latexmk b/progress_report/overview.fdb_latexmk new file mode 100644 index 0000000..20d093f --- /dev/null +++ b/progress_report/overview.fdb_latexmk @@ -0,0 +1,10 @@ +# Fdb version 3 +["latex"] 1429036987 "overview.tex" "overview.dvi" "overview" 1429036988 + "/usr/local/texlive/2014/texmf-dist/web2c/texmf.cnf" 1398200874 31722 4f52421e59a4b9e910cf18e64c1f2b4a "" + "/usr/local/texlive/2014/texmf-var/web2c/pdftex/latex.fmt" 1401025988 3831950 412798929e0196806f9f91e131a01806 "" + "/usr/local/texlive/2014/texmf.cnf" 1401025936 577 a59edbde8d3a8c549d0eeaab1739e2ff "" + "overview.aux" 1429036987 8 a94a2480d3289e625eea47cd1b285758 "" + "overview.tex" 1429036311 1357 cfaf2a8de5eaf66d6fce726acdb307d4 "" + (generated) + "overview.log" + "overview.dvi" diff --git a/progress_report/overview.fls b/progress_report/overview.fls new file mode 100644 index 0000000..206f63d --- /dev/null +++ b/progress_report/overview.fls @@ -0,0 +1,6 @@ +PWD /Users/shyam/Dropbox/cdb/progress_report +INPUT /usr/local/texlive/2014/texmf.cnf +INPUT /usr/local/texlive/2014/texmf-dist/web2c/texmf.cnf +INPUT /usr/local/texlive/2014/texmf-var/web2c/pdftex/latex.fmt +INPUT overview.tex +OUTPUT overview.log diff --git a/progress_report/overview.tex b/progress_report/overview.tex new file mode 100644 index 0000000..9b55831 --- /dev/null +++ b/progress_report/overview.tex @@ -0,0 +1,22 @@ +\section{Overview} +\subsection{Purpose of the Report} +This report serves as an update to the reader on the progress the c0db team has +made on the C0 Debugger during the first month of work. The report will detail +what has been accomplished so far, what is in progress, what is planned for the +future, and any changes that will be made to the original plan of action. In +addition, the report will detail new literature that has been gathered and +used. +\subsection{Purpose of the Project} +The purpose of this project is to build a web application that can debug C0 +code and can aid in a student's understanding of fundamental computational +models. This project will benefit students in 15-122 Principals of Imperative +Computation at Carnegie Mellon University by helping them create correct +programs. The C0 Debugger will enable students to understand how their programs +execute and find where problems originate more easily than with existing tools. +In addition to debugging, students will have better knowledge for how the +underlying computation model works when evaluating their code. +\par +The C0 Debugger will also enable students to test simple programs with little +setup, using only a web browser. They will no longer have to set up and become +familiar with a Unix environment before they can program, making C0 accessible +to more people, more quickly. diff --git a/progress_report/progress_report.dvi b/progress_report/progress_report.dvi new file mode 100644 index 0000000..18cd1c9 Binary files /dev/null and b/progress_report/progress_report.dvi differ diff --git a/progress_report/progress_report.fdb_latexmk b/progress_report/progress_report.fdb_latexmk new file mode 100644 index 0000000..bdafd9c --- /dev/null +++ b/progress_report/progress_report.fdb_latexmk @@ -0,0 +1,68 @@ +# Fdb version 3 +["latex"] 1429044499 "progress_report.tex" "progress_report.dvi" "progress_report" 1429044577 + "/usr/local/texlive/2014/texmf-dist/fonts/map/fontname/texfonts.map" 1272929888 3287 e6b82fe08f5336d4d5ebc73fb1152e87 "" + "/usr/local/texlive/2014/texmf-dist/fonts/tfm/public/cm/cmr10.tfm" 1136768653 1296 45809c5a464d5f32c8f98ba97c1bb47f "" + "/usr/local/texlive/2014/texmf-dist/fonts/tfm/public/txfonts/txb.tfm" 1136768653 2452 76194099b4f1c022cb59f4564251c4fe "" + "/usr/local/texlive/2014/texmf-dist/fonts/tfm/public/txfonts/txr.tfm" 1136768653 2408 aec793a3c45e495f7ad15b227c91f508 "" + "/usr/local/texlive/2014/texmf-dist/fonts/tfm/public/txfonts/txsy.tfm" 1136768653 1268 1d124f224979493f8fd017a7597ea1cd "" + "/usr/local/texlive/2014/texmf-dist/tex/generic/ifxetex/ifxetex.sty" 1284331290 1458 43ab4710dc82f3edeabecd0d099626b2 "" + "/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/atbegshi.sty" 1335995445 24460 92f559a71aac869021852c227c704b38 "" + "/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/gettitlestring.sty" 1303254447 8237 52810bdb4db2270e717422560a104aea "" + "/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty" 1338332114 189108 8b3553a56c83ff61acecb36b75d817e2 "" + "/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty" 1338332114 70752 45fa392800e07da61fa13446ad46b34d "" + "/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ifpdf.sty" 1303254447 7140 ece2cc23d9f20e1f53975ac167f42d3e "" + "/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ifvtex.sty" 1335995445 6797 68c89f65e01894df882dd523d3fc0a8f "" + "/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/infwarerr.sty" 1335995445 8253 3bdedc8409aa5d290a2339be6f09af03 "" + "/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ltxcmds.sty" 1335995445 18425 775b341047ce304520cc7c11ca41392e "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/base/article.cls" 1399675188 20496 66dd832c447553f6776fbeac03bb0580 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/base/ifthen.sty" 1399675188 4947 22c4b902063e8ce2efcc2a8495ecb800 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/base/size11.clo" 1399675188 8983 e08a9a7009d9a8f8c6507333f96e336e "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/eso-pic/eso-pic.sty" 1381444076 11590 2a66b78f3da61ad137452c2777f21b6b "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/geometry/geometry.sty" 1284422013 40502 e003406220954b0716679d7928aedd8a "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/graphics/dvips.def" 1399675188 5104 e68b64366d1946a5893a7f717264ec59 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/graphics/graphics.sty" 1254151804 14183 42a8fc761b806986eef292369afc2988 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/graphics/graphicx.sty" 1399675188 7911 bf0a64f89bfb668c239ddf6324bf4afb "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/graphics/keyval.sty" 1399675188 2317 0ace13e225e9d95dd9defe947adc9fbb "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/graphics/trig.sty" 1156702488 3153 c50e6bd54d2dd3933fc52bcf369bec4a "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/hdvips.def" 1352416072 3471 43fa5241d35e8bdbf02746c6d8e25fc2 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/hyperref.sty" 1352416072 231792 5fc9dc7dd667e773a766ecc63bba7f4b "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/nameref.sty" 1351899753 12847 25b617d63258c4f72870c883493a3cf8 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/pd1enc.def" 1352416072 14005 155ac8fad2e5dd7c2cdd130fabd96633 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/pdfmark.def" 1352416072 49315 059e7f302e066f22f383833cd87167cb "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/color.cfg" 1254097189 802 7b8c8d72c24d795ed7720e4dfd29bff3 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/graphics.cfg" 1278958963 3563 d35e897cae3b8c6848f6677b73370b54 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/hyperref.cfg" 1254097189 235 6031e5765137be07eed51a510b2b8fb7 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/auxhook.sty" 1303254447 3834 707ef09f31d7d2ea47ba89974755dfe0 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/kvoptions.sty" 1335995445 22417 c74ff4af6a1aa2b65d1924020edbbe11 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty" 1303254447 9581 1158efc648bc09d5064db5703c882159 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/pdfpages/pdfpages.sty" 1377467854 51227 e7dc1f34ba805af6251ecb7986bb034f "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/pdfpages/ppnull.def" 1377467854 2528 737efa41d2b4535305b16bdebc3d7d8e "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/pdfpages/pppdftex.def" 1377467854 5975 e550dcf6f005a7223bb41a05edf0e99d "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/setspace/setspace.sty" 1324344192 22913 a27d7908fc6f0385466454a966a316eb "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/tocloft/tocloft.sty" 1367531278 34706 345df874e59e023274392bd0cf090d66 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/tools/array.sty" 1399675188 13073 a6e28ede26c83d406e124b12f368174f "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/tools/calc.sty" 1399675188 10002 f32f4490d0c87a7854adf544bd459155 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/tools/tabularx.sty" 1400196978 6922 d73f54a1f22489be96930629013f1304 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/omltxmi.fd" 1137111002 492 e7f8afe4428797548d4301de03a1b15f "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/omstxr.fd" 1137111002 857 81ff640acbcd7da3dc30601847d7e35a "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/omstxsy.fd" 1137111002 329 6ac7e19535b9f1d64e4d8e3f77dc30a3 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/omxtxex.fd" 1137111002 312 11fe1916b0a13a81a05234a6fc7f8738 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/ot1txr.fd" 1137111002 1271 4e3afbd8e832f2f9c7f064894e6e68e4 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/txfonts.sty" 1206746551 50381 d367461010070c7a491b1f6979ab2062 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/utxexa.fd" 1137111002 310 1b00b0b05685b816e4c6caccce437e0d "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "/usr/local/texlive/2014/texmf-dist/tex/latex/xcolor/xcolor.sty" 1169481954 55224 a43bab84e0ac5e6efcaf9a98bde73a94 "" + "/usr/local/texlive/2014/texmf-dist/web2c/texmf.cnf" 1398200874 31722 4f52421e59a4b9e910cf18e64c1f2b4a "" + "/usr/local/texlive/2014/texmf-var/web2c/pdftex/latex.fmt" 1401025988 3831950 412798929e0196806f9f91e131a01806 "" + "/usr/local/texlive/2014/texmf.cnf" 1401025936 577 a59edbde8d3a8c549d0eeaab1739e2ff "" + "old-gantt.jpg" 1429044440 24493 24188bdf4f5434787c664b216e3898f2 "" + "progress_report.aux" 1429044500 1054 1fb7c5c88c3fe5c21808963cf33f2978 "" + "progress_report.out" 1429044500 236 3411de8a1192db7b41eeb11bf4c93fef "" + "progress_report.tex" 1429044508 7262 ec5dd8aff911c63e55f0b215ebc5fca1 "" + "progress_report.toc" 1429044500 0 d41d8cd98f00b204e9800998ecf8427e "" + (generated) + "progress_report.dvi" + "progress_report.out" + "progress_report.toc" + "progress_report.aux" + "progress_report.log" diff --git a/progress_report/progress_report.fls b/progress_report/progress_report.fls new file mode 100644 index 0000000..a0099f2 --- /dev/null +++ b/progress_report/progress_report.fls @@ -0,0 +1,128 @@ +PWD /Users/shyam/Dropbox/cdb/progress_report +INPUT /usr/local/texlive/2014/texmf.cnf +INPUT /usr/local/texlive/2014/texmf-dist/web2c/texmf.cnf +INPUT /usr/local/texlive/2014/texmf-var/web2c/pdftex/latex.fmt +INPUT progress_report.tex +OUTPUT progress_report.log +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/base/article.cls +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/base/article.cls +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/base/size11.clo +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/base/size11.clo +INPUT /usr/local/texlive/2014/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/local/texlive/2014/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/local/texlive/2014/texmf-dist/fonts/tfm/public/cm/cmr10.tfm +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/setspace/setspace.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/setspace/setspace.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ifpdf.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ifpdf.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ifvtex.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ifvtex.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/tools/tabularx.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/tools/tabularx.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/tocloft/tocloft.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/tocloft/tocloft.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/graphics.cfg +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/graphics.cfg +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/graphics/dvips.def +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/graphics/dvips.def +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/pdfpages/pdfpages.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/pdfpages/pdfpages.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/base/ifthen.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/base/ifthen.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/tools/calc.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/tools/calc.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/eso-pic/eso-pic.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/eso-pic/eso-pic.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/atbegshi.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/atbegshi.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/infwarerr.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/infwarerr.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/color.cfg +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/color.cfg +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/pdfpages/pppdftex.def +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/pdfpages/pppdftex.def +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/pdfpages/ppnull.def +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/pdfpages/ppnull.def +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/auxhook.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/auxhook.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/kvoptions.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/kvoptions.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/hyperref.cfg +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/hyperref.cfg +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/url/url.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/url/url.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/hdvips.def +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/hdvips.def +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/pdfmark.def +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/pdfmark.def +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/txfonts.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/txfonts.sty +INPUT progress_report.aux +INPUT progress_report.aux +OUTPUT progress_report.aux +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/omltxmi.fd +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/omltxmi.fd +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/omstxsy.fd +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/omstxsy.fd +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/omxtxex.fd +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/omxtxex.fd +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/utxexa.fd +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/utxexa.fd +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/ot1txr.fd +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/ot1txr.fd +INPUT /usr/local/texlive/2014/texmf-dist/fonts/tfm/public/txfonts/txr.tfm +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +INPUT /usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +INPUT progress_report.out +INPUT progress_report.out +INPUT progress_report.out +INPUT progress_report.out +INPUT ./progress_report.out +INPUT ./progress_report.out +OUTPUT progress_report.out +INPUT /usr/local/texlive/2014/texmf-dist/fonts/tfm/public/txfonts/txb.tfm +OUTPUT progress_report.dvi +INPUT /usr/local/texlive/2014/texmf-dist/fonts/tfm/public/txfonts/txr.tfm +INPUT /usr/local/texlive/2014/texmf-dist/fonts/tfm/public/txfonts/txb.tfm +INPUT progress_report.toc +INPUT progress_report.toc +OUTPUT progress_report.toc +INPUT /usr/local/texlive/2014/texmf-dist/fonts/tfm/public/txfonts/txr.tfm +INPUT /usr/local/texlive/2014/texmf-dist/fonts/tfm/public/txfonts/txb.tfm +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/omstxr.fd +INPUT /usr/local/texlive/2014/texmf-dist/tex/latex/txfonts/omstxr.fd +INPUT /usr/local/texlive/2014/texmf-dist/fonts/tfm/public/txfonts/txsy.tfm +INPUT old-gantt.jpg +INPUT old-gantt.jpg diff --git a/progress_report/progress_report.out b/progress_report/progress_report.out new file mode 100644 index 0000000..9e94bf1 --- /dev/null +++ b/progress_report/progress_report.out @@ -0,0 +1,4 @@ +\BOOKMARK [1][-]{section.1}{Overview}{}% 1 +\BOOKMARK [2][-]{subsection.1.1}{Purpose of the Report}{section.1}% 2 +\BOOKMARK [2][-]{subsection.1.2}{Purpose of the Project}{section.1}% 3 +\BOOKMARK [1][-]{section.2}{Literature Review}{}% 4 diff --git a/progress_report/progress_report.pdf b/progress_report/progress_report.pdf new file mode 100644 index 0000000..101eddc Binary files /dev/null and b/progress_report/progress_report.pdf differ diff --git a/progress_report/progress_report.tex b/progress_report/progress_report.tex new file mode 100644 index 0000000..0256ccb --- /dev/null +++ b/progress_report/progress_report.tex @@ -0,0 +1,177 @@ +\documentclass[11pt]{article} + +\usepackage{setspace} +\usepackage[margin=1in]{geometry} + +% Make table of contents look better +\usepackage{tabularx} +\usepackage{tocloft} +\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}} + +\usepackage{graphicx} +\usepackage{pdfpages} +\usepackage{hyperref} + +% \usepackage[ngerman]{babel} +% \usepackage[T1]{fontenc} +% \usepackage[ansinew]{inputenc} +% \usepackage{lmodern} + +% Times New Roman font +\usepackage{txfonts} + +\begin{document} + +\setlength{\parindent}{2em} + +\begin{titlepage} +\clearpage +\thispagestyle{empty} + +\begin{center} +{\bf Technical Communication for Computer Scientists: 15-221}\\ +{\bf Spring 2015}\\ + +\vspace{25 mm} + +{\bf Progress Report:}\\ +{\bf C0 Debugger}\\ +\vspace{25 mm} + +Aaron Gutierrez\\ +Mitchell Plamann\\ +Shyam Raghavan\\ +Suhaas Reddy\\ + +\vspace{25 mm} + +{\bf Submitted to}\\ +Thomas M. Keating\\ +Assistant Teaching Professor\\ +Computer Science Department\\ +School of Computer Science\\ + +\vspace{25 mm} + +{\bf Prepared and Submitted by}\\ +Shyam Raghavan - April 14, 2015 +\end{center} +\end{titlepage} + +\pagenumbering{roman} +\tableofcontents +\newpage + +\pagenumbering{arabic} + +\section{Overview} +\subsection{Purpose of the Report} +This report serves as an update to the reader on the progress the c0db team has +made on the C0 Debugger during the first month of work. The report will detail +what has been accomplished so far, what is in progress, what is planned for the +future, and any changes that will be made to the original plan of action. In +addition, the report will detail new literature that has been gathered and +used. +\subsection{Purpose of the Project} +The purpose of this project is to build a web application that can debug C0 +code and can aid in a student's understanding of fundamental computational +models. This project will benefit students in 15-122 Principals of Imperative +Computation at Carnegie Mellon University by helping them create correct +programs. The C0 Debugger will enable students to understand how their programs +execute and find where problems originate more easily than with existing tools. +In addition to debugging, students will have better knowledge for how the +underlying computation model works when evaluating their code. +\par +The C0 Debugger will also enable students to test simple programs with little +setup, using only a web browser. They will no longer have to set up and become +familiar with a Unix environment before they can program, making C0 accessible +to more people, more quickly. +\section{Literature Review} +Since the start of our project, we have found multiple new information sources; +the following are the most important ones. +\begin{itemize} +\item Nodeunit documentation \\ + https://github.com/caolan/nodeunit + \par + We are using nodeunit to test our virtual machine. + Since the c0 bytecode has many different opcodes that it uses, it is very + easy for mistakes in the virtual machine to go unnoticed. + To prevent this, we are using the nodeunit library to write unit tests for + our code. + This has already helped us to find and solve multiple bugs in the VM, and + having these unit tests will make sure that we can solve any bugs that + occur as the result of future changes in the code. +\item c0vm Assignment Handout \\ + https://www.cs.cmu.edu/~rjsimmon/15122-f14/prog/c0vm-writeup.pdf + \par + This document details how each opcode in the c0 bytecode language works, + as well as other important implementation details for the c0 virtual + machine. It has been an important reference while developing a JavaScript + version of the c0 virtual machine. +\item Common Gateway Interface Support Documentation \\ + https://docs.python.org/2/library/cgi.html + \par + This document explains the support module defined by Python 2.7.10 for + common gateway interfaces. A common gateway interface script is usually + invoked by a server to process user input submitted through an HTML + element. This piece of documentation is an important reference for + developing the flow of information from c0 code to c0 bytecode to a + working virtual machine. +\end{itemize} +So far, the most important thing we have learned is that good unit tests are +vital for developing this sort of project. Without unit tests that verify +each opcode used by the virtual machine, many bugs would have gone unnoticed, +causing problems later down the line. If we only found these bugs by using +the frontend, they would have been much harder to debug, as there would have +been much more code to work through. +\section{Progress} +\section{Recommendations} +\begin{figure}[h] + \centering + \includegraphics[width=\linewidth]{old-gantt.jpg} + \caption{Old Project Gantt Chart} + \label{fig:old-gantt} +\end{figure} +\begin{figure}[h] + \centering + \includegraphics[width=\linewidth]{new-gantt.jpg} + \caption{New Project Gantt Chart} + \label{fig:new-gantt} +\end{figure} +There are three major changes to the project plan: the frontend and backend +deadlines have moved back several days, the user testing and revisions period +have shifted back accordingly and have shortened, the frontend goal categories +have been redefined. These changes can be identified in the above Gantt charts +by in shifts in the bars of the Gantt chart. The development bars have +increased in relative size while the testing and revising bars have shrunk. +\par +The frontend and backend periods needed to shift backwards simply due to the +group’s initial underestimation of the amount of time required to create a +reasonable product. The team believes additional development time on the +backend and frontend until the 20th of April will enable the creation of a high +quality product with a robust user interface and powerful c0 virtual machine. +Without this pushback the team currently has a working prototype with a basic +user interface and native function calls implemented, but the project has yet +to include several important features considered necessary for useful +application by students. +\par +The user testing and adjustments periods have shrunk due to the increased +development time. The team decided to avoid user testing and adjustments during +the main development phase, but due to the time pressure this caused the +testing and adjustment phases to shrink by several days each and overlap +significantly. The team hopes to consistently implement changes as students +provide feedback so that the overlap still provides time to implement +suggestions. +\par +The redefined goals within the frontend category reflect altered priorities of +the project as a whole. Rather than having the project work to explain topics +to the user, the project will be designed to simply run user code and step +through user code with the assumption that the user already understands how to +use the program. The instructors of 15-122 have already been informed of c0db, +so hopefully the TAs of the course could provide their students with brief +tutorials for c0db and its uses. This shift away from explanation allows the +team to focus more on providing user interface features which will more +directly aid in student code development. These features include code stepping +and highlighting as well as annotated bytecode as listed in the Gantt chart +above. +\end{document} diff --git a/progress_report/progress_report.tex.project.vim b/progress_report/progress_report.tex.project.vim new file mode 100644 index 0000000..2b950e2 --- /dev/null +++ b/progress_report/progress_report.tex.project.vim @@ -0,0 +1,26 @@ +" ATP project vim script: Tue Apr 14, 2015 at 02:37 PM -0400. + +let b:atp_MainFile = 'progress_report.tex' +let g:atp_mapNn = 0 +let b:atp_autex = 1 +let b:atp_TexCompiler = 'pdftex' +let b:atp_TexOptions = '-synctex=1' +let b:atp_TexFlavor = 'plaintex' +let b:atp_auruns = '1' +let b:atp_ReloadOnError = '1' +let b:atp_OutDir = '/Users/shyam/Dropbox/cdb/progress_report' +let b:atp_OpenViewer = '1' +let b:atp_XpdfServer = 'progress_report' +let b:atp_Viewer = 'okular' +let b:TreeOfFiles = {} +let b:ListOfFiles = [] +let b:TypeDict = {} +let b:LevelDict = {} +let b:atp_BibCompiler = 'bibtex' +let b:atp_StarEnvDefault = '' +let b:atp_StarMathEnvDefault = '' +let b:atp_updatetime_insert = 4000 +let b:atp_updatetime_normal = 2000 +let b:atp_LocalCommands = [] +let b:atp_LocalEnvironments = [] +let b:atp_LocalColors = [] diff --git a/progress_report/progress_report_aux b/progress_report/progress_report_aux new file mode 100644 index 0000000..c12a4bd --- /dev/null +++ b/progress_report/progress_report_aux @@ -0,0 +1,24 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand*\HyPL@Entry[1]{} +\HyPL@Entry{0<>} +\HyPL@Entry{1<>} +\HyPL@Entry{2<>} +\@writefile{toc}{\contentsline {section}{\numberline {1}Overview}{1}{section.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Purpose of the Report}{1}{subsection.1.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Purpose of the Project}{1}{subsection.1.2}} +\@writefile{toc}{\contentsline {section}{\numberline {2}Literature Review}{1}{section.2}} diff --git a/proposal/proposal.tex.project.vim b/proposal/proposal.tex.project.vim new file mode 100644 index 0000000..1d422b8 --- /dev/null +++ b/proposal/proposal.tex.project.vim @@ -0,0 +1,26 @@ +" ATP project vim script: Tue Apr 14, 2015 at 02:43 PM -0400. + +let b:atp_MainFile = 'proposal.tex' +let g:atp_mapNn = 0 +let b:atp_autex = 1 +let b:atp_TexCompiler = 'pdflatex' +let b:atp_TexOptions = '-synctex=1' +let b:atp_TexFlavor = 'tex' +let b:atp_auruns = '1' +let b:atp_ReloadOnError = '1' +let b:atp_OutDir = '/Users/shyam/Dropbox/cdb/proposal' +let b:atp_OpenViewer = '1' +let b:atp_XpdfServer = 'proposal' +let b:atp_Viewer = 'okular' +let b:TreeOfFiles = {} +let b:ListOfFiles = [] +let b:TypeDict = {} +let b:LevelDict = {} +let b:atp_BibCompiler = 'bibtex' +let b:atp_StarEnvDefault = '' +let b:atp_StarMathEnvDefault = '' +let b:atp_updatetime_insert = 4000 +let b:atp_updatetime_normal = 2000 +let b:atp_LocalCommands = [] +let b:atp_LocalEnvironments = [] +let b:atp_LocalColors = [] diff --git a/public/vm/c0vm.js b/public/vm/c0vm.js index 32ae799..827f7de 100755 --- a/public/vm/c0vm.js +++ b/public/vm/c0vm.js @@ -28,7 +28,6 @@ function i32_to_array(i32) { ((i32 >> 8) & 0xFF), ((i32 >> 16) & 0xFF), ((i32 >> 24) & 0xFF)]; - } function array_to_i32(array) { @@ -63,13 +62,13 @@ var ProgramState = function(parsed_file, callback_dict) { try { this.natives[i] = callback_dict[i]; } catch (key_not_found) { - this.natives[i] = function (arg) { + this.natives[i] = function (arg) { console.log("Native function " + name + " called, ran method stub."); return 0; }; } } - + // Memory is just a big array of bytes, right? // "Allocation" is appending onto this array // A pointer to memory is an index into this array. @@ -138,7 +137,7 @@ ProgramState.prototype.step = function() { case op.BIPUSH: this.frame.pc += 2; var val = this.frame.program[this.frame.pc-1]; - + // Do sign extension if necessary if ((val & 0x80) != 0) val = -0x80 + (val & 0x7F); @@ -340,7 +339,7 @@ ProgramState.prototype.step = function() { }; console.log("Unknown native function index " + f.function_table_index); } - log("Calling native function with index " + index + " with arguments " + + log("Calling native function with index " + index + " with arguments " + arg_array); this.push(native_function(arg_array)); break; @@ -352,7 +351,7 @@ ProgramState.prototype.step = function() { var address = this.heap.length; for (var i = 0; i < size; i++) this.heap.push(0); - + this.push(address); this.frame.pc += 2; break; @@ -365,7 +364,7 @@ ProgramState.prototype.step = function() { this.heap.push(num_elements); this.heap.push(size); - + for (var i = 0; i < num_elements; i++) { for (var j = 0; j < size; j++) this.heap.push(0); @@ -481,7 +480,7 @@ function execute(file, callbacks, v) { if (verbose) log(file); log("Beginning execution"); - + while (true) { var val = state.step(); if (val !== undefined) return val; @@ -500,7 +499,7 @@ function execute(file, callbacks, v) { // save state (maybe in a global in this file?) // return; // } - } + } } exports.execute = execute;