1. Assignment 1 (ps), (pdf), Due Jan. 30, Solution (ps), (pdf),
  2. Assignment 2 (ps), (pdf), NEW DUE DATE: Feb. 20. Late assignments will not be accepted.
    Two more problems were added on Feb. 13, handout available at 725 Soda.
    Data for problem 3, and assorted suggestions. Solutions (ps), (pdf)
  3. Assignment 3 (ps), (pdf), NEW DUE DATE: March 8 (no late h/w accepted!)
    Solutions (ps), (pdf), solution files
  4. Assignment 4 (ps), (pdf), NEW DUE DATE: April 10
    R&N conver image, also in grayscale
    training data for digits
    Results of the contest
    Serge's Digit Recognition page
  5. Assignment 5 DUE April 17, Solutions (ps), (pdf)
  6. Assignment 6 NEW DUE DATE May 1 Solutions

Here's our provisional plan for assigning homework scores.

Essentially we normalize all the scores then drop the lowest 
"unit" of HW for each student. Different assignments are worth 
a different number of units, corresponding to our assessment 
of their difficulties, as follows: 
  HW1 = 0.5 units; HW2 = 2.0 units; HW3 = 1.0 units
  HW4 = 1.5 units; HW5 = 1.0 units; HW6 = 1.5 units.
So we drop either all of HW3, all of HW5, half of HW2, 2/3 of HW4, 
2/3 of HW6, or all of HW1 and a chunk of the next lowest.

Here's the MATLAB code, which should clarify any questions you have.
% SCORES is 140 x 6, SCORES(i,j) = raw score of ith student on jth HW. 
% This code computes TOTALSCORE, where TOTALSCORE(i) is the overall
% adjusted score of the ith student.
mu = mean(scores); sig = std(scores);               
nscores = (scores-ones(size(scores))*diag(mu))*diag(1./sig); 
for i=1:size(scores,1), 
   weights = [.5 2 1 1.5 1 1.5]; 
   while sum(weights) > 6.5,
      [dummy,ind] = min(nscores(i,:)+10000*(weights == 0));
      weights(ind) = max(0, weights(ind)-sum(weights)+6.5); end;   
   totalscore(i)=weights*nscores(i,:)'; end;