Problem Sets are due on either Friday or Monday at the beginning of class. Check the Schedule for all due dates.
From the CS109 Syllabus: We anticipate that—more than ever—during this quarter, there may be unforeseen circumstances that make it difficult to turn in homework assignments on time.
You should think of the grace period following the deadline as an extension you have been granted ahead of time. As a result, a penalty-free extension beyond the expiration of the grace period will generally not be granted. In special circumstances (primarily extended medical problems, emergencies, or previously established OAE accommodations), the grace period may be extended for individual students on a case-by-case basis. If you have a personal emergency, any extensions must be cleared prior to the assignment being due, and the request should be made directly to Lisa and Jerry.
From the CS109 Syllabus: Each student is to submit individual work on the problem sets. You may discuss with other students and course staff, but you must cite all discussion on your individually written final write-up of the problem set.
Any discussion of problem set questions with others should be noted on a student's final write-up of the problem set answers. We provide a space to do so at the top of each problem set. Excessive collaboration (i.e., beyond discussing problem set questions) can result in honor code violations. Questions regarding acceptable collaboration should be directed to the class instructor prior to the collaboration.
We implore you to read our statement on the Syllabus and our full Honor Code Policy, which specifically prohibits you from soliciting or taking solutions from other students or websites like Stack Overflow and Chegg.
Reduced problem sets: To accommodate the additional time you may spend on the pre-lecture videos and concept checks. we have reduced the number of problems in each problem set compared to a regular, in-person quarter. That being said, the problem sets are still at the same level of rigor as a normal quarter of CS109. So instead of working through 15 problems every 10 days, you work through about 12 problems in the same time period, with an additional few warm-up problems in the concept checks themselves.
Handwritten or LaTeX?: You will submit your writeup of the written problems as a PDF to Gradescope. Your writeups can either be scans of your handwritten work on paper/digital paper or LaTeX PDF documents. As long as it's legible, we are happy. That being said, LaTeX is regularly used in computer science as a concise, clean way of presenting proofs, equations, academic research, and more, so it's a great tool to learn. We have many resources for learning LaTeX here, including a guide to using the online LaTeX editor Overleaf. Ask us if you need any help getting set up!
More practice: We anticipate that for most of you, working through the problem set problems is sufficient for understanding the material covered on the exams. However, given that we cover a broad range of concepts in this course, you may find that you will need more practice on certain concepts---students most commonly find combinatorics, Bayes Rule, expectation, and conditional expectation among the more challenging topics. We encourage you to look through the textbook, which has a wide variety of problems testing these concepts (and more), but please do reach out to us if you need some help navigating the long list of extra practice problems.
With the exception of the last problem set, all problem sets will have 1-2 coding problems in Python 3 that should be submitted through Gradescope. On the last problem set, the majority of your work will be coding, where you will implement two machine learning algorithms, Naive Bayes and Logistic Regression. These will also be implemented in Python 3 and submitted through Gradescope.
Python 3: Coding problems are designed to give you experience implementing probabilistic algorithms, computing statistics, and simulating random events. Python is the language of choice for many computer scientists who study machine learning, statistical models, and other theoretical areas of computer science, so we are using it in CS109. All coding in CS109 must be done in Python 3 (our infrastructure does not support Python 2). Read the Python page for details on how to install Python 3 on your local machine, as well as useful tips and tricks.
Python review sessions: We will hold three optional Python sessions for those who are unfamiliar with Python 3 or need a refresher. All sessions will be recorded. The first session will focus on installation and a short intro and is scheduled for Friday of Week 1. More details are on the Python page.
Gradescope autograder: All of your submissions will be autograded using the Gradescope autograder. Once you finish editing and testing your programs locally, you can upload the necessary files to Gradescope and the autograder will run. Since many of our programs may take up to several minutes to run, we highly recommend first running and testing your code locally to fix syntax errors, infinite loops, or other functional bugs before uploading your code to Gradescope.
Running programs locally: You will be provided with starter code that you can download and edit on your local machine. If you don't have a text editor in mind, we recommend PyCharm, which is used in CS106A as well. Go to the Python page for links to installation instructions. If you want to use your own editor, that is fine as well.