Homework 5: Extending Capture & Access Features to eClass

Note: There are two parts to this homework assignment.

Objective

In this homework assignment, you will become familiar with creating interfaces to capture and access classroom information using the INCA toolkit. The INCA toolkit provides a number of abstractions to facilitate the development and evolution of capture and access applications. INCA was designed to make the step from design to implementation easier, as well as to make it easier to extend functionality.

In part 1 of the homework assignment, you are asked to use the building blocks provided in INCA to develop an access application for eClass, the classroom capture system you have seen in class.  You can choose one of two possible access applications:

You may explore different variations to the ideas suggested above. Your grade for this part of the assignment will be dependent upon the successful development of a new and functional access behavior to the classroom. Your code must be compilable. If the use of your system is not obvious from its interface, then you should provide a brief explanation to the TA to describe how your system is intended to be used. While it is not necessary to justify the usability of any solution you provide, extra points will be awarded to solutions that are considered particularly creative or useful.

In part 2 of the homework assignment, you are asked to describe how to use the building blocks provided in INCA to develop an application that provides:

You do not have to generate compilable code, but your answer must contain enough detail to indicate your understanding of how this could be done.  You can include sketches of a potential screen design to make your design clearer to understand. However, it is most important that you provide an architectural description of how your system would be built using INCA.

Part 1.

You should pick one of the following ideas to implement as part 1 of your homework assignment. You may explore variations of these ideas, however, what you implement must ultimately be an alternate interface for reviewing an individual lecture or a collection of lectures that has been previously captured.

An alternate method for reviewing a particular lecture

Currently each lecture can be reviewed by the students through a "toilet roll" view that displays the slides laid end to end in the order they were created during the lecture.  Also, the current interface shows all of the handwriting on each slide.

Create an alternative interface that would allow the students to replay the lecture. This application would function in a manner similar to media players. However, instead of displaying a movie, it should playback the captured slides and animate the drawing of ink, all synchronized with the audio from the lecture. A play and stop button would allow the viewer to watch and listen to the lecture. A slider would allow the viewer to jump to a specific point during the lecture (or to scroll through the lecture). You should also consider providing a foreshadowing of handwriting, so that ink on a slide that is in the future is still visible to the student. Clicking on some "future ink" can automatically move the playback to that point during the lecture, allowing for random access into the future.  Similarly, clicking on some already fully drawn ink ("past ink") can jump the lecture playback into the past.

An alternate method for reviewing a collection of lectures

All the lectures are currently listed on a webpage that allows the students to select the particular lecture they wish to review. This interface does not enable viewers to easily view a number of different lectures at once (or a collection of slides from a number of differentlectures at the same time).

Create an application that would allow a student to create one or more study sheets. You can think of a single study sheet as an access interface that displays a set of slides from throughout the semester that a student thinks are important and related. You need to think about a way the student can create a study sheet. One option is to allow them to hand-select "important" slides from all lectures and then display these important slides in a single interface.

A variation of this idea is to create an application in which students can specify parameters for what to review. Sample queries include: "show me the all the slides captured between September 9, 2003 and September 17, 2003", "show me all the slides where Khai was the lecturer instead of Gregory", or "show me all the slides about toolkits."

Part 2.

In part 2 of the assignment, you must describe how you would implement the following capture functionality. You do not need to submit compilable code. However, you must provide enough detail to explain how the building blocks provided in INCA can be used to implement this application.

A method for students to capture notes during a lecture

Describe how to use INCA to create an application that supports capturing of typed notes generated by students during a lecture. This application should support the automatic association (or manual linking) of the typed notes from the student laptops with the slide and stroke information captured at the front of the room by the eBoard application. The application can synchronize what is typed (it could be each letter, or a word, or a sentence or a paragraph) into a text area with the captured information captured by the eBoard application.

The application should automatically associate and display the slides presented at the front of the room next to what the user is typing. The application also allows the user to manually specify what slides are most relevant to what she is typing.

You can provide sketches of the intended interface to clarify how you think the system would work. However, you must provide an architectural description of your capture system that reflects how it would be built in INCA on top of the existing eClass system.

Working with INCA

A version of INCA can be obtained here.

Documentation for INCA can be found inside that package or here. Please follow the installation instruction to make sure you have properly downloaded and installed INCA.

Note: You will be working with the classroom repository that is already connected to the Registry that is running on wall3.cc.gt.atl.ga.us. However, you are encouraged to perform this installation step so you can test the capture (with the CaptureTest.java file in the /sample_apps/ folder), the storage (with the StorageTest.java file), and retrieval of information (with the RetrieveTest.java file).

Tutorial & sample applications

As part of the documentation is a tutorial explaining how to use INCA, which can be found here. After reading the tutorial, you can see sample codes provided in the /sample_apps/ directory of the INCA package provided. In particular, the files RetrieveTest.java, SubscribeTest.java, and CaptureTest.java may be most relevant to this homework assignment.

How the eClass application works

The eClass application is composed of several different components: the eBoard application (which captures the slides and strokes), the AudioCapturer application (which captures the audio of the classroom), the eBoardViewer application which subscribes for the slides and strokes that are captured during the classroom, a Repository which stores all the captured information, and the Web interface that requests the captured information for the lecture students wish to review.

When the eBoard applications starts, it captures an event that specifies the start of the lecture. This event is tagged with an attribute named "ApplicationEvent" with values "SessionStartEvent". For each stroke and slide captured, it is tagged with attributes specifying the "TimeStamp", "CourseID", "CourseName", "LectureID", "LectureName", "Lecturer", "SlideID". For this course, the attribute value for the attribute named "CourseID" is always "1". The attribute values for the attribute named "Lecturer" can be either "Gregory Abowd" or "Khai Truong". The "LectureID" and "LectureName" changes in value for each date. Finally, the "SlideID" is an identifier for different slides and is used to differentiate between the Slides, but also to indicate to which Slide a Stroke belongs.

Queries can also be constructed to match keywords. Attributes named "Keyword" can be checked against to enable requests such as "slides about toolkits."

Note: there is a getRelatedAttributes() that can be used on queries to provide a list of attributes which you can then use to refine for requests for DataObjects captured. DataObjects can vary in size and will slow in returning to the access application. As a result, you should refine your access queries to ensure that get as few of the data you do not need as possible. For example, you should NEVER create a query to match only the "CourseID=1" . There are over a hundred thousand that would satisfy this query...thus asking for the related attributes for this query or worse yet the data that match this query will take a very long time. A query to match "CourseID=1" and "ApplicationEvent=SessionStartEvent" for example would be much better.

Reusable components

There are a number of reusable components for manipulating ink and audio provided in INCA. Ink components can be found in the package edu.gatech.coc.inca.lib.ink_ui.swing.*. These eBoard application (found in the /eclass/ folder) uses the WhiteBoard.java file. The eBoardViewer application uses the ExtendedWhiteBoard.java file which demonstrates how to subscribe for and handle ink information using the WhiteBoard components.

Audio components can be found in the package edu.gatech.coc.inca.lib.audio.jmf.*.

A clock component can be found in the package edu.gatech.coc.inca.arch.util.*. An example of how to use the clock component is found in the /sample_apps/ folder.



Deliverable

Please work on this homework assignment alone; please do not consult others.

Part 1 of this homework assignment should be done in JAVA, and needs to be compiled to run using SUN's JDK 1.4 or higher.

Please zip up source code and mail the zip file to the TA () when you have completed the assignment (and remember to CC yourself on the email).

The due date for this assignment is: November 10, 2003, 1:00 PM EST.