What is the Syntax Student's Companion?
The Syntax Student's Companion is a program created to help syntax students practice syntax exercises by visually building and manipulating syntactic trees, and writing simple grammars. While they can already do so with sheets of paper, pencils and rubbers, I thought it would be more fun to do it on a computer. I personally used the program to generate the bitmaps for the trees in my linguistics assignments, which is much easier than using a drawing program (unless you have a tree drawing program of course). I wrote the first version of the program when I was at McGill University in the spring of 1999, and moved on to the second version during the summer of the same year when I was in London, which I finished in September 1999.
This program is cardware. This means that you can use it for free and distribute it freely in its original package, and that you are strongly encouraged to send a nice postcard of your homeland to the creator of the program to help him cover the dreary walls of his office. I think a GNU licence may be a good way to release the program, but as I haven't taken any time to look carefully at that it will remain as it is until I know better about GNU.
If you feel like contributing to the project, by writing grammars, designing exercises, translating resource files and manuals, or simply reporting bugs (I know that some are still roaming in the classes!), go to the contribution page.
Features and snapshots
The main features of the program are:
visual tree drawing without any limitation on the number of subtrees for a node, nor any limitation as for the correctness of the tree. Trees can be downloaded over the network or loaded from the local drive, and saved (application version only). This is also a simple way of getting tree bitmaps for assignments and handouts.
context-free grammar editor which can classify grammars by name, language, and author. The grammars it generates can be used to check trees.
support for exercises: unambiguous tree drawing, ambiguous tree drawing, transformations (refer to the contributions page)
To get help on how to use the software, refer to the online manual page. To see a few snapshots of the program under several operating systems, click right here (the images are quite big -- don't say you haven't be warned).
The reasons behind the project
I started to write the program while I was an exchange student at McGill University for a course called Technical Project and Report. In fact, the course was just a pretext for me to do something I would consider useful for my last term of undergraduate studies in computer science, not one of those projects that end up in a zip file in a lost folder. I first presented the idea to Prof. Lisa Travis who teaches syntax for the Department of Linguistics there, and it was first aimed to be used in linguistics courses offered at McGill University. Unfortunately, not all the Arts students there have easily access to the internet, so as far as I know the program has never been used as a teaching tool there, although nothing prevents McGill students from using the program (nor any other students by the way).
My search on the web for similar syntax software had ended with the following results (please, if you know other relevant resources, let me know!):
Trees 2 : this software developed at the University of Pennsylvannia definitely looks good, but you need a Mac to run it, and to purchase a licence. The main feature that I have noticed is that you can only combine tree fragments in ways that are allowed by the current grammar, which is certainly good when you know what you're doing, but probably not as good when you are studying syntax. Nevertheless, it is certainly worth a visit.
Syntactica: this is a very good program to help students understand grammars, available for NeXt and in beta-version for Win32. You cannot use this program to directly visually build trees, but you can ask the program to draw trees for you from grammars and sentences.
The Syntax tutor : this is a Java applet developed at the University of Bangor, Wales. You have to enter a set of rules and a sentence, then to click on the magic button, and you get the tree for your sentence.
Interarbora Tree Delivery Service : this is a GREAT service offered at the University of Edinburgh. You send the description of any tree you want, and the bitmap of the tree comes to your amazed eyes. You can even modify the trees with an applet.
Although these programs are good and developed by people involved in Linguistics, I wasn't entirely satisfied with them. First, not anyone has access to a Mac or a NeXt machine. Second, I think that visually building trees, and moreover with possibly more than two branches per node, is good for learning purposes. Then, I think that trial and error is part of any learning process, so that I wanted to be able to make errors when building my trees, and later on to be able to see where they were. Also, I don't feel like paying to use such a software.
Any of these reasons are open to discussion of course, so if you think that I'm talking nonsense, formulate clearly your complaint in an email.
The choice of Java
I wrote the program in Java for several reasons. First of all, I can't stand the fact that when someone develops for a specific operating system, she implicitely says to a lot of potential users "sorry, I'd like to provide you with the software, unfortunately I won't be able to develop a version for your OS." Java came in to fill an important gap, mainly in the graphical user interface side, as its bytecode can be run on any Java virtual machine. Then, there is this web orientation of the language, with the pretty interesting concept of applet. Any user connected to the web with a Java-compatible browser (most of them, as far as I know) could run the web version of the software. In a nutshell, by using Java I ensured as little user discrimination as possible : theoretical platform independence with the virtual machine, and web-access independence with the application and the applet versions, which by the way share most of their code. As to the performance issue that some people like to pinpoint, I reckon that the program doesn't really suffer from being interpreted, since it doesn't perform that much computation after all. And finally, Java is a very cool language for a developer, with a lot of built-in APIs and a good object model.
In case you'd like to learn more about Java, have a go to Sun's Javasoft website, which is the first place you should go.