Benjamin Lubin:
Selected Course Projects
The project consisted of a novel theoretical
analysis of an individual agent's optimal strategy in a
taxicab/delivery domain. Because such a strategy is computationally
intractable, a practical approximation algorithm was devised. A
simulation environment was developed to compare this algorithm with a
previous approach. Whenever possible, the theoretical framework was
used to try to inform both the new algorithm and the heuristics used
in previous approaches.
The project concerned a type of text classification
problem in which each document in a collection of documents belongs to
a non-empty subset of possible categories. It explored the
application of a Bayesian network with a QMR-DT-like structure as a
classifier to this domain. The feature space of the problem was
reduced using the Mutual Information metric; and a novel modification
of the MI formula was also evaluated. A loopy form of Pearl's
Belief Revision algorithm was used to calculate the most likely set of
topics for each text. The efficacy of baseline and novel feature
selection methods and various inference methods was determined by
calculating several accuracy statistics on a large dataset of 20
Usenet Newsgroups.
This project investigated a novel approach for
audio compression that can be used for both lossy and lossless
compression. The approach is similar to that taken by some of the
existing lossless coders in that instead of storing individual sample
amplitudes it stores parameters to a predictive function and to the error
from this prediction. However, instead of using a linear predictive
function over a fixed window, this approach allows the approximation
to cover regions of variable length and lets a variable number of
functions contribute to the approximation of each sample. For this
project, the theory backing the method was elucidated and an
implementation of the algorithm was developed.
The project built upon previous work on a method
of automatically completing missing parts of an image by iteratively
approximating the unknown regions and compositing these approximated
fragments into the original image. The project consisted of modifying
the existing algorithm in several important ways, most importantly to enable
the inclusion of a KD-Tree to speed up the fragment search process.
Both algorithms were implemented in Java using the Java Advanced
Imaging APIs, empirically establishing the improved algorithm as at
least 16x faster in tested cases. Thus, the new algorithm permitted
the effective use of images of significantly higher resolution than
those in previous work.
| Original |
Final Image |
 |
 |
Animated Gif showing this image being completed
| Original |
Final Image |
 |
 |
Animated Gif showing this image being completed
| Original |
Final Image |
 |
 |
Animated Gif showing this image being completed
More information on this project is available here.
All the students in CS286r built a single
combinatorial exchange by working in groups to produce the various
modules in the exchange. My group was given the task of identifying
and implementing strategies whereby the agents in the exchange could
obtain extra surplus by misrepresenting their values for goods and/or
by manipulating the exchange's activity rules. I (and another student)
concentrated on analyzing how a given agent should incorporate
predictions of competing agents' valuations into its strategy. To
address this, we determined that by having an agent solve a set of
Mixed Integer Programs (MIPs) it could determine the amount it should
shave down its valuation, given its probabilistic knowledge of other
agents in the exchange, in order to try to maximize its profit, an
approach that I then added to our agents.
Additionally, a number of interesting systems
issues arose in designing an implementation of the exchange, several
of which I tackled independently. In order to permit the many modules
in the system to be easily composed, I designed a specialized
infrastructure that not only loaded and wired together these modules
but also isolated a given module's APIs, resulting in a far easier
integration. Further, to speed computation time, this infrastructure
was designed to accommodate as much parallel processing as possible.
Additionally, the various machines that ran the exchange each needed
to be able to solve Mixed Integer Programs (MIPs). To this end, I
designed a distributed infrastructure to permit the parallel solution
of multiple MIPs by multiple processors/machines on behalf of multiple
client processes/machines. Based on these (and other) designs, I
wrote a significant portion of the system code, a contribution
that ultimately comprised over 10,000 lines.
The research group that formed out of this
project has published a series of
papers
Scratch is a visual programming language for manipulating
media. With it children can produce complex interactive projects with
images, motion and sound. Thus far, Scratch has been implemented as a
successful desktop application; however, there are a number of
benefits that might arise from having Scratch operate as an Applet
within a web browser. Towards this goal, this project is a
prototype of such an Applet and details both its design goals and
implementation. Considerable attention is also given to future
directions for work based on the Applet.
CS 175/275 (taken as an undergrad):
This project built on basic ray tracing code used
in the course, by adding a number of additional known features and
a striking novel one.
The known features included: refraction, bump mapping,
texture mapping, fractal triangles (mountain shapes, etc), and
cylindrical/tube primitives. The novel feature consisted of an
algorithm for directly rendering 3D parametric equations in the image,
and an implementation thereof. This novel ability produced the
striking results shown in the images below, several of which were
placed in the class 'hall of fame'.


