Lectures:
Mon, Wed 2:00 pm - 3:30 pm @ Soda 306
Office Hours:
Koushik: Mon 3:40 pm - 4:30 pm @ Soda 735
Kaiyao: Tue 2:00 pm - 3:00 pm @ Soda 411
Esha: Wed 12:00 pm - 1:00 pm @ Cory 504
Note: We plan to hold approximately 2 hours of office hours per week during regular weeks, with additional office hours offered during programming assignment and exam weeks.
Discussions:
Come to office hours for questions
Instructor: Koushik Sen (ksen@berkeley.edu)
GSIs:
Esha Garg (preshthagarg@berkeley.edu)
Kaiyao Ke (kaiyaoke@berkeley.edu)
Please make a private Ed post before emailing! Emailing is discouraged, but if you need to email in emergency, please attach the prefix [cs164] to the subject of any emails.
The class home page for this semester is here! Please make sure to bookmark it! Course handouts, answers to frequently asked questions, lecture notes, and assignment updates will be posted on the home page.
The homepage of this site will also provide an overview of the week in progress, with the following:
Topic being covered + Lecture slides
Homeworks and Discussions
For discussions, questions, and the class forum, we will use Ed Discussion.
For written assignment submissions, we will be using Gradescope.
For the programming assignment submission, we will be using GitHub Classroom. Note: More information on this will be provided when assignments are released.
Claude Code (Highly Recommended)
JetBrains IntelliJ IDE (Highly recommended for Java programming)
Cursor.com IDE (Be careful, see https://www.linkedin.com/feed/update/urn:li:activity:7412230636100485120/ )
Most weeks will involve a written assignment covering material presented in lecture and the readings. These written assignments are to be completed individually. Their purpose is to give you practice with the theoretical material of the course. Spending time on the written assignments pays off on the exams!
Written assignments are due on the date and time specified in the assignment PDFs/Gradescope. Please include your name and email address on your assignment. Assignments must be submitted via https://gradescope.com/. Please do not bring assignments to staff offices.
The course project consists of three programming assignments. Taken together, the three form a complete implementation of a variant of Python.
Start the programming assignments early! Completing the course project is a large, complex, and rewarding task, which is made much easier by giving adequate forethought to design. The course schedule allows ample time to complete the assignments, so take advantage of it. Programs will be evaluated for correctness, organization, and documentation.
Documentation and structuring should be incorporated into programs from the beginning. Neither the instructors, teaching assistants, nor readers will help with incomprehensible programs.
Programming assignments should be completed in teams of 2. Teamwork imposes burdens of communication and coordination, but has the benefits of more thoughtful designs and cleaner programs. Team programming is also the norm in the professional world.
Students on a team are expected to participate equally in the effort and to be thoroughly familiar with all aspects of the joint work. Both members are responsible for completing assignments. Partners turn in one solution for each programming assignment; each member receives the same grade. If a partnership is not going well, the teaching assistants will help negotiate new partnerships. Teams may not be dissolved in the middle of an assignment.
Programming assignments are due at 11:59 PM on the date in the course schedule. Programming assignments will be turned in electronically via GitHub Classroom. Links to assignments will be posted!
Each student gets an automatic extension of 100 hours. You can use the extension on any programming assignment(s) during the semester (in increments that are rounded up to the nearest integer). For instance, you can hand in one assignment 100 hours late, or each of three assignments 33 hours late. For group project assignments, the slip time will be deducted from each team member's remaining slip time. When you hand in a late assignment, you must identify in the README file the following: (i) how late this assignment is, and (ii) how much of the total slip time you have left. No assignment will be accepted more then 100 hours late. After you have used up your slip time, any assignment handed in late will be marked off 1% per hour. This policy does not apply to the written assignments. Late written assignments will receive no credit.
There will be 2 in-class midterms and one final for the course. You can find the dates at Schedule
There will be no early or make-up exams. Please plan accordingly!
If you are unable to attend a midterm due to extenuating circumstances, we will clobber your lowest midterm grade with the other midterm. You may not clobber the final with the midterms. Please contact the course staff before the exam date with proof of excuses.
Regrade requests will only be accepted for programming assignments and exams. In either case, all regrade requests must be received within one week of receiving your score. For exams, we will only consider regrades if we made a mistake in the grading of your exam. Note that we reserve the right to regrade the entire exam. For programming assignments, we will only consider regrades if we made a mistake in grading your project or if there was a small bug (requiring fewer than 10 lines of code) that caused you to lose at least 10 points. A small bug is one that can be fixed by changing very few lines of code without affecting the design or the algorithm in a significant way. All such requests must be made to your TA (not to the readers). If we accept the regrade request, we will re-run the autograder and will give you 50% of the score difference.
It is impossible to pass the course without doing the programming assignments. The relative weight of the components of your grade will be approximately:
EdStem discussion 2%
Written assignments 3%
Course projects (PA1-PA3) 30%
Midterm 1 18%
Midterm 2 18%
Final 29%
It is expected that all students understand the University policies on academic honesty. However, in this course, we will encourage you to use all kinds of AI. Please save all the AI prompts that helped you.
While in-class participation is strongly encouraged, the course permits concurrent enrollment in classes with overlapping meeting times under reasonable exceptional circumstances. Students are nevertheless expected to adhere to all deadlines without exception.