Cooperative development system Assistant's Assistant

[ Basic Information | Features | Download & Run | Screenshot | TODO ]

Basic Information

Assistant's Assistant is a cooperative development system to teach Java programming in a computerized laboratory with a single instructor and an arbitrary number of students. Conceptually, the system comprises a server and any number of clients. The server runs on the instructor's computer. Each student computer runs its own client instance. Assistant's Assistant can serve as an online file transfer system, as a cooperative development tool, or as a Java development environment.

Assistant's Assistant as an online file transfer system

As long as the server and the clients are active, Assistant's Assistant automatically, at regular intervals (every 3 seconds), copies Java source files from a designated directory on the instructor's computer to each of the students' computers. The instructor edits and saves his or her files in an arbitrary editor, and the system will continuously copy these files to the designated directories on the students' computers.

The instructor starts the server in the following way:

java -jar as2server.jar -d INSTR_DIR

INSTR_DIR denotes a directory on the instructor's computer from which the system will regularly copy *.java files to the students' computers.

Each student starts a client instance in the following way (after the instructor has initiated the server, of course):

java -jar as2client.jar SERVER -d STUD_DIR

SERVER denotes the server's hostname or IP address. When initiated, the client creates the directories STUD_DIR/assistant and STUD_DIR/me. Java source files from the instructor's directory INSTR_DIR will be copied into the directory STUD_DIR/assistant. The directory STUD_DIR/me will be used to store the student's own files.

Every 3 seconds, each client sends to the server a synchronization request, which contains the data about the files currently contained in the directory STUD_DIR/assistant. The server processes the request and sends to the client all files from the directory INSTR_DIR that have been created or modified since the last synchronization event (i.e., all files that the instructor has created or modified in the last 3 seconds). See this scheme for an example (note that LMT means last-modification time, i.e., the time of the most recent modification of a given file).

The client runs in a graphical user interface (GUI); see a screenshot. The main panel of the GUI is divided into two subpanels. In the left-hand subpanel, a student can view (but not edit) the contents of the directory STUD_DIR/assistant. In the right-hand subpanel, he or she can view and edit the contents of the directory STUD_DIR/me.

The contents of the left-hand subpanel are refreshed automatically, without any user intervention. After each synchronization event (i.e., every 3 seconds), the files currently open in the left-hand subpanel are automatically updated. If the instructor saves his or her file(s) frequently enough (or simply turns on the `autosave' option, available in many modern editors), the students will be able to observe the development of the program in real time on their computer screens, with no action required on their part.

To the top

Assistant's Assistant as a cooperative development tool

The button labeled `>' in the top-right corner of the left-hand subpanel copies the currently active file in the left-hand subpanel to the directory STUD_DIR/me and opens the copy in the right-hand subpanel. This button makes it possible to develop programs cooperatively. For instance, the instructor might write a skeleton of a program (or a partial solution), place it into his or her directory INSTR_DIR, and ask the students to complete it. The skeleton is automatically copied to the directory STUD_DIR/assistant of each student. After a student opens the skeleton in the left-hand subpanel and presses the button `>', the skeleton is copied to the directory STUD_DIR/me. The copy is immediately opened in the right-hand subpanel, where it can be edited. After the students have completed the program, the instructor might do the same in his or her own way by editing the skeleton. The students' left-hand subpanels (and corresponding files in their directories STUD_DIR/assistant) are automatically updated with the instructor's solution. Each student can then compare the instructor's solution with his or her own simply by comparing the contents of the left-hand subpanel with those of the right-hand subpanel.

To the top

Assistant's Assistant as a Java development environment

The left-hand subpanel of the GUI serves as a container of Java viewers, and the right-hand one as a container of Java editors. Besides the standard editing features, such as cut/copy/paste, undo/redo, find/replace, etc., the editors offer features such as syntax highlighting, brace matching, increasing and decreasing indentation, etc. Furthermore, Java source files in the directories STUD_DIR/assistant and STUD_DIR/me can be compiled and executed directly from within the GUI. The compiler's output is displayed in a separate subpanel. When the user clicks on a compilation error or warning, the GUI highlights the corresponding line in the corresponding source file. If a file compiles without errors, it can be executed.

The client can be initiated even if the server is not running. In this case, the left-hand subpanel can be ignored or hidden, and the GUI behaves as a pure Java development environment.

To the top


Luka Fürst
University of Ljubljana, Faculty of Computer and Information Science
Tržaška cesta 25
SI-1000 Ljubljana
Slovenia