What is machine learning?
"Machine learning is a subfield of artificial intelligence (AI) concerned with algorithms that allow computers to learn. What this means in most cases, is that an algorithm is given a set of data and infers information about the properties of the data--and that information allows it to make predictions about other data it might see in the future. This is possible because almost all nonrandom data contains patterns, and these patterns allow the machine to generalize. In order to generalize, it trains a model with what it determines are the important aspects of the data."
--Toby Segaran, Programming Collective Intelligence

A more concise definition:
Machine learning allows computers to observe input and produce a desired output, either by example or through identifying latent patterns in the input.

This course takes an application driven approach to current topics in machine learning. The course covers supervised learning (classification/structured prediction/regression/ranking), unsupervised learning (dimensionality reduction, bayesian modeling, clustering) and semi-supervised learning. Additional topics may include reinforcement learning and learning theory. The course will also consider challenges resulting from learning applications. We will cover popular algorithms (naive Bayes, SVM, perceptron, HMM, k-means, maximum entropy) and will focus on how statistical learning algorithms are applied to real world applications. Students in the course will implement several learning algorithms and develop a learning system for a final project.


This course should teach students to:
  • Evaluate a potential machine learning application and decide upon the best algorithm.
  • Implement modern machine learning algorithms.
  • Read and understand research papers from machine learning conferences (NIPS, ICML, UAI, etc.)


Students are expected to have:
  • Strong programming skills. There will be considerable programming required for the homeworks.
  • Comfort with basic mathematical skills (linear algebra, taking derivatives, etc.)


  • Homeworks: 75%
  • Project: 25%


Since the focus of the course is on practical applications of machine learning, the bulk of the final grade comes from homework. Homeworks are comprised of both written problems and programming projects. Homeworks are to be turned in electronically. Instructions will be provided when homeworks are assigned. There will be about one homework a week.

Late Policy

Late homework assignments will be accepted up to 24 hours past the due date for a 25% reduction in grade. Exceptions will only be given in extreme cases. However, every student is permitted to hand-in homeworks late penalty free using a 72-hour grace period for the entire semester. This means that you can choose to hand-in the first homework 70 hours late and the second homework 2 hours late, but then every other homework must be on time for the rest of the semester. You may divide these 72 hours as you see fit, but once you have used up all of the time, you will be given no more. I will round-up to the hour (minutes don't count.)

Final Project

A significant part of the final grade will be based on a project. Projects test the application of classroom through implementing a machine learning system or reviewing current research. There are several options for projects:
  • Machine Learning system: Students must implement a machine learning solution for an application of interest. This requires demonstrating knowledge learned in the class and not a black box application of a machine learning software package. A writeup describing the project is required. Projects of this type can be done by teams of 1-2 students.
  • Algorithm implementation: Implement an algorithm described in a machine learning research paper. Projects of this type should both replicate algorithms and apply them to new settings/data.
  • Survey: A tutorial that surveys the state of the art research in a particular area.
Progress reports on the project will be due throughout the semester and writeups will be due before the close of the semester. In addition to writeups, each project will be given a short (2-5 minutes) presentation slot on the final day of the class.

Each project will have three parts:
  • Proposal: A 1-2 page description of the proposed project. This will be due half way through the course.
  • Writeup: The final writeup of the project. Length depends on the chosen project type.
  • Presentation: An in-class presentation summarizing the main points of the project.


The main textbook for this course is: Most readings will be drawn from the Bishop book. However, the course material is well covered in several other books. You are free to chose which book you prefer. However, you must get at least one of the books and read it.

Available books include: The text for additional assigned readings will be provided. I also recommend looking at Wikipedia which has many good articles about machine learning concepts. resources that have good


I take cheating very seriously. I expect every student to have read the Department of Computer Science Academic Integrity Code and will hold students accountable to it. So that course policies are clear, here is review of relevant rules (in addition to the integrity code.)
  • Every exam, project, homework and any other work completed during this course must be entirely your own. Copying any material from other students or the web is expressly prohibited.
  • All exams are closed book unles otherwise stated. This means that students may not reference any material during an exam that is not provided as part of the exam.
  • Any collaboration between students during an exam will be considered cheating.
  • Talking with other students to understand homework and course mateiral is strongly encouraged. However, discussing an assignment and cheating are very different things. If you copy someone else's work you are cheating. If you let someone copy your work you are cheating. If someone tells you the answer you are cheating. Everything you hand in must be in your own words based on your understanding of the solution.
For homework assignments, here is a list of helpful guidelines. When in doubt, please ask!

  • Copying any part of a homework from someone else.
  • Verbally telling someone the answer to a homework question.
  • Looking at someone else's code or solution.
  • Obtaining any part of your solution or code from any online resource or software library.

  • Explaining the homework question to someone else.
  • Disucss at a high level the homework.
  • Helping someone think through a problem.
  • Directing someone to a section of the textbook, reading, or online resource that helps explain a concept.

I am aware that many of the programming assignments will ask students to implement algorithms already available online. I will try to avoid direct duplication when possible. However, you are not permitted to copy any part of your code from other libraries.

What happens when you cheat?
I will be carefully examining homeworks and exams for signs of cheating. If you cheat, at a minimum you will be given a 0 for the assignment or exam. More likely, you will have the total value of the homework or exame subtracted from your grade, ie. if you cheat on an exam worth 15% of your grade, you will get a 0 on the exam and have an additional 15% of your grade deducted. In some cases, cheating will be reported to the appropriate university board, which can result in failing the class, suspension of expulsion.

DO help each other understand the lectures, readings and homeworks.
DO NOT complete each other's homework.