Project Journal

Until the last two months of the project, I kept an online journal of my thoughts and progress. After that, my senior year of college was just too busy and I stopped posting journal entries.

October 29, 2004

Putting together the first few pages of my project site. Working on deciding between two project ideas: a natural language visualization platform, and a database application with possibilities for expert system features. The visualization project is more interesting but a little less well-defined. I need to make a successful pitch to faculty for that one before deciding. Natural language processing isn’t too hard, right?

November 1, 2004

Gave my advisors a draft proposal for the visualization project to tear apart. I hope they find this project to be promising.

November 5, 2004

Submitted a draft proposal for the other project. It’s now time to do a lot of thinking and discussion.

November 22, 2004

I’ve chosen “ImagiViewer”, the visualization program, as my senior project. Ambition is fun!

January 9, 2005

The first experimental prototype is going well. Everything but the actual graphical rendering is in place. The goal of this prototype is to gain enough experience to solidify high-level design decisions and get familiar with designing natural language parsers and data structures. This prototype is crude but it has already resulted in great progress in the overall project.

January 11, 2005

Prototype 1 complete. It is crude, but accomplishes everything I wanted for the first prototype, so it’s time to stop. It’s so easy to keep going, trying to improve it, but that is counterproductive. The next step is to evaluate the strengths and weeknesses of the prototype’s design and behavior to guide the next phase of research and design.

January 27, 2005

By researching areas such as art, natural language processing (NLP), linguistics, imagery, and other areas of cognitive science, the focus of this project is turning away from NLP and getting more into imagery. I’m interested in the idea that imagery assists language comprehension in a manner quite differently from verbal facilities; Allan Paivio (in Imagery: Current Cognitive Approaches, Academic Press, 1971, p. 7–9) suggests that the interaction of the two parts creates our whole understanding of language and meaning.

February 1, 2005

Finished scenarios for all three sample applications. I’m working on the next prototype, which is a complete interface design for at least the main sample application. This should go quickly and help extract any final requirements. I set up Eclipse, an open source and very extensible IDE, and it looks very promising.

February 7, 2005

Finished use case diagrams for the three applications, working on other aspects of design. Meanwhile, I’m researching some other areas of psychology as suggested by Dr. Gagne, such as encoding models and Irvin Biederman’s Geon theory. This will hopefully help me build a good model of the actual images the system needs to render. Depending on how effective this research is to that end, I’ll decide on one of two paths for image representation — modeling the mind’s system or engineering my own model (which was the approach of the first prototype). This reflects the two basic approaches of nearly all artificial intelligence research…

March 1, 2005

Completed class diagrams for the GUI. I am using the Model-View-Controller (MVC) approach for designing this. It allows a looser coupling among the user interface, the main program model and data, and the controller classes that coordinate interaction between the other two parts. I ran into some kinks while building these class diagrams, concerning how certain classes should be related.

It seemed that the way to solve this design problem was to think hard about the roles each class plays — not just model/view/controller, but really what they’re supposed to do. For example, I have a Loader class that was supposed to get the program and user interface up and running. But until I thought about what roles it took on by doing that, it was ambiguous whether this class should (for example) instantiate an object of a certain other class. I thought the overall design was at least on the right track, so I talked to my advisor about problems. It turned out that I was following the proper approach for an MVC application, I just didn’t yet understand the meaning of some of the relationships in MVC.

So if you’re suspicious that your class design is getting sloppy or inconsistent, stop and reflect about the roles each class needs to take on, and think about the perspectives each class or subsystem has on the remainder of the system.

March 17, 2005

Implementation is moving swiftly, using Eclipse. The JUnit testing framework built into Eclipse is proving to be a powerful time-saver in writing and executing unit tests. I can literally run a full, consistent suite of unit tests after every change to a class, with a single click.