CS 335: Machine Learning
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
Learning GoalsThe 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.
- 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.
- 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.
GradingSee COVID-19 updated course policy for a restructured grading system.
- Homeworks (4) — 40%
- "Celebrations of learning" (2) — 20%
- Project — 30%
- Class engagement — 10%
The project grade (30%) is further broken down to:
- Idea proposal — 2%
- Paper and group selection — 2%
- Literature review — 5%
- Weekly reports (4) — 8%
- Final report — 13%
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.
ResourcesThis 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:
PythonProgramming 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:
Academic HonestyThe 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.).