|
Alan Kaminsky
|
|
•
|
|
Department of Computer Science
|
|
•
|
|
Rochester Institute of Technology
|
|
•
|
|
4486 +
2220 =
6706
|
|
Home Page
|
Research Interests and Projects
Prof. Alan Kaminsky
Rochester Institute of Technology -- Department of Computer Science
Areas of Interest
Funding
Working With Me on a Capstone
Parallel Computing
Cryptography
Computational Science
Inactive Projects
My Students
Areas of Interest
Primary Areas of Interest
- Parallel computing
- Cryptography
- Computational science
I am willing to be the chair, reader, or observer
for a master's project or thesis
in my primary areas of interest.
Secondary Areas of Interest
- Distributed systems
- Ad hoc networking
- Security
I am willing to be the reader or observer
for a master's project or thesis
in my secondary areas of interest.
Funding
At this time I do not have any funding
for research assistantships, teaching assistantships,
doctoral students, or postdoctoral positions.
The Computer Science Department offers graduate assistantships
for Computer Science M.S. students.
These are apportioned by the Graduate Coordinator,
Prof. Hans-Peter Bischof
(hpb@cs.rit.edu).
Please contact Prof. Bischof for further information.
Working With Me on a Capstone
If you are considering working with me as the chair
on your master's capstone (project or thesis)
in one of my primary areas of interest,
first take the time to investigate
the project and thesis topics listed below.
Read what's been published,
read previous students' capstone reports,
find out which courses you need to have taken,
become familiar with the topics.
Then come talk with me about choosing a topic.
While I'm especially keen on the topics listed below,
I'm also open to similar topics you might propose.
I consider the master's capstone
to be primarily a learning experience
where we work together one-to-one
rather than in a class with many students.
For a master's project,
you should learn as much as in one regular course;
for a master's thesis,
you should learn as much as in two regular courses.
(That's why the master's capstone carries course credit.)
This learning cannot take place
unless there is sustained direct contact between you and me.
Accordingly, my practice is to hold
a weekly, half-hour, face-to-face meeting with you
as long as you are working on your capstone.
During the meeting we review your progress,
resolve any questions or difficulties you might be having,
and plan your next steps.
If you are not willing to commit to a weekly face-to-face meeting
until your capstone is completely finished,
I am not willing to commit to chair your committee.
For a master's project,
your capstone must demonstrate mastery
of computer science in general
and of your chosen topic in particular.
For a master's thesis,
your capstone must demonstrate innovation
as well as mastery --
you must come up with a new idea or ideas,
something that could be published
in an academic research journal or conference.
For this reason,
a master's thesis must include
a comprehensive literature survey
to show what's been done in your topic area
and to show why your contribution is new.
A master's project should also include a literature survey,
but not necessarily to the same depth as a master's thesis.
Parallel Computing
My Projects
-
PJ -- Parallel Java Library
Parallel Java (PJ)
is an API and middleware
for object oriented parallel programming
in 100% Java
on shared memory multiprocessor (SMP) parallel computers,
cluster parallel computers,
and hybrid SMP cluster parallel computers.
-
GPU Computing
I have acquired a desktop supercomputer
with a massively multithreaded GPU coprocessor,
the NVIDIA Tesla C2075
(http://www.nvidia.com/object/personal-supercomputing.html).
The Tesla C2075 can only be programmed in C
using NVIDIA's CUDA API.
A CUDA program consists of one or more "kernels"
which run in parallel on the GPU,
coupled with a main program that runs on the CPU.
While the kernels have to be written in C/CUDA,
the main program can be written in any language.
The JCuda API
(http://www.jcuda.de/)
lets a Java main program run CUDA kernels on the GPU.
One of my students is working on a project
to let PJ programs run CUDA kernels on the GPU.
-
Parallel SAT and MAX-SAT solvers
The Boolean satisfiability (SAT) problem is as follows:
Given a Boolean expression involving certain variables,
find an assignment of true or false (0 or 1) values
to the variables
that satisfies the expression
(that makes the expression true).
Usually the expression consists of a list of clauses,
all of which must be true
to make the whole expression true.
The maximum satisfiability (MAX-SAT) problem
is to find an assignment
that maximizes the number of satisfied (true) clauses.
Although SAT is an NP-complete problem --
that is, very hard to solve in general --
SAT solver programs often succeed remarkably well
on SAT problems encountered in practice.
SAT and MAX-SAT solver programs come in two flavors:
complete solvers that are guaranteed to find the correct solution,
and incomplete solvers that may find a suboptimal solution.
Incomplete solvers are much easier to parallelize
than complete solvers.
Possible schemes for parallel incomplete solvers include:
-
Massively parallel stochastic local search (MPSLS) algorithms.
Starting from a random initial assignment,
the solver steps from one assignment to another
trying to maximize the number of satisfied clauses.
At each step,
the solver evaluates, in parallel,
a very large number
of candidates for the next assignment,
then steps to the best one.
Many different heuristics for choosing the candidate assignments are possible.
-
Massively parallel randomized approximation (MPRA) algorithms.
The solver evaluates, in parallel,
a very large number of randomly chosen assignments,
and picks the one with the most satisfied clauses.
Many different heuristics for choosing the random assignments are possible.
I am working on
a particular MPSLS algorithm for SAT and MAX-SAT
that runs in parallel on the GPU,
which I call MadMaxSat.
Master's Capstone Topics
-
Parallel SAT/MAX-SAT solvers with PJ.
Develop a scheme for a parallel incomplete solver;
implement the solver in Java using PJ;
measure its performance on a range of SAT and MAX-SAT problems;
compare its performance to existing (non-parallel)
incomplete solvers.
Suitable for: Project or thesis.
Prerequisites:
4005-735, Parallel Computing I.
Status: Available.
-
Parallel SAT/MAX-SAT solvers with the GPU.
Same as the previous topic,
except implement the solver to run on the GPU.
Suitable for: Project or thesis.
Prerequisites:
4005-735, Parallel Computing I;
familiarity with C and CUDA.
Status: Available.
-
Parallel solvers for other hard problems with PJ.
SAT and MAX-SAT are not the only NP-hard problems in the world.
Other hard problems may be amenable
to MPSLS, MPRA, or similar algorithms.
In the Spring 2012 quarter,
students in my Parallel Computing II class
investigated parallel algorithms for the
knapsack,
rectilinear minimum Steiner tree,
bin packing,
and minimum vertex cover problems.
Select a hard problem;
develop a MPSLS, MPRA, or similar parallel algorithm for the problem;
implement a solver program in Java using PJ;
measure its performance on a range of problem instances;
compare its performance to existing (parallel and/or non-parallel) algorithms.
Suitable for: Project or thesis.
Prerequisites:
4005-735, Parallel Computing I.
Status: Available.
-
Parallel solvers for other hard problems with the GPU.
Same as the previous topic,
except implement the solver to run on the GPU.
Suitable for: Project or thesis.
Prerequisites:
4005-735, Parallel Computing I;
familiarity with C and CUDA.
Status: Available.
My Students' Projects
Cryptography
My Projects
-
Parallel Crypto
I am investigating the application of parallel computing
to cryptographic problems, including:
- Parallel computation of cryptographic primitives
- Parallel attacks on cryptographic primitives
- Parallel statistical analysis of cryptographic primitives
The term "cryptographic primitive"
refers to a block cipher, stream cipher,
one-way hash function, message authentication code (MAC),
and so on.
-
Applications of SAT Solvers and MAX-SAT Solvers in Cryptography
Certain cryptographic attacks,
such as finding the secret key being used with a block cipher
or finding a collision in a hash function,
can be expressed as Boolean satisfiability (SAT) problems
and solved by a SAT solver program.
Other cryptographic attacks,
such as deducing the secret key being used with a block cipher
given (possibly degraded) side channel information obtained from RAM,
can be expressed as maximum satisfiability (MAX-SAT) problems
and solved by a MAX-SAT solver program.
I am investigating:
-
The effectiveness of existing SAT and MAX-SAT solvers
for solving cryptographic problems
-
The strength of cryptographic primitives
against attacks using existing SAT and MAX-SAT solvers
-
New SAT and MAX-SAT solvers
developed specifically for solving cryptographic problems
Master's Capstone Topics
-
SAT or MAX-SAT based attacks.
Use a SAT solver or MAX-SAT solver
to carry out an attack on a cryptographic primitive.
Investigate the time required for the attack
as a function of the problem size
for reduced versions of the cryptographic primitive;
e.g., partial key recovery for a cipher,
partial collisions for a hash function,
reduced-round variants, etc.
Also investigate the time required for a brute force attack
as a function of the problem size
for reduced versions of the cryptographic primitive.
Extrapolate the data to larger problem sizes
to determine whether the SAT or MAX-SAT based attack
can break the cryptographic primitive
in less time than brute force.
Suitable for: Project or thesis.
Prerequisites:
4005-705, Cryptography.
Status: Available.
-
Cold boot key recovery with a MAX-SAT solver.
A block cipher implementation,
while not storing the secret encryption key in RAM,
might store the round subkeys in RAM.
A cold boot attack can recover these round subkeys from RAM,
even after the power has been turned off,
although the RAM contents might have degraded.
Cold boot key recovery works as follows:
express the block cipher's key scheduling algorithm
as a Boolean formula
involving the secret key and the round subkeys;
plug in the (possibly degraded) round subkey values
extracted from RAM into the formula;
run the formula through a MAX-SAT solver;
the solution to the MAX-SAT problem gives the secret key.
Investigate the effectiveness of this attack
as a function of the block cipher strength (number of rounds)
and level of degradation of the round subkey data.
Suitable for: Project or thesis.
Prerequisites:
4005-705, Cryptography.
Status: Available.
-
Meet-in-the-middle attack on a lightweight block cipher.
The MITM attack is described in a paper
presented at the 2012 Conference on Selected Areas in Cryptography
(preprint PDF).
The MITM attack might be especially effective
against a lightweight block cipher,
which typically has a simple data path and key schedule.
In particular,
dependencies between bits of the round subkeys
might reduce the work even further
below what is described in the paper
(which assumes the round subkeys are independent).
Develop a MITM attack against a lightweight block cipher;
determine how many rounds can be broken
with less work than brute force;
implement a program to demonstrate the attack's effectiveness;
[optionally] implement the attack on a parallel computer.
It would be a good idea
to begin this investigation as an independent study
to determine the feasibility of the attack,
before proceeding to a project or thesis.
Suitable for: Project or thesis.
Prerequisites:
4005-705, Cryptography;
[optionally] 4005-735, Parallel Computing I.
Status: Available.
-
Parallel cube attacks.
The cube attack is described in this paper:
The cube attack is highly parallelizable.
Design and implement, in Java using PJ,
a hybrid parallel program
to carry out a cube attack
on a cryptographic primitive.
Investigate the time required for the attack
as a function of the problem size
and the number of processors
for reduced versions of the cryptographic primitive;
e.g., partial key recovery for a cipher,
partial collisions for a hash function,
reduced-round variants, etc.
Also investigate the time required for a brute force attack
as a function of the problem size
and the number of processors
for reduced versions of the cryptographic primitive.
Extrapolate the data to larger problem sizes
to determine whether the cube attack
can break the cryptographic primitive
in less time than brute force.
Suitable for: Project.
Prerequisites:
4005-705, Cryptography;
4005-735, Parallel Computing I.
Status: Available.
-
Parallel cube attacks using the GPU.
Same as the previous project,
except design and implement a GPU parallel program
to run on the Tesla C2075 GPU supercomputer.
Suitable for: Project.
Prerequisites:
4005-705, Cryptography;
4005-735, Parallel Computing I;
familiarity with C and CUDA.
Status: Available.
-
Parallel greedy distinguishers.
A distinguisher is an algorithm
that can tell whether a black-box function,
such as a cryptographic primitive,
is not a random function.
If a cryptographic primitive
can be distinguished from a random function,
the primitive's security is questionable.
One particular distinguisher algorithm,
the greedy distinguisher,
is described in this paper:
-
P. Stankovski.
Greedy distinguishers and nonrandomness detectors.
Progress in Cryptology -- INDOCRYPT 2010,
LNCS 6498, 2010, pages 210-226.
The greedy distinguisher is highly parallelizable.
Design and implement, in Java using PJ,
a hybrid parallel program
to apply the greedy distinguisher
to a cryptographic primitive.
Investigate the time required for the distinguisher
as a function of the problem size
and the number of processors
for reduced versions of the cryptographic primitive;
e.g., partially known key for a cipher,
reduced-round variants, etc.
Extrapolate the data to larger problem sizes
to determine whether the distinguisher succeeds
in less time than brute force.
Suitable for: Project.
Prerequisites:
4005-705, Cryptography;
4005-735, Parallel Computing I.
Status: Available.
-
Parallel greedy distinguishers using the GPU.
Same as the previous project,
except design and implement a GPU parallel program
to run on the Tesla C2075 GPU supercomputer.
Suitable for: Project.
Prerequisites:
4005-705, Cryptography;
4005-735, Parallel Computing I;
familiarity with C and CUDA.
Status: Available.
-
Parallel statistical analysis using the GPU.
Cryptographic primitives are supposed to behave
as random functions.
Various statistical tests can be performed
to determine whether a cryptographic primitive
behaves as a random function.
Moreover, the statistical tests
can be performed in parallel.
I have developed an initial
GPU parallel statistical testing framework.
Extend the framework
to include additional statistical tests
and additional input sequences.
Use the framework to determine the statistical characteristics
of selected cryptographic primitives.
Suitable for: Project.
Prerequisites:
4005-705, Cryptography;
4005-735, Parallel Computing I;
familiarity with C and CUDA.
Status: Available.
-
Massively parallel private information retrieval (PIR).
The following paper --
- E. Blass, R. Di Pietro, R. Molva, and M. Onen. PRISM -- privacy-preserving search in MapReduce. Cryptology ePrint Archive, Report 2011/244, May 9, 2012. http://eprint.iacr.org/2011/244
describes a system that solves the following problem:
Given a group of large files, containing encrypted words, stored in the cloud,
determine which file(s) contain a given target word
by running a Hadoop map-reduce job over the files in the cloud,
without the cloud learning what the words in the files are,
without the cloud learning what the target word is,
and without the cloud learning which file(s) contain the target word.
I have an idea for
a similar but simpler PIR scheme,
based on "blinded correlations,"
that potentially requires less user-side computation,
less cloud-side computation,
and less network traffic.
Design and implement the blinded correlation PIR scheme
as a Hadoop map-reduce program;
download the above authors' implementation of the PRISM scheme;
measure both schemes' performance in the cloud
doing identical queries.
Suitable for: Project or thesis.
Prerequisites:
4005-705, Cryptography;
4005-730, Distributed Systems;
familiarity with Java and Hadoop.
Status: Available.
My Students' Projects
-
Santhosh Kantharaju Siddappa.
"SAT Based Attacks on SipHash."
RIT Computer Science M.S. project, in progress.
-
Christopher Wood.
"Large Substitution Boxes with Efficient Combinational Implementations."
RIT Computer Science M.S. thesis, in progress.
-
David Webster.
"Versatile FPGA Architecture for Skein Hashing Algorithm."
RIT Computer Engineering M.S. thesis, June 2011.
-
David Wagner.
"Analysis of Symmetric Key Establishment Based on Reciprocal Channel Quantization."
RIT Electrical Engineering M.S. thesis, November 2010.
-
Philip Doughty.
"A Generic Attack on CubeHash, a SHA-3 Candidate."
RIT Computer Engineering M.S. thesis, August 2010.
-
Sudarshan Rao.
"Parallel Cube Testing on GPUs."
RIT Computer Science M.S. project, June 2010.
http://www.cs.rit.edu/~ark/students/sdr3491/index.shtml
-
Benjamin Bloom.
"SAT Solver Attacks on CubeHash."
RIT Computer Science M.S. project, May 2010.
http://www.cs.rit.edu/~ark/students/bwb1636/index.shtml
-
Aric Schorr.
"Performance Analysis of a Scalable Hardware FPGA Skein Implementation."
RIT Computer Engineering M.S. thesis, January 2010.
-
Joseph Testa.
"Investigations of Cellular Automata Based Stream Ciphers."
RIT Computer Security and Information Assurance M.S. thesis, May 2008.
http://www.cs.rit.edu:8080/ms/static/ark/2007/3/jst2912
-
Tigin Kaptanoglu.
"Performance Evaluation of eXtended Sparse Linearization in GF(2) and GF(28)."
RIT Computer Science M.S. thesis, March 2007.
http://www.cs.rit.edu:8080/ms/static/spr/2006/3/txk4406/index.html
-
Roderic Campbell.
"Efficient Encryption on Limited Devices."
RIT Computer Science M.S. project, July 2006.
http://www.cs.rit.edu:8080/ms/static/ark/2005/4/rmc8917/index.html
-
Jisoo Kim.
"Group Key Agreement Protocols with Implicit Key Authentication."
RIT Computer Science M.S. project, July 2005.
http://www.cs.rit.edu:8080/ms/static/spr/2004/4/jsk4445/index.html
-
Kevin Ligozio.
"Jini Distributed Key Exchange and File Transfer Service with Digital Signatures."
RIT Computer Science M.S. thesis, November 2004.
http://www.cs.rit.edu:8080/ms/static/spr/2004/1/kml4510/index.html
Computational Science
My Projects
-
MRI Spin Relaxometry
MRI spin relaxometry is the process
of recovering the spin density spectrum
from the time samples of the spin signal
for each pixel of a magnetic resonance image.
Since healthy tissue exhibits different spin relaxation rates
from diseased tissue,
MRI spin relaxometry potentially has utility
for diagnosing disease.
However, recovering the spin relaxation rates
involves solving an inverse problem
which requires substantial computation.
The computation's running time can be reduced
by processing the pixels in parallel on a parallel computer.
I developed a cluster parallel MRI spin relaxometry program.
The program is in package
edu.rit.mri
in the Parallel Java Library.
The program is described in detail in Chapter 36
of my textbook Building Parallel Programs.
-
Phylogenetic Tree Construction
A phylogenetic tree shows the evolutionary relationships
among a series of organisms,
as inferred by comparing the organisms'
DNA or protein sequences.
For further information,
see Michael Felsenstein, Inferring Phylogenies
(Sinauer Associates, 2004).
I developed a hybrid parallel phylogenetic tree construction program
using the maximum parsimony technique.
The program is in package
edu.rit.compbio.phyl
in the Parallel Java Library.
The program is described in detail in Chapter 38
of my textbook Building Parallel Programs.
Here is the output the program produced
when given the DNA sequences for a certain gene
in 11 iguana species:
iguana
Master's Capstone Topics
-
Computational science with PJ.
Design and implement,
in Java using PJ,
a parallel program
to solve some massive computing problem
in some domain,
such as computational astrophysics,
computational biology,
computational chemistry,
computational geology,
computational medicine,
and so on.
Measure the parallel program's performance
and compare to the performance of existing programs.
Suitable for: Project or thesis.
Prerequisites:
4005-735, Parallel Computing I.
Status: Available.
-
Computational science with the GPU.
Design and implement
a GPU parallel program
to solve some massive computing problem
in some domain,
such as computational astrophysics,
computational biology,
computational chemistry,
computational geology,
computational medicine,
and so on.
Measure the parallel program's performance
and compare to the performance of existing programs.
Suitable for: Project or thesis.
Prerequisites:
4005-735, Parallel Computing I;
familiarity with C and CUDA.
Status: Available.
-
Automatic differentiation in Java.
Many numerical algorithms,
including solving systems of nonlinear equations
and finding minima of multidimensional functions,
require computing both the values
and the derivatives of a function.
Automatic differentiation is a technique
that takes the source code for computing a function
and automatically generates the source code
for computing the derivative of that function.
For further information, see
A. Griewank and A. Walther,
Evaluating Derivatives:
Principles and Techniques of Algorithmic Differentiation
(SIAM, 2008).
Existing automatic differentiation tools
(which support scientific programming languages like Fortran and C)
do source-to-source transformations,
must be run before the code is compiled,
and are rather awkward to use.
In Java, however,
an automatic differentiation tool
could take the compiled bytecodes for a function
and automatically generate the compiled bytecodes
for the derivative of that function;
furthermore, this could be done at run time
in a manner completely transparent to the programmer.
Design and implement a Java tool
that does automatic differentiation based on Java bytecodes
both at run time and at compile time;
use the tool to implement a numerical algorithm
that computes derivatives;
measure the performance of the tool-generated derivative code
versus hand-generated derivative code.
Suitable for: Project or thesis.
Prerequisites:
Familiarity with the Java Virtual Machine specification
and the Java class file format.
Status: Available.
My Students' Projects
Inactive Projects
My Projects
I am no longer actively working on these projects.
-
Tuple Board
The Tuple Board (TB) is a new distributed computing paradigm
for developing collaborative applications
running on ad hoc networks of mobile computing devices.
The Tuple Board Library is a tuple board API and middleware
written in 100% Java.
-
Many-to-Many Invocation (M2MI)
M2MI is similar to Java Remote Method Invocation (RMI),
except it is based on a broadcast communication medium
instead of point-to-point communication channels.
M2MI lets one device simultaneously invoke a method
on multiple target devices.
My Students' Projects
-
Wesley Belisle.
"Multicast Tuple Board Communication Layer."
RIT Computer Science M.S. project, November 2009.
http://www.cs.rit.edu/~ark/students/wbb2544/index.shtml
-
Travis Thomas.
"J2ME Version of Tuple Board."
RIT Computer Science M.S. project, May 2009.
http://www.cs.rit.edu/~ark/students/tmt0590/index.shtml
-
Corey Andalora.
"Monitoring Software Using Sun SPOTs."
RIT Computer Science graduate independent study project, February 2008.
http://www.cs.rit.edu/~ark/students/cja9200/index.shtml
-
Kyle Morse.
"Securing Tuple Space: Secure Ad Hoc Group Communication Using PKI."
RIT Computer Science M.S. project, July 2007.
http://www.cs.rit.edu:8080/ms/static/ark/2006/4/krm4686/index.html
-
Yutao Cheng.
"Ad Hoc Collaborative Photo Sharing With a Tuple Board."
RIT Computer Science M.S. project, August 2006.
http://www.cs.rit.edu:8080/ms/static/ark/2005/4/yxc6939/index.html
-
Joel Varela Donado.
"M2MI Service Discovery Middleware Framework."
RIT Computer Science M.S. project, June 2005.
http://www.cs.rit.edu:8080/ms/static/hpb/2004/4/jxv0462/index.html
-
Chih-Yu Tang.
"A Generic Framework for the Personal Omni-Remote Controller Using M2MI."
RIT Computer Science M.S. thesis, April 2005.
http://www.cs.rit.edu:8080/ms/static/ark/2004/3/cxt6239/index.html
-
Robert Whitcomb.
"M2MIMud."
RIT Computer Science M.S. project, February 2005.
http://www.cs.rit.edu:8080/ms/static/ark/2004/3/rjw2183/index.html
-
Ravi Bhatia.
"MFS: M2MI File System."
RIT Computer Science M.S. project, April 2004.
http://www.cs.rit.edu:8080/ms/static/ark/2003/2/rnb1914/index.html
-
Chaithanya Bondada.
"Tuple Board: A New Distributed Computing Paradigm for Mobile Ad Hoc Networks."
RIT Computer Science M.S. project, January 2004.
http://www.cs.rit.edu:8080/ms/static/ark/2003/2/cxb3178/index.html
-
Jefferson Tuttle.
"Security in an Ad Hoc Network Using Many-to-Many Invocation."
RIT Computer Science M.S. project, May 2003.
http://www.cs.rit.edu:8080/ms/static/ark/2002/3/jst1734/index.html
My Students
In Progress
-
Richard Ballard.
"An Investigation of Two Types of Intrusion Prevention Systems."
RIT Computer Science M.S. project, in progress.
-
Asma'u Sani Mohammed.
"Benchmarking Parallel Java."
RIT Computer Science M.S. project, in progress.
-
Santhosh Kantharaju Siddappa.
"SAT Based Attacks on SipHash."
RIT Computer Science M.S. project, in progress.
-
Christopher Wood.
"Large Substitution Boxes with Efficient Combinational Implementations."
RIT Computer Science M.S. thesis, in progress.
Completed
-
Michael Adams.
"A Parallel Framework for NP Combinatorial Optimization Problems."
RIT Computer Science M.S. project, May 2013.
http://www.cs.rit.edu/~ark/students/mna4773/index.shtml
-
David Flanagan.
"Smartphone Packet Relay Networks."
RIT Computer Science M.S. project, August 2012.
-
Corey Andalora.
"AMALGAMATE -- A Board Gaming Framework Using PDAs."
RIT Computer Science M.S. project, June 2012.
-
Bo Li.
"Energy-Aware Replica Selection for Data-Intensive Services in Cloud."
RIT Computer Science M.S. thesis, May 2012.
-
Nishad Patel.
"Parallel Animated Image File Generation."
RIT Computer Science M.S. project, May 2012.
http://www.cs.rit.edu/~ark/students/nxp3932/index.shtml
-
Andrew Darling.
"Parallel Implementation of Maximum Parsimony Search Algorithm on Multicore CPUs and Clusters."
RIT Bioinformatics M.S. thesis, November 2011.
-
David Webster.
"Versatile FPGA Architecture for Skein Hashing Algorithm."
RIT Computer Engineering M.S. thesis, June 2011.
-
David Wagner.
"Analysis of Symmetric Key Establishment Based on Reciprocal Channel Quantization."
RIT Electrical Engineering M.S. thesis, November 2010.
-
Jason Winnebeck.
"RealDB: Low-Overhead Database for Time-Sequenced Data Streams in Embedded Systems."
RIT Computer Science M.S. project, October 2010.
-
Philip Doughty.
"A Generic Attack on CubeHash, a SHA-3 Candidate."
RIT Computer Engineering M.S. thesis, August 2010.
-
Xi He.
"Improved Parallel Java Cluster Middleware."
RIT Computer Science M.S. project, June 2010.
http://www.cs.rit.edu/~ark/students/xxh2229/index.shtml
-
Yandong Wang.
"NVIDIA CUDA Architecture-Based Parallel Incomplete SAT Solver."
RIT Computer Science M.S. project, June 2010.
http://www.cs.rit.edu/~ark/students/yxw9319/index.shtml
-
Sudarshan Rao.
"Parallel Cube Testing on GPUs."
RIT Computer Science M.S. project, June 2010.
http://www.cs.rit.edu/~ark/students/sdr3491/index.shtml
-
Benjamin Bloom.
"SAT Solver Attacks on CubeHash."
RIT Computer Science M.S. project, May 2010.
http://www.cs.rit.edu/~ark/students/bwb1636/index.shtml
-
John Vellozzi.
"RMIP: An RMI-Specific Profiler."
RIT Computer Science M.S. project, May 2010.
-
Omonbek Salaev.
"Parallel Datastore System for Parallel Java."
RIT Computer Science M.S. project, January 2010.
http://www.cs.rit.edu/~ark/students/obs8529/index.shtml
-
Aric Schorr.
"Performance Analysis of a Scalable Hardware FPGA Skein Implementation."
RIT Computer Engineering M.S. thesis, January 2010.
-
Wesley Belisle.
"Multicast Tuple Board Communication Layer."
RIT Computer Science M.S. project, November 2009.
http://www.cs.rit.edu/~ark/students/wbb2544/index.shtml
-
Jacob Hays.
"Control of Self-Reconfigurable Robot Teams for Sensor Placement."
RIT Computer Science M.S. thesis, November 2009.
-
Travis Thomas.
"J2ME Version of Tuple Board."
RIT Computer Science M.S. project, May 2009.
http://www.cs.rit.edu/~ark/students/tmt0590/index.shtml
-
Bryan Woodard.
"Distributing Partially Connected Feed-Forward Neural Networks for Faster Recall."
RIT Computer Science M.S. project, May 2009.
-
Keith Needels.
"Detecting and Recovering from Overlay Routing Attacks in Peer-to-Peer Distributed Hash Tables."
RIT Computer Science M.S. thesis, March 2009.
-
Jeremy Espenshade and Michael Romero.
"VLSI Design Rule Checking in Parallel on the GPU."
RIT Computer Science graduate independent study project, November 2008.
http://www.cs.rit.edu/~ark/students/mrr2732/index.shtml
-
Joseph Testa.
"Investigations of Cellular Automata Based Stream Ciphers."
RIT Computer Security and Information Assurance M.S. thesis, May 2008.
http://www.cs.rit.edu:8080/ms/static/ark/2007/3/jst2912
-
Corey Andalora.
"Monitoring Software Using Sun SPOTs."
RIT Computer Science graduate independent study project, February 2008.
http://www.cs.rit.edu/~ark/students/cja9200/index.shtml
-
Mark Sanders.
"Simulator to Measure Low Probability of Detection for Neighbor Discovery Protocols."
RIT Computer Science M.S. project, December 2007.
http://www.cs.rit.edu:8080/ms/static/ark/2007/2/mas5729/index.html
-
Hardik Parikh.
"Solving an MRI Spin Relaxometry Problem Using Parallel Java."
RIT Computer Science M.S. project, October 2007.
http://www.cs.rit.edu:8080/ms/static/ark/2007/1/hjp0608/index.html
-
Kyle Morse.
"Securing Tuple Space: Secure Ad Hoc Group Communication Using PKI."
RIT Computer Science M.S. project, July 2007.
http://www.cs.rit.edu:8080/ms/static/ark/2006/4/krm4686/index.html
-
Tigin Kaptanoglu.
"Performance Evaluation of eXtended Sparse Linearization in GF(2) and GF(28)."
RIT Computer Science M.S. thesis, March 2007.
http://www.cs.rit.edu:8080/ms/static/spr/2006/3/txk4406/index.html
-
Aakash Chauhan.
"Routing in Anhinga."
RIT Computer Science M.S. project, October 2006.
http://www.cs.rit.edu:8080/ms/static/hpb/2006/1/adc4143/index.html
-
Almann Goo.
"JaCIL: A CLI to JVM Compiler."
RIT Computer Science M.S. project, September 2006.
http://www.cs.rit.edu:8080/ms/static/ark/2006/1/atg2335/index.html
-
Terence O'Brien.
"Speedup of Parsimonious Phylogenetic Tree Evaluation via Parallel Branch and Bound."
RIT Computer Science M.S. project, September 2006.
http://www.cs.rit.edu:8080/ms/static/ark/2006/1/two6384/index.html
-
Yutao Cheng.
"Ad Hoc Collaborative Photo Sharing With a Tuple Board."
RIT Computer Science M.S. project, August 2006.
http://www.cs.rit.edu:8080/ms/static/ark/2005/4/yxc6939/index.html
-
Roderic Campbell.
"Efficient Encryption on Limited Devices."
RIT Computer Science M.S. project, July 2006.
http://www.cs.rit.edu:8080/ms/static/ark/2005/4/rmc8917/index.html
-
Michael Stringer.
"HF-DSR: Dynamic Source Routing for High Frequency Radio Networks."
RIT Computer Science M.S. project, March 2006.
http://www.cs.rit.edu:8080/ms/static/ark/2005/3/mds1761/index.html
-
Greg Rowe.
"Myth -- An Extension to C."
RIT Computer Science M.S. project, November 2005.
http://www.cs.rit.edu:8080/ms/static/ats/2004/3/gjr3767/index.html
-
William Heinbockel.
"Peer-to-Peer Overlay Network Security Framework."
RIT Computer Science M.S. thesis, October 2005.
-
Jisoo Kim.
"Group Key Agreement Protocols with Implicit Key Authentication."
RIT Computer Science M.S. project, July 2005.
http://www.cs.rit.edu:8080/ms/static/spr/2004/4/jsk4445/index.html
-
Joel Varela Donado.
"M2MI Service Discovery Middleware Framework."
RIT Computer Science M.S. project, June 2005.
http://www.cs.rit.edu:8080/ms/static/hpb/2004/4/jxv0462/index.html
-
Chih-Yu Tang.
"A Generic Framework for the Personal Omni-Remote Controller Using M2MI."
RIT Computer Science M.S. thesis, April 2005.
http://www.cs.rit.edu:8080/ms/static/ark/2004/3/cxt6239/index.html
-
Romi Saluja.
"Framework for Throughput Analysis of Simple Reliable Multicast Protocol in a M2MP Network."
RIT Computer Science M.S. project, February 2005.
http://www.cs.rit.edu:8080/ms/static/hpb/2004/4/rxs1234/index.html
-
Robert Whitcomb.
"M2MIMud."
RIT Computer Science M.S. project, February 2005.
http://www.cs.rit.edu:8080/ms/static/ark/2004/3/rjw2183/index.html
-
Kevin Ligozio.
"Jini Distributed Key Exchange and File Transfer Service with Digital Signatures."
RIT Computer Science M.S. thesis, November 2004.
http://www.cs.rit.edu:8080/ms/static/spr/2004/1/kml4510/index.html
-
Sumit Daryani.
"Framework for Master-Worker Parallel Computation on Ad Hoc Networks Using JXTA."
RIT Computer Science M.S. project, May 2004.
-
Jaedo Kwak.
"Segmentation for Machine and Hand Printed Offline Korean Character Recognition."
RIT Computer Science M.S. project, May 2004.
http://www.cs.rit.edu:8080/ms/static/pga/2003/3/jdk5092/index.html
-
Prabhakaran Nagarajan.
"Master's Project Website Implementation: A Comparison of Several Server-Side Technologies."
RIT Computer Science M.S. project, May 2004.
http://www.cs.rit.edu:8080/ms/static/ats/2003/2/pxn4718/index.html
-
Ravi Bhatia.
"MFS: M2MI File System."
RIT Computer Science M.S. project, April 2004.
http://www.cs.rit.edu:8080/ms/static/ark/2003/2/rnb1914/index.html
-
Chaithanya Bondada.
"Tuple Board: A New Distributed Computing Paradigm for Mobile Ad Hoc Networks."
RIT Computer Science M.S. project, January 2004.
http://www.cs.rit.edu:8080/ms/static/ark/2003/2/cxb3178/index.html
-
Jeremy Dahlgren.
"Efficient Failure Detection Protocols for Point-to-Point Communication Networks."
RIT Computer Science M.S. thesis, November 2003.
http://www.cs.rit.edu:8080/ms/static/hpb/2003/3/jad0883/index.html
-
Farzana Sultan.
"Constraint Optimized Sequential Pattern Mining of Web Logs."
RIT Computer Science M.S. project, November 2003.
-
Jefferson Tuttle.
"Security in an Ad Hoc Network Using Many-to-Many Invocation."
RIT Computer Science M.S. project, May 2003.
http://www.cs.rit.edu:8080/ms/static/ark/2002/3/jst1734/index.html
-
Eric Olson.
"GKAVS: Group Key Agreement Visualization System."
RIT Computer Science M.S. project, March 2003.
-
Ravi Bhatia.
"Investigation of Peer-to-Peer Information Retrieval Systems."
RIT Computer Science graduate independent study project, December 2002.
-
Ravi Nareppa.
"Throughput Control for a Many-to-Many System."
RIT Computer Science M.S. thesis, December 2002.
-
Kiran Hegde.
"M2MP Over Ethernet."
RIT Computer Science M.S. project, August 2002.
-
Steve Button, Tom Chang, Frank Connover,
Jim Papapanu, Tri Phan, and Ken VanderVeer.
"Many-to-Many Invocation Applications and Toolkit."
RIT Software Engineering senior team project, June 2002.
-
Stephan Roorda.
"Jini Service Federation."
RIT Computer Science M.S. project, August 2001.
-
Matthew Mariani.
"Firewall Strategies Using Network Processors."
RIT Computer Engineering M.S. thesis, June 2001.
|
Alan Kaminsky
|
|
•
|
|
Department of Computer Science
|
|
•
|
|
Rochester Institute of Technology
|
|
•
|
|
4486 +
2220 =
6706
|
|
Home Page
|
Copyright © 2013 by Alan Kaminsky. All rights reserved.
Last updated 13-May-2013.
Send comments to ark@cs.rit.edu.