Introduction to basic probabilistic concepts and methods used in computer science. Develops an understanding of the crucial role played by randomness in computing, both as a powerful tool and as a challenge to confront and analyze. Emphasis on rigorous reasoning, analysis, and algorithmic thinking. (Counts as a Group B course for the CS major, and a background course for the CS minor.)
More specifically, we focus on basic probability theory and applications and uses of probability theory in computer science. This includes using probability to analyze data sets and algorithms and to prove the correctness of algorithms.
Prerequisites: CS 131 and MA 123 (or equivalent elementary calculus class) and CS 111 (or equivalent Python programming experience). We assume good working knowledge of elementary set theory and counting, elementary calculus (i.e., integration and differentiation), and programming in Python.
Name | Email (@ bu . edu) |
---|---|
Jeremy Feininger (TA) | jlf77 |
Eren Budur (TA) | ebudur |
Yang (Alex) Yu (CA) | yuyang00 |
Waner Zhou (CA) | zwe |
Cassie Huang (CA) | chuang18 |
Ji (Anna) Zhang (CA) | annajz |
John Bolognino (CA) | jcbolo |
Marco Raigoza (CA) | mraigoza |
Office hours: The office hours schedule has been posted on Piazza.
Discussion sessions will be an invaluable part of the course typically providing guidance on the homework questions and additional problem solving.
We will use the following textbook. Please be advised that not all lecture material is covered in the textbook.
We will use Piazza for class discussion and questions. The system is highly catered to getting you answers to your questions fast and efficiently from classmates and the course staff. Please do not email questions to the course staff, post your questions on Piazza instead. We also encourage you to post answers to student questions there (but obviously, not answers to problems on the current homework). Our class page is located here. We will also use Piazza to post announcements and handouts.
The course grade will break down as follows:
Last day to drop the course: without a W : October 7, with a W : November 5. Incompletes will not be granted for this class. The course staff may make changes to the grading scheme to reflect changes in the course.
Exams: There will be a midterm exam and a final exam. The midterm exam will be held in class, as indicated on the schedule. The cumulative final will be held during the normal two-hour final exam slot.
Homework Assignments, Submission, and Late Policy: Assignments will involve both analytic (math) problems and programming in Python. Assignments will be due on Mondays at 10pm, as indicated on the schedule. All assignments will be submitted electronically via Gradescope as a PDF for the math portion and as a Jupyter notebook for the programming portion. Please sign up for the class on Gradescope using the entry code 4PY4JG. Please use your BU email address and include your Student ID in the format U00000000.
Each student receives two 24h extensions that can be used on any two homeworks. We will not accept homework submissions that are more than 24h late and we will not grant additional extensions. We will also automatically drop the lowest homework score when computing your homework grade. However, we strongly recommend putting your best effort in every homework, as they provide the best preparation for the exams. As you likely already know, assignments requiring substantial creativity can take more time than you expect, so plan to finish a day early.
Regrading Procedure: If, after reviewing the posted solutions, you still believe a portion of your homework was graded in error, you may request a regrade. Please submit your regrade request on Gradescope within one week. Note that when we regrade a problem, your score may go up or down.
Attendance: Students are generally expected to attend both lecture and discussion during the scheduled class times.
Academic standards and the code of academic conduct are taken very seriously by our university, by the College of Arts and Sciences, and by the Department of Computer Science. Course participants must adhere to the CAS Academic Conduct Code; please take the time to review this document if you are unfamiliar with its contents. Unauthorized downloading, uploading, sharing, and/or duplicating course materials including, but not limited to, assignments, exams, slides, videos, and any other material created and/or provided by the course staff without the course staff's express permission is a violation of the Academic Conduct Code.
Please read carefully the collaboration and honesty policy for this course. Please sign and submit a signed copy of the policy to Gradescope. A student's work will not be graded until they have submitted a signed policy document. Ungraded work will revert to an automatic 0 after a one week grace period.
We strongly recommend that you prepare your homework solutions using LaTeX, and submit PDFs to Gradescope. LaTeX is a scientific document preparation system; most CS technical publications are prepared using this tool. Great editors exist on most platforms, such as TexShop for Mac and TeXstudio for several platforms. An alternative to setting up LaTex on your machine is to use Overleaf.
The not so short introduction to Latex is a good reference to get you started.
In this course we will be using Python and Jupyter notebooks for some of the homework exercises. We recommend that you download a Python distribution such as Anaconda. Anaconda includes both Python and Jupyter notebook. The first discussion session will provide a basic introduction to Python and Jupyter notebooks. Additional resources include the following basic tutorials: