CS 451  Machine Learning  Fall 2017 


Machine learning is the science of getting computers to act without being explicitly programmed. This course introduces the theory and practice of machine learning and its application to tasks such as prediction, classification, anomaly detection, and object recognition. Topics include supervised and unsupervised learning, including regression, support vector machines, neural networks, clustering, dimensionality reduction, and deep learning.
Prerequisites: CS 200, CS 201, and familiarity with matrix math (or willingness to pick it up on your own)
The following is a tentative schedule of the topics to be covered in the course. The course web page will be updated with a more detailed schedule of topics.
Week  Topic 
1  Linear regression, linear algebra review, Matlab 
2  Logistic regression, regularization 
3, 4  Neural nets, backpropagation 
5, 6  Bias vs. variance, ML system design and diagnosis 
[Wed 10/18  Midterm exam, 7pm] 
7  Support vector machines 
8  Kmeans, principal component analysis 
9  Anomaly detection, recommender systems 
10, 11  Deep learning 
12  Final projects 
We will be using the "flipped classroom" format. You are expected to prepare for each lecture, usually by watching a set of Coursera videos. Each class will start with an online quiz about the assigned concepts, followed by collaborative inclass activities, some of which may turn into small homework assignments. There will also be several programming assignments, usually due every 2 weeks, as well as a final programming project. Most projects will be team projects. Programming will be done in Matlab/Octave and Python. No late submissions will be accepted, except that each student may use a single 24hour extension that carries a 10% penalty to use for one of the programming assignments. In extenuating circumstances (e.g., sickness, personal crisis, religious holidays), please get in touch as early as possible, and I may be able to grant additional extensions in consultation with your dean.
Your final grade will be based on quizzes (15%), homework and programming assignments (40%), final project (10%), a midterm exam (15%), and a final exam (20%). The midterm exam is scheduled for Wednesday, October 18, 7:009:00pm. The final exam will be selfscheduled.
The computer science faculty believes that collaboration fosters a healthy and enjoyable educational environment. For this reason, you are encouraged to talk with other students about the course and to form study groups.
Unless otherwise instructed, feel free to discuss problem sets with other students and exchange ideas about how to solve them. However, there is a thin line between collaboration and plagiarizing the work of others. Therefore, it is required that you must compose your own solution to each assignment. It is unacceptable (1) to solve a problem together and turn in two copies of the same solution or (2) to copy solutions written by your classmates. This implies that you should never have in your possession a copy of all or part of another student's work. It is your own responsibility to protect your work from unauthorized access. If an assignment (or part of one) is designated a group project, then the above rules apply to a group. That is, you are allowed to collaborate on the assignment with your partner(s), but work with others is restricted as discussed above. All exams, of course, must be entirely your own work and you may not collaborate with anyone.
When working on homework problems, it is perfectly reasonable to consult public literature (books, articles, etc.) for hints, techniques, and even solutions. However, you must reference any sources that contribute to your solution. It is also OK to borrow code from the textbook, from materials discussed in class, and from other sources as long as you give proper credit. Assignments and solutions from previous terms are not considered to be part of the "public" literature, and consulting problem set solutions from previous terms constitutes a violation of the Honor Code.
If you are uncertain how the Honor Code applies to a particular assignment, please ask me. The Department of Computer Science takes the Honor Code seriously. Violations are easy to identify and will be dealt with promptly.
Students who have Letters of Accommodation in this class are encouraged to contact me as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion. For those without Letters of Accommodation, assistance is available to eligible students through Student Accessibility Services. Please contact the ADA Coordinators Jodi Litchfield (litchfie@middlebury.edu, x5936) or Courtney Cioffredi (ccioffredi@middlebury.edu, x2169) for more information. All discussions will remain confidential.