Note: There are two parts to this homework assignment.
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:
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 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.
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.
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."
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.
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.
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).
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.
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.
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.
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.