Or: How I Learned to Stop Worrying and Love the Research Project
The "dead" in "dead week" is commonly thought to refer to the university-mandated lack of tests during the week before finals. I think it refers to the state of the students during that week.
I have spent most of my time on the Big Projects O' the Semester: the history term paper and the research project. I have diligently continued reading, annotating, and writing my outline for the former. It is slow going. I can program for an entire afternoon and evening, but my writing suffers after only about two hours. I need to finish the outline tomorrow and type the paper on Wednesday and Thursday. The hardest part will be compressing my 11 or 12 page outline into a 16 page paper.
My time on the research project ended at 6:00 this afternoon. Chris, Lee, and I gave our final presentation to a "panel" consisting of a counselor, two professors, our sponsor, and few other students. The talk went wonderfully, but we had a bumpy road leading up to it.
I wrote the parser for our language right around spring break and made some modifications over the next week or two. I then wrote a long paper on the motivation behind the language, its syntax, and the research questions prompted by the design. The following is the paper abstract:
We present the design and implementation of a new language for creating two-dimensional vector graphics on the computer. The language consists of control structures reminiscent of a high-level general-purpose language as well as numerous simple features for easily creating, transforming, and drawing graphics. It implements a very simple method for constraint-based drawing using named fields.
I left it to Chris and Lee to add the logic needed to turn the parser into an interpreter while I was writing. That did not happen quite as fast as I had hoped. Really, it did not happen at all, and on that Wednesday I panicked. Our language did not do anything and we had a week and a half left in the semester.
We met on Thursday to figure out what we needed to do to get the language running. It was not as bad as I had feared the day before: Chris had most of the execution tree classes made and had also set up a CVS repository to allow all three of us to work concurrently. Ironically, the undergraduate research administrator had dropped a bomb on us a few hours earlier by announcing we had to give a presentation on Monday (today). That moved our "delivery date" back by four days. Because I had written the paper, I agreed to make the presentation while Chris and Lee once again took over the programming.
I finished the presentation that night and made some programming contributions on Friday and Saturday between bouts of outlining for the history paper. Chris and Lee made some progress as well, but we still did not have anything working on Sunday. We had agreed to get together that evening go over the presentation. After we did that we drove over to one of the CS computer labs intent on banging out an interpreter.
The lab was filled with freshmen building an IRC client for the introductory C/C++ class. It brought back strong memories of my freshman year. At one point one of the students asked us if we were "upper-level CS students". I had to think before I proudly replied, "yup." I had not thought of myself as an upperclassman until that point. The student then asked us if he could hire us to program his client. We declined the offer.
The three of us took over the back row and started programming. Chris made an interesting visitor pattern visitor that I used to build the interpreter while Lee put together the drawing engine. We made a lot of progress after several hours of work, but we finally had to admit it was a lost cause. There was no way that we could have a quality demo by 5:40 the next day and live to present it.
It might have been a lost cause, but it did not matter in the end. I removed the demo section from the presentation and replaced it with language samples and mocked-up pictures. To my surprise, Chris worked all day today and got quite a bit of the interpreter finished. When the panel asked about a demo, we were able to point to the working parser, our expression trees, and a "crashy" interpreter. They were looking for tangible progress over the course of the semester and we certainly delivered that.
Our presentation went off without a hook. Lee talked about the overall thinking behind the language, I went through the language samples, and Chris talked about the research questions and future work. We were sure to note that Chris and Lee both plan to continue working on the language next semester. It will not take much for them to finish the interpreter and start working on some of the more research-ey aspects of the project.
I arrived early enough to see the two presentations that preceded ours. I had wanted to see Marc's presentation, but I missed it by five minutes. The first student I did see had done some networking programming for a distance education setup. His part of the project worked, but he got torn apart because he focused too much on the unfinished graphical interface that he had no control over. The next student was working on detecting phishing scams. His presentation exhaustively defined phishing and the previous work done to combat it. On his last slide, he sheepishly admitted that his project failed completely and he had nothing to show for his work. He had not even written a paper. I admire him for being able to give a presentation over a failed project, but he definitely should have had something to show for a semester of work.
Comedians love following acts that bomb, and I cannot help thinking that those two presentations helped ours.
Our project sponsor seemed impressed after we finished. The panelists seemed... indifferent, but I think that is because they had to sit through three hours of undergraduate research presentations. I would not wish that on anyone.
Finishing the research project removed one monkey from my back, leaving the history paper, a small math assignment, and finals clinging on.
Update
You can find a short description of each of the undergraduate research projects and their presentations here.