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