One thing that is difficult about assignments is that no two programming environments are identical. While your program may work flawlessly on your Mac computer at home using the XWindows API bundled with OS/X, when the TA starts the assignment, it may not work at all on his/her machine. To address this issue, two options are provided for a programming environment. First, if you do not have access to your own computer, you may write the program on the student.cs environment. Second, if you wish to program on your home machine without the requirement of a networked X connection, you can use a virtual machine which we provide as your programming environment.
The virtual machine can be downloaded from here. The VM is an Ubuntu distribution of the Linux operating system. You can run the VM by importing it into Virtual Box, free VM software. There are Mac, Linux, Solaris, and Windows variants of Virtual Box.
There are things missing from the VM. For example, the xemacs and the g++ compiler are not installed by default. However, if you type xemacs into the VM's command prompt, it notes that it isn't installed and gives you the command to add the package to your VM. A readme file on the desktop will give you the username and password for the VM for commands that require superuser access. Finally, the Android programming tools are installed on the VM, so configuring your system for later assignments is simplified with the VM.
We strongly encourage use of the VM. If you use the VM, then the TAs will have the identical environment for grading purposes to your development environment. If you cannot use the VM, then the student.cs. environment is your fallback option.
| Assignment 1 | Learning Goal: Visual composition. This assignment requires using XLib. | Friday, January 21, midnight |
| Assignment 2 | Learning Goal: Event-based interaction. This assignment requires implementing an event-based user interface using the Java Swing library. | Friday, Feb 4, midnight |
| Assignment 3 | Learning Goal: Custom controls. This assignment requires designing custom controls in the Java language. | Friday, February 14, midnight |
| Assignment 4 | Learning Goal: App-centric programming. This assignment requires you to develop an Android application. | Friday, March 18, midnight |
| Assignment 5 | Learning Goal: Introductory graphics This assignment requires implementing affine transforms and direct manipulation in a graphical interface. | Monday, April 4, midnight |