CSCI 374

Machine Learning

Instructor Information

Instructors: Andrea Danyluk Anna Neufeld
Email: andrea "at" cs "dot" williams "dot" edu aneufeld "at" uw "dot" edu
Virtual Office Hours: Tue 10-11am ET and 5-6pm ET Mon 11am-1pm ET
We're also available to meet by appointment!
TA: Betsy Button
TA Office Hours: Mon 6-8pm ET and Thurs 11am-1pm ET

Course Description

Machine Learning is an area within Artificial Intelligence that has as its aim the development and analysis of algorithms that are meant to automatically improve a system's performance. Such improvement might include: (1) learning to perform a new task; (2) learning to perform a task more efficiently or effectively; or (3) discovering and organizing new facts that can be used by a system that relies upon such knowledge. Consider, for example, prediction of movie ratings (Netflix), beating a professional player at the game of Go (AlphaGo), driving a car (Google), or serving as a personal assistant (Amazon's Alexa).

Machine learning algorithms have influenced work in areas other than Artificial Intelligence itself. For example, some of the algorithms developed have contributed to the study of human learning in cognitive science and cognitive psychology. Recent practical applications of machine learning algorithms have included data mining for discovery of new information from scientific data (such as the recent discovery of new planets), for fraud detection, and for market analysis.

There are many ways to categorize machine learning algorithms. One is based on the amount and type of background information provided to the algorithm. This course will introduce specific instances of two categories of learning algorithms - supervised algorithms and unsupervised algorithms. It will also introduce methods for evaluating the performance of machine learning algorithms. Finally, it will introduce topics in computational learning theory as well as instances of particular applications.

Work in the course will involve reading, solving problems, running and evaluating learning algorithms, and implementing some as well.

Assignments and Weekly Meetings

As you know, this course will be taught as a tutorial. You and your tutorial partner will normally meet with at least one instructor each week to discuss the readings and exercises we assigned for that week. In the "canonical" tutorial format (most typically followed in Divisions I and II), all students are responsible for the readings, but each week one student in each group is primarily responsible for the presentation (typically a paper), while the other is responsible for providing a critique of the tutorial partner's work. We may occasionally assign specific roles to tutorial partners. However, because of the cumulative nature of the material, We will, in general, expect each of you to come to each meeting fully prepared to present analyses of the readings and solutions to the exercises.

A hallmark of tutorials is that they make students more responsible for learning than they might be in a "standard format" course. Therefore, one of my goals will be to help you develop as an independent learner. A hallmark of computer science as a discipline is its collaborative nature. Thus a second (but not secondary) goal is to provide you with opportunities to develop your skills as collaborators. Here's how we'll balance the two: You will have the option of working alone or with classmates. (The exception is that paper reviews must be done independently.) You must, however, write up your work independently. (Again, there is an exception: programming may be done with your tutorial partner.)

Remember that I'm also here to help you. In tutorials students sometimes get into a mindset where they feel they can't ask the professor for help. This sort of independence can be great, but don't allow it to get in the way of progress. If you're stuck, talk to me! For more details on partners, writing up assignments, etc., please see the Honor Code Guidelines.

For more on assignments and weekly meetings, see the week-by-week schedule.

Final Assignments/Projects

During the final two weeks of the semester, you and your tutorial partner will have the opportunity to explore a topic of your own choosing in more detail. Your assignment for the penultimate week of classes will be to design and write an assignment in the style and at the level of those we have prepared for you. During the final week, you will complete that assignment. If we can manage the scheduling, we will meet as a class, so you can all learn about each others' projects. We will provide more detail as we get closer to the end of the semester.

Final Exam

There will be no final exam in this course.

Grading Policy

Each week of work accounts for one-twelfth of your final grade. In determining your weekly grade, We will consider your level of preparation for the tutorial session, your active and productive participation in the session, the clarity of your presentation and contributions, as well as the correctness of your written work.

Assignments are due at the beginning of the tutorial session during which they are discussed. Be sure to submit your work to me before the session (turn-in instructions coming soon). Also be sure to have your solutions available at the time of the meeting, so you have ready access to the work you've done.

Health and Accessibility Resources

Students with disabilities of any kind who may need accommodations for this course are encouraged to contact Dr. GL Wallace (Director of Accessible Education) at 597-4672. Also, students experiencing mental or physical health challenges that are significantly affecting their academic work or well-being are encouraged to contact me and to speak with a dean so we can help you find the right resources. The deans can be reached at 597-4171.

Inclusion and Course Culture

The Williams community embraces diversity of age, background, beliefs, ethnicity, gender, gender identity, gender expression, national origin, religious affiliation, sexual orientation, and other visible and non visible categories. We welcome all students in this course and expect that all students contribute to a respectful, welcoming and inclusive environment. If you have any concerns about course climate, please come to me to share your concerns.

Keeping Track of Logistics

You are undoubtedly going to find yourselves keeping track of different apps (for meetings, turning in assignments, communicating, ...) in each of your courses. To remind you of what we're doing in this course, you can refer to the Resources page on the course website.

Honor Code Guidelines

Explanation of the Honor Code as it pertains to this course:

I. Explanation related to help from people (i.e., non-written sources):

Reading responses / paper reviews: These are expected to be your work alone. When assigned a reading for which you are also writing a review, do not discuss the paper or your response with anyone other than one of the co-instructors. This will ensure that our tutorial session discussions will be fresh and interesting.

Regular weekly non-programming assignments other than reading responses or paper reviews: You may work alone or with classmates.

If you choose to work with classmates, you may discuss the problems and work out the general ideas together, but you must write up your detailed, step-by-step solutions individually. You must also clearly cite your partner(s) on the work you turn in. If you work with classmates, please be sure to observe appropriate social distancing rules. If you need help setting up virtual meetings, don't hesitate to ask a co-instructor.

You may consult with a co-instructor.

Consulting any person outside of the class is a violation of the honor code.

Programming assignments: On each programming assignment you will have the option of working either alone or with your tutorial partner. Programs that you turn in (just one if working with a classmate) must contain only: code written solely by your group or code written by yourself or other CS 374 students this semester for previous assignments. Code from previous assignments must be clearly credited where it is used and in a separate written note to me. It may be used only with permission of the students involved.

You are welcome to discuss design, general debugging strategy, and mathematics related to programming projects with other students, but you may not review the code of other students for any current assignment. Note that using previously submitted code and discussing programming projects is a more liberal policy than the default CS department policy.

Recall that in accordance with CS department policies, looking at any other computer user's files without permission is unacceptable, regardless of whether those files are protected on the file system.

II. Explanation related to help from written sources (paper or electronic):

We have provided a number of resources electronically. You are welcome to use those resources when working on your assignments. If you are using a resource not specifically mentioned in an assignment write-up, you must cite it.

Source code for the Weka data mining toolkit is freely available. Do not use this (or any other electronically available code) as a "resource" when doing your own programming. All code you submit should be your own, with the exception of shared code as outlined above. If you have any questions about code resources you can or cannot use, please ask!

III. Explanation related to sharing your solutions:

Do not post your solutions to regular assignments in any public space (e.g. GitHub). Students taking the course should not be looking for solutions, but tempting them by making solutions available is inappropriate. This applies not just to the semester you are taking the course, but to the future as well.

If you wish to make some of your work available (for instance, so that potential employers can review it), you may post the work that you do for your final project, provided it does not substantially include work done for earlier assignnments in the course.