Lectures: Tues, Thurs 11:30am-12:45pm
Fourth Hour: Fri 8:30am-9:20am
Room: Clapp Laboratory 206
Office hours: Tues 1-3pm, Thurs 9:15-11:15am, Clapp 200
The goals of this course are to:
Understand the general mathematical and statistical principles that allow one to design machine learning algorithms.
Identify, understand, and implement specific, widely-used machine learning algorithms.
Learn how to apply and evaluate the performance of machine learning algorithms.
More concretely, by the end of the semester, the students will be expected to have mastered fundamental concepts in machine learning
Derive analytical solutions for mathematical fundamentals of ML (probability, matrix and vector manipulation, partial derivatives, basic optimization, etc.).
Derive and implement learning algorithms.
Identify and evaluate when an algorithm is overfitting and the relationships between regularization, training size, training accuracy, and test accuracy.
Students will be expected to apply machine learning
to a project and in the process:
Identify real-world problems where machine learning can have impact.
Implement machine learning tools on real data and evaluate performance.
Produce proficient oral and written communication of technical ideas and procedures.
Homeworks (4) — 40%
"Celebrations of learning" (2) — 20%
Project — 30%
Class engagement — 10%
grade (30%) is further broken down to:
Idea proposal — 2.5%
Paper selection — 2.5%
Literature review — 5%
Project plan — 5%
Final presentation (poster session) — 5%
Final report — 10%
Class engagement grades are a composite of non-graded assignments including but not limited to: (a) class discussion, (b) in-class worksheets, (c) posting on Piazza, (d) optional work (like HW0) and fourth-hour work.
Homework deadlines are strict. For homework that is late, you will be penalized 33% of the assignment’s value for each day or fraction thereof that it is late (0–24 hours = 33% penalty; 24–48 hours = 66% penalty; 48+ hours = no credit). An assignment is considered late until all components (written and code) are submitted.
There will be two "celebrations of learning." These will be in-class, closed-book exams.
Projects will focus on "impactful" applications of machine learning focused on three areas: (1) health, (2) education, or (3) climate change.
Project details will be posted later in the course.
This course has no official textbook. However, some of lecture material will be drawn from the following resources and they could be helpful in your learning:
An Introduction to Statistical Learning by James, Witten, Hastie, Tibshirani: an accessible undergraduate machine learning textbook with statistics focus.
Course handouts from Stanford CS 229 by Andrew Ng
Programming assignments will use Python, NumPy, and SciPy. The required Python environment is Anaconda 2019.10 distribution of Python 3.7
. If you are not working with this environment, your work will not be graded and you will not receive help debugging.
See this page on getting started with Python for CS 335
Resources for Python:
Google's Python class
Norm Matloff’s Fast Lane to Python
Stanford CS 231 Python Numpy Tutorial
Stanford CS 231 IPython tutorial
The Computer Science Department follows the Mount Holyoke College Honor Code. Work submitted for grading must be entirely your own, unless you were instructed to work in groups. The purpose of course assignments is to practice skills, gain a deeper understanding of the course material, and apply that knowledge to new situations. Assignments are designed to challenge you, stimulate critical thinking, and help you understand the concepts related to the course. Your grade is a reflection of your understanding of the material. We recognize that collaboration can help you master course material. In fact, there are certain ways in which we will encourage you to collaborate. These include: discussing course content at a high level, getting hints or debugging help, talking about problem-solving strategies, and discussing ideas together. However, you must do all coding and write-ups on your own. Writing code and solutions on your own will test and demonstrate your mastery of course material. Looking at solutions from other students or any other source (including the web), or collaborating to write solutions to individual work, is considered a violation of the honor code. All suspected violations will be referred to the academic honor board. If you are uncertain whether something is allowed, it is your responsibility to ask.
If you have engaged in any of the above acceptable collaboration activities for an assignment, you MUST acknowledge the classmates or TAs with whom you spoke – this should be done in a comment at the top of your main submission file.
Note that the Association for Computing Machinery has a strong Code of Ethics and Professional Conduct. At this site you can read the new 2018 version
Organize study groups.
Clarify ambiguities or vague points in class handouts, textbooks, assignments, and labs.
Discuss assignments at a high level to understand what is being asked for, and to discuss related concepts and the high-level approach.
Refine high-level ideas/concepts for projects (i.e. brainstorming).
Outline solutions to assignments with others using diagrams or pseudocode, but not actual code.
Walk away from the computer or write-up to discuss conceptual issues if you get stuck.
Get or give help on how to operate the computer, terminal, or course software.
Get or give limited debugging help. Debugging includes identifying a syntax or logical error but not helping to write or rewrite code.
Submit the result of collaborative coding work if and only if group work is explicitly permitted (or required).
Look at another student’s solutions.
Use solutions to same or similar problems found online or elsewhere.
Search for homework solutions online.
Turn in any part of someone else's work as your own (with or without their knowledge).
Share your code or written solutions with another student.
Share your code or snippets of your own code online.
Save your work in a public place, such as a public github repository.
Allow someone else to turn in your work as their own. (Be sure to disconnect your network drive when you logout and remove any printouts promptly from printers.)
Collaborate while writing programs or solutions to written problems. (But see above about specific ways to give or get debugging help.)
Write homework assignments together unless it is specified as a group assignment.
Collaborate with anyone outside your group for a group assignment.
Use resources during a quiz or exam beyond those explicitly allowed in the quiz/exam instructions. (If it is not listed, don’t use it. Ask if you are unsure.)
Submit the same or similar work in more than one course. (Always ask the instructor if it is OK to reuse any part of a different project in their course.).
Inclusion and Equity
The instructor and students in CS 335 are expected to be respectful, inclusive of all students, and to not discriminate. Mount Holyoke resources on diversity, equity, and inclusion can be found here
. Bias incidents can be reported here
. Students are encouraged to bring concerns or feedback to the attention of the instructor.
If you have a disability and would like to request accommodations, please contact AccessAbility Services, located in Wilder Hall B4, at (413) 538-2634 or email@example.com. If you are eligible, they will give you an accommodation letter which you should bring to the instructor as soon as possible.
The instructor will respond to email and Piazza in a timely manner Monday through Friday from 9am-5pm. Communication during evenings and weekends will not be answered until the following business day except in extreme circumstances. Therefore, start homework assignments and projects early to give yourself enough time ask questions and receive answers.