Projects

The project in this course represents a chance for you to develop and demonstrate your ability to do independent work. This is an opportunity, but also a responsibility and to take seriously and involves a significant time commitment. Start your work early. Plan a schedule and stick to it.

Deliverables

Suggested topics

You can propose your own topics, or pick one of the below.
  1. Parallel Numerical Computing on Shared Memory Machines
  2. Distributed Numerical Computing on Networked PCs and Workstations
  3. Home Heating Calculator
  4. Face Detection
  5. Information Retrieval
  6. Color tracking using PCA
  7. More projects sketches:
    Theory oriented projects include: 
    
    1. Early mathematical analysis predicted that a fixed wing
    would not have lift, and therefore manned flight would be 
    unpractical. This is grounded in a macroscopic analysis
    using Navier-Stokes equations under what one thought at
    the time were reasonable assumptions. Yet ignoring these
    results the Wright brothers and others persisted and did fly.
    The apparent contradiction in the macroscopic mathematical
    analysis was formalized   
    How can microscopic analysis of turbulence shed light on d'Alembert's 
    paradox? Resources: Hoffman and Johnson "Computational Turbulent 
    Incompressible Flow"
    
    2. We are most commonly used to define equality as identical numerical
    values, i.e. x=y means the number x and y are the same. However, in
    important classes of mathematics, identity is defined up to a scale,
    ie two vectors x~y if lx=y, where l is an arbitrary scale factor.
    A common example of the above is the standard folding of Projective
    space P^n into R^n+1. Now consider how to adapt dimensionality 
    reduction to this case. Ordinarily we can compute the best low rank
    subspace by PCA or SVD (X = USV^T). However under the "~" equivalency 
    to a scale we like to find the smallest subspace basis (fewest
    rows in U and V) to best approximate LX = USV^T, where L is a diagonal
    matrix with the scale factor l_i for each equation (line) in the above
    equation. Consider how to modify standard SVD methods to compute the
    above. A trivial approach is an alternating fixed point iteration.
    Start with L=I the identity matrix, compute rank-reduced U,V,
    solve for L using the residual, repeat until convergence. 
    However, a more interesting question is how to incorporate the
    above directy into the SVD computation based on either
    Givens rotations, or Householder transforms. See Ch3 and 4 in 
    the textbook and also Golub and van Loan's book "Matrix computations" 
    for tips.
    
    2b Extension to above. Can you think of a similar method for
    equality w.r.t. SO^3 (Special Euclidean group in 3D -- the 
    combination of translation and rotation). This problem is AFAIK 
    unsolved.
    
    3. Tri-linear tensor.
    
    4. (For hon?) Optimization:
    Aligning 3D texture maps with geometry.
    
    Projects with a more substantial systems/programming aspect:
    6. GP GPU
    7. Optimizing numerical algorithms w.r.t. memory hierarchies (caches)
    
    Vision/graphics/robotics/games projects:
    
    8. Dynamics simulation and rendering with phantom
    Robot 
    Medical task
    
    9. Video phone: track face and parameterize appearance
    in PCA/ICA or similar subspace. Consider using incremental PCA.
    
    10. Path planning for animation: Plan constrained paths such as
    walking up stairs, reaching into drawer.
    
    11. Physics simulation of rigid body interactions.
    
    Above subprojects + lab 3 can be combined into game