Welcome to CSC 294
Contents
Welcome to CSC 294¶
I am so excited that you’ll be joining this educational journey through the computational aspects of machine learning! You are now, just by being here, a machine learning explorer and practitioner. This course will help us frame out exactly what that means and also what machine learning is.
Note
Your are now a machine learning practitioner and explorer!
Official Course Description¶
An introduction to machine learning from a programming perspective. Students will develop an understanding of the basic machine learning concepts (including underfitting/overfitting, measures of model complexity, training/test set splitting, and cross-validation), but with an explicit focus on machine learning systems design (including evaluating algorithmic complexity and development of programming architecture) and on machine learning at scale. Principles of supervised and unsupervised learning will be demonstrated via an array of machine learning methods including decision trees, k-nearest neighbors, ensemble methods, and neural networks/deep learning as well as dimension reduction, clustering and recommender systems. Students will implement classic machine learning techniques, including gradient descent.
Motivating Questions¶
There are a few questions motivating our course work:
What is Machine Learning?
What role does computer science play in machine learning?
What habits of mind do we need to develop to become machine learning practitioners?
Course Learning Objectives¶
By the end of the course, students will be able to…
Detail differences between supervised and unsupervised learning tasks and methods, as well as discuss the issues when dealing with large scale data
Implement a variety of machine learning algorithms in python and assess their efficacy
Compare models, and assess the efficacy of machine learning algorithms and results using evaluation metrics and in terms of the context of the data’s domain
Develop an appreciation for ethical implications of machine learning algorithms
Work iteratively and reflectively to apply machine learning techniques to a data set of interest with informative documentation, written for a variety of audiences
Course Philosophy¶
This course is designed to be a first course in Machine Learning, but one that also prepares students to develop and implement their own machine learning pipelines using standard industry practices. Completing such a task is not as prescriptive nor as straightforward as completing a standard college course. There are turns and twists, failures and incremental progress, moments of confusion and bursts of clarity. Success in this course will be measured iteratively, placing emphasis on student’s ownership of the learning process and a student’s consistency of effort.
Stretch Zone¶
Borrowing language from the 2019 Google J-term course, when learning in a classroom setting, at any moment, we exist in one of three zones: safe, stretch, or strain. A student in the safe zone is completely comfortable, and the course material is completely within what the student already knows. The strain zone is the complete opposite of the safe zone. A student in the strain zone feels completely overwhelmed with the material to the point where they can’t find any meaningful connections between the current material and what the student already knows.
The material in this course is intellectually challenging. Several of the topics are ones that took me a long time to fully understand their subtleties. The goal for this course is to spend the vast majority of our time in the stretch zone. In this zone, the material is just beyond our current knowledge base and while we are a bit uncomfortable with the material, we can see possible paths to tie the new material into our existing knowledge. In other words, in this class, our brains should be stretching, but not straining.
At the end of each week, if you have not been surprised or challenged, or if you have no questions about the material, this could mean that you are in the safe or strain zones. If you find yourself exasperated or negative about the class, you may be in the strain zone. If you find yourself using words like “boring” or “easy”, you are likely in the safe zone. If you are in either zone, please get in touch with me: in class, on slack, in an appointment, or send me an email. I want you to get the most out of this course, but I cannot make adjustments to the course if I do not have firsthand knowledge of what is going on.
Syllabus¶
This webpage and the associated links together function as the syllabus. Everything that you need to know about the course is either here or linked from here.
The course syllabus is the most important document underlying the culture of our course and our classroom. I view my syllabus as a sacred document that both introduces and governs the course. In taking this view, I work to detail as much about the course as possible from the big picture ideas to the minute details of course policies. I believe that the first activity a student should do when beginning a course is to carefully read and examine the syllabus. In keeping with that belief, there are a few tasks in this document that will help us build our course community.
Note
Please read the syllabus this week and complete these tasks to help shape our community. If you have questions about the syllabus, please ask them!
This web version of the syllabus has a menu and search bar on the left, but the syllabus is also available as one pdf document.
Course Acknowledgements¶
Parts of this course - including slides, activities, and notes - will be from a variety of sources. Materials will be appropriately attributed and will be used in keeping with copyright and fair use laws.