Here’s the blog post I wrote for day 2 on JFLAP.
Today I read sections 3.2 and 3.3 of the Linz book. I understand the relationship between regular expression, regular language and regular grammar. I now know that they can be transformed to one another. I still not quite understand the proof for Theorem 3.5, specifically about the part where the author mentions the reverse of regular language. I did some more exercises relative to the material. Besides learning about the theories, I also learned more about JFLAP software usage. By following the tutorial on JFLAP tutorial, I now know how to transform NFA to DFA, minimize DFA and also transforming DFA to regular grammar and regular expressions.
I then read the independent study thesis written by James Cho last summer. Formal reference and summary are below:
Cho, James. Integrating JFLAP into OpenDSA. Retrieved from http://people.duke.edu/~sc316/jcho_paper.pdf.
In this paper, the author first established that algorithm visualization (AV) is tremendously helpful for data structure and algorithm (DSA) education. However, instructors find it time-consuming to integrate AV into their lectures. Therefore, some pioneer professors found the project OpenDSA which aims to create DSA educational softwares for computer science classes. There have also been other projects such as JHAVE and JFLAP, but they both require the installation of Java, which sometimes cause security and software compatibility problems. Due to such need, the author tried to integrate JFLAP into OpenDSA project to help with DSA education.
This project indeed helps with OpenDSA development, but limitations abound. The most worrying limitation would be that the exercise is fully hardcoded, which makes it completely unable to provide a different DFA machine. Although part of JFLAP function is moved to web version, the project is still unable to support mobile devices for now, which was one of the main goals of the project. There are also some graphical limitations. During my internship this summer, I hope to overcome these challenges.
I then read the documentation for JSAV and also code written by Sung-hoon Kim last summer. Then I built this small demo as practice. I notice that Sung-hoon is using the function
jsav.ds.fa to instantiate a graph. However I did not find that in the documentation and used
jsav.ds.graph instead. One challenge that I encountered was nodes collapsed onto one another. This was resolved by calling
graph.layout();. The simple demo can toggle highlight after mouseclick.
The demo that I built today is located on the very server that I am using WordPress, just under a different directory.