Machine Learning CMSC 422 Spring 2013

There are a few cool things about machine learning that I hope to get across in class. The first is that it's broadly applicable. These techniques have led to significant advances in many fields, including stock trading, robotics, machine translation, computer vision, medicine, etc. The second is that there is a very close connection between theory and practice. While this course is more on the "practical" side of things, almost everything we will talk about has a huge amount of accompanying theory. The third is that once you understand the basics of machine learning technology, it's a very open field and lots of progress can be made quickly, effectively by figuring out ways to formalize whatever we can figure out about the world.
Prerequisites: I take prerequisites seriously. There will be a lot of math in this class and if you do not come prepared, life will be rough. You must be able to take derivatives by hand (preferably of multivariate functions). You must know what the chain rule of probability is, and Bayes' rule. More background is not necessary but is helpful: for instance, dot products and their relationship to projections onto subspaces, and what a Gaussian is and why it's okay if it's density is greater than one. I've provided some reading material to refresh these issues in your head, but if you haven't at least seen these things before, you should beef up your math background before class begins. On the programming side, projects will be in Python; you should understand basic computer science concepts (like recursion), basic data structures (trees, graphs), and basic algorithms (search, sorting, etc.). (If you know matlab, here's a nice cheat sheet.)
Your responsibilities are as follows:
15%  Written homeworks There are fifteen written homeworks (roughly one per week). Each is worth 1% of your final grade. They are graded on a highpass (100%), lowpass (50%) or fail (0%) basis. These are to be completed individually. (The initial homework, HW00, is not graded, but required if you do not want to fail.)  
30%  Programming projects There are three programming projects, each worth 10% of your final grade. You will be graded on both code correctness as well as your analysis of the results. These must be completed in teams of two or three students.  
15%  Midterm exam There will be an inclass midterm exam, obviously to be completed individually. You may bring one sheet of notes.  
30%  Final exam There will be a (cumulative) final exam, during the official slot, to be completed individually. You may bring one sheet of notes.  
10%  Participation Both inclass and Piazzabased participation. You can get participation points by volunteering for stuff in class or answering or asking questions on Piazza. 
Your overall grade in the class will be based on the following scale: 90+ (A), 80+ (B), 70+ (C), 60+ (D). If you're in the "012" range (eg, 9092) then you'll get a "minus"; if you're in the "789" range (eg., 8789) you'll get a "plus." These letter grades are lower bounds: I may adjust them up, but will not adjust them down. You can view your grades on grades.cs for individual assignments.
There are no official books for this course. Our primary source will be a collection of notes (aka CIML) I have been writing. Other recommended (but not required) books:

Date  Topics  Required Readings 
Optional Readings 
Due 
W 23 Jan  Welcome to machine learning       
F 25 Jan  Decision trees and inductive bias  CIML 11.6    HW00 
M 28 Jan  Dealing with data  CIML 1.71.10    HW01 
W 30 Jan  Lab: exploring trees, interpreting results  None     
F 01 Feb  Geometry and nearest neighbors  CIML 22.3     
M 04 Feb  Kmeans clustering  CIML 2.42.6    HW02 
W 06 Feb  Lab: geometric models  None     
F 08 Feb  Perceptrons  CIML 33.5     
M 11 Feb  Perceptrons II  CIML 3.53.7    HW03 
W 13 Feb  Lab: perceptrons and linear models  None     
F 15 Feb  The importance of good features  CIML 44.4     
M 18 Feb  Catchup      HW04 
W 20 Feb  Evaluation and debugging  CIML 4.54.8    P1 
F 22 Feb  Lab: which algorithm is best?  None     
M 25 Feb  Imbalanced and multiclass classification  CIML 55.2    HW05 
W 27 Feb  Ranking and collective classification  CIML 5.35.5     
F 01 Mar  Lab: multiclass classification  None     
M 04 Mar  Linear models and gradient descent  CIML 66.4    HW06 
W 06 Mar  Lab: gradient descent  None     
F 08 Mar  Class cancelled for visit day       
M 11 Mar  Subgradient descent and support vector machines  CIML 6.56.7    HW07 
W 13 Mar  Midterm review  None     
F 15 Mar  Midterm  None     
M 25 Mar  Naive Bayes models  CIML 77.5    HW08 
W 27 Mar  Lab: Naive Bayes  None    P2 
F 29 Mar  Conditional probabilistic models  CIML 7.67.7     
M 01 Apr  Neural networks  CIML 88.3    HW09 
W 03 Apr  Deep neural networks  CIML 8.48.6     
F 05 Apr  Kernels  CIML 99.3     
M 08 Apr  No class      HW10 
W 10 Apr  Lab: kernels  None     
F 12 Apr  No class       
M 15 Apr  Support vector machines II  CIML 9.49.6    HW11 
W 17 Apr  Kmeans revisited  CIML 1313.1     
F 19 Apr  PCA and kPCA  CIML 13.2     
M 22 Apr  Digging into Data I  Unix4Poets    HW12 
W 24 Apr  Lab: digging into data  None     
F 26 Apr  Digging into Data II       
M 29 Apr  Online learning  TBD    HW13 
W 01 May  Markov decision processes  Chapter 3     
F 03 May  Imitation learning: DAgger  TBD     
M 06 May  Lab: imitation learning  None    P3,HW14 
W 08 May  Review for final exam  None     
F 17 May  Final Exam, 1:303:30pm       
ADA: Any student eligible for and requesting reasonable academic accommodations due to a disability is requested to provide, to the instructor in office hours, a letter of accommodation from the Office of Disability Support Services (DSS) within the first two weeks of the semester. You may reach them at 3013147682 or by visiting Susquehanna Hall on the 4th Floor.
College guidelines: Document concerning adding, dropping, etc. here.