We had today off for Memorial Day, in remembrance and in honor of the courageous men and women who demonstrate exemplary dedication, strength, and resilience in service to our country both home and abroad, in history, present, and future.
Image courtesy of www.99traveltips.com
previous day | next day | return to calendar
This morning, I read the article "A User-Centred Approach for Designing Algorithm Visualizations" (Khuri, 2001). My initial thoughts were that most of what he was discussing honestly sounded like common sense, since one of his primary arguments was that visualization developers needed to better analyze and consider the background and needs of the users - why wouldn't somebody think seriously about the intended market and audience? However, I found myself agreeing with the idea that sometimes visualization frameworks are designed to include features just because they can, but including more functionality so that the visualizations can be used for many algorithms isn't necessarily superior to more specialized support for a smaller subset of algorithms. His point about how students and experts oftentimes look for different visualization features also resonated with me - I know I would be incredibly frustrated having to understand a sophisticated program-level visualization framework more appropriate for industry professionals! Even though his general message about understanding users' needs and tasks in order to specialize accordingly seems intuitive, this was still a fairly interesting read.
Julian had suggested starting to become acquainted with the JFLAP source code when I talked to him about next steps. I downloaded the source code for JFLAP 7.0 from the website and briefly looked through several classes before he sent me his working code for JFLAP 8.0. I spent the afternoon looking through a number of the classes for the model (MVC framework). It's definitely more involved and extensive than code from class projects, but taking a software design class was immediately helpful for being able to better understand the relationships between different classes and interfaces and help pieces start to fall into place, for which I'm very grateful. I also noticed a synchronized method, leading me to briefly read about concurrency. I'm really looking forward to becoming more familiar with the code before working on it.
previous day | next day | return to calendar
The morning was relatively uneventful as I continued to read through more JFLAP code to gain a better understanding of what already exists and how things currently work (or don't work, in some cases). Julian guided Ian and me through the installation of Subversive in Eclipse so that we can access his JFLAP repository on Google Code. Having used Git exclusively in class, I'm interested in seeing how SVN will work, especially since we're using an Eclipse plug-in rather than command line.
First summer undergraduate research lunch today! Each Wednesday for about two months, all of the students participating in undergraduate computer science research will meet for lunch (Panera today!), courtesy of the department, and hear from a different graduate student or faculty member each week about graduate school and various topics in computer science research or courses. Today's speaker was Pankaj Agarwal, who talked about terrain modeling and big data, including challenges and tradeoffs involved with the large data sets used these days.
Late afternoon, I did some online research about potential ways to optimize the brute force parsing for the regular expression grammar, which is a problem Julian hopes to solve so that the parser no longer runs in exponential time (literally O(n^n) for an expression of length n). After sifting through a number of fruitless results, including an attempt to understand a fairly theoretical mathematical proof regarding regular expressions, DFAs, and grammars, I found a Stack Overflow post that suggested taking advantage of Java's built-in regex library that seemed reasonable. However, it also struck me as simply being a little "too obvious" and indeed, when I showed Julian and we discussed it, we thought of several corner cases that are unlikely but still very problematic. Left the office around 9 pm (though I took an extended break) and encountered multiple cockroaches walking back in the dark...
previous day | next day | return to calendar
Professor Rodger met with us this morning and discussed various projects that Ian and I could work on, including integration of set theory and fixing up or redoing the CYK parser. The set theory is larger and more ambitious problem than I had initially expected (which, to be fair, literally involved taking the union and intersection of two sets of numbers), but it sounds like a really fascinating idea that would be incredible to achieve since it would not only require extensive code but being able to really apply theoretical concepts. I found a paper that was accepted to the CAe-SBIM-NPAR 2012 conference which talks about a discrete mathematics set tool called SetPad; since I was unable to find the paper or author's email online, I emailed his graduate advisor and am hoping for a response this week, although the conference begins in a couple of days in France. For the rest of the day, I worked through multiple more CYK examples on paper, noticing that each set of lecture notes does slightly different table format and explanation (the former has been confusing while the latter quite helpful), looked at the Java Set interface API to see if implementing that might be useful, and took a closer look at the CYK parser code.
I had a lunch meeting with one of Trinity's academic deans who's in charge of the Peer Advising program. We went to Bread and Kabob near Brightleaf off East Campus; this was my first time ever trying Afghan food, but the vegetable kabob over basmati rice that I ordered was delicious and I hope to return there sometime soon! In addition to Peer Advising business, we had a great conversation about family, culture, and miscellaneous other topics. I really enjoyed lunch and also appreciated having a chance to clear my mind for a while after staring at a lot of code, so I could better refocus on JFLAP in the afternoon.
previous day | next day | return to calendar
I spent most of the day coding with Ian to work on re-implementing the CYK algorithm in JFLAP. The existing implementation will generate the correct result when the CYK parser is run, in most cases, although there are also some bugs. In addition, we reviewed the existing code and noticed that there were areas where we could optimize the efficiency or greatly improve the code design. We definitely made notable progress in re-implementing the basic parsing algorithm to determine whether a string can be derived from a given grammar (after extensive brainstorming on paper and discussing over which data structure(s) to use), and are now working on tracking the step-by-step derivations in order as the parser runs. These algorithms were implemented in the existing code; however, by this point we've deviated fairly significantly from that code so we'll only be using it as a moderate guide while rethinking how we can implement it and potentially optimize it in the process.