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:

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!):

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.