Machine Learning for Computer Systems
Each lecture will follow the following format:
Please do the reading before class. Notes (in the form of slides, whiteboard notes, code, or whatever is most appropriate) will be posted after each class.
All material will be available from the Github repository.
Component | Amount |
---|---|
Exams | 30% |
Assignments | 40% |
Project | 20% |
Participation | 10% |
Exam. The course will have a midterm exam and a final exam. The goal of these exams will be to test your knowledge of concepts covered in class. The format and administration of these examinations will be announced in class.
Assignments. The course will have approximately 3-5 hands-on programming assignments (one every other week). These assignments will be logical extensions of hands-on assignments in class. If you have a laptop, you should be able to complete these assignments on personal computing equipment. If you need computing resources, please ask.
Project. The course will have a small project. You will have two options for completing the project.
ML/Net Leaderboard. nPrint/pcapML; your goal will be to re-produce or extend some of the best-known machine learning results for various applications of machine learning in computer networking.
Research. You are welcome to work on an independent research project that involves machine learning and computer systems. This option is probably better suited for graduate students in computer science who are comfortable working on open-ended problems. Your project must be approved by the instructor, based on a concrete research proposal.
Participation. I do not take attendance; it is my job to make this course interesting and something you find worth your time. If you find it is not, I encourage you to find a way to get me that feedback (directly if you feel comfortable, anonymously or indirectly otherwise). On the other hand, I do encourage you to participate in discussions and be an active member of the class. Simply put, don’t just complete the assignments and ace the exams: We’re all members of a collective community here, and you often have as much to teach the rest of the class, through your questions and perspectives, as I do. Lack of participation deprives you of the experience of that interaction, and deprives others of your valuable perspective. Come to class, be engaged. We may have occasional in-class quizzes to track your engagement with the material. These will be included in the participation grade, if applicable; don’t worry if you miss one.
The only pre-requisite for the course is Introduction to Computer Systems. In this course, we assume basic knowledge of computer networking. The course will review some of these topics, particularly as they pertain to network measurement/management and data collection.
The course will not cover basic concepts in networking or systems, including basic network protocols and operating systems. If you are not familiar with those topics or need a refresher, please see the resources at the bottom of this page.
We understand that sometimes life events occur and that it’s not always possible to meet every deadline. As such, we are willing to accept late assignments according to the following policy:
You are taking this class to learn. My goal is to teach you new concepts—any attempts to circumvent that deprive you of the process of learning. To that end, you are responsible for doing your own work in this class.
You may talk to the course staff and to other students (past and present) about any assignments in this class. You can work together in discussing how you approached a particular problem, as long as you acknowledge who you worked with.
“Modern” coding indeed involves a lot of copy/paste/adaptation of existing code blocks, and such adaptation is permissible, within reason. If you find approaches and solutions on the Internet to various problems in this class, you are welcome to borrow ideas and approaches (and even copy code snippets, with acknowledgment and links). Please acknowledge all collaborators and sources.
The primary activity that is not permitted it copying a solution verbatim; if you find yourself running code that has been copy/pasted from anywhere, pause and think. Ask the staff if you have questions about this policy.
The University of Chicago has formal policies related to academic honesty and plagiarism. We abide by these standards in this course. Depending on the severity of the offense, you risk being dismissed altogether from the course.
No collaboration is permitted on quizzes or exams. All work submitted for the project must properly cite ideas and work that are not those of the students in the group.
Topics in this course, particularly those that touch on ethics, policy, the law, and society, may touch on topics that challenge your existing thinking, and certain discussions may make you feel uncomfortable or challenged.
To this end, we seek to make this class an inclusive environment, one of mutual respect for others. The University of Chicago is committed to the principles of free expression, and part of my duty as your instructor is to help foster that environment.
To achieve the vibrant intellectual atmosphere we aim for, an environment of respect for each other is of utmost importance. Every person should conduct themselves with integrity, compassion, and thoughtfulness so everyone feels comfortable participating and benefits from a collective learning experience.
Think not only of what you say but how you say it.
Participation and speaking up is critical to the vibrant intellectual environment we all want to create among ourselves. I may not always be clear in my own presentation (and I also make plenty of mistakes), but I will not know that unless you speak up. If you have a question, there’s a good chance half of the class is probably thinking the same thing. Be bold.
Finally, think about when to step back, so that everyone can have a chance to speak. To that end, I typically make a concerted effort to step back from discussions myself—viewing my role as more of a facilitator—so that you can feel free to speak. If I announce (or allude to) my opinion on a matter in front of the class, that may make some of you less eager to share your own viewpoints, which is also a fail.