CS 188 Discussion Notes

Introduction

Welcome to CS 188! One of the most popular upper division CS classes at UC Berkeley!

This chapter offers supplementary resources to accompany Wesley’s discussions presented in the Spring 2025 iteration of the UC Berkeley course CS 188: Introduction to Artificial Intelligence.

Materials will no longer be updated as frequently since I have switched to teaching Data 8. The material shown here is intended for my current students in other courses to spark interest, which is why you may see some notes from the Spring 2025 iteration. See my personal website for all slides I have created and presented in the past.

Learning Topics

As mentioned in the course catalog:

Ideas and techniques underlying the design of intelligent computer systems. Topics include search, game playing, knowledge representation, inference, planning, reasoning under uncertainty, machine learning, robotics, perception, and language understanding.

More specifically, you will be learning topics including, but not limited to, the following:

  • Search (breadth-first search, depth-first search, etc.)
  • Constraint Search Problems
  • Games
  • Bayes Nets
  • Hidden Markov Models
  • Reinforcement Learning (Q-learning, policy iteration, etc.)
  • Machine Learning (naive bayes, neural networks, etc.)

Important Websites

You might want to bookmark the following websites:

General Tips

If you are wondering my tips for suceeding in the course:

For the Midterm and Final:

Start reviewing early and avoid cramming. Consistent, spaced practice is much more effective than last-minute studying. Here are some strategies to help you prepare:

  • Practice with past exams: Simulate exam conditions by timing yourself and working without notes. Focus on the most recent regular semester exams first (Sp25, Fa24, Sp24, Fa23, etc.), then move on to older ones if you have time. Summer exams should be the lowest priority unless you are taking this course during a summer semester. After finishing, review your mistakes and make sure you understand why you got them wrong.
  • Active recall and self-testing: Instead of just reading solutions, try to solve problems from discussion worksheets and exam prepration worksheets on your own. Write out your reasoning and check your answers afterward. Knowing how to solve a question right after reading the solution is different from knowing how to solve a similar question without looking at the solution!
  • Review concepts, not just procedures: If you get stuck, revisit lecture videos, slides, or the textbook to clarify underlying concepts. Understanding the ‘why’ behind each method will help you tackle unfamiliar questions.
  • Join study groups or attend review sessions: Explaining concepts to others and hearing different perspectives can deepen your understanding and reveal gaps in your knowledge.
  • Draft the cheat sheets: Looking through formulas, definitions, and key concepts helps reinforce your memory and gives you a resource to use during the exam.

Remember, there is only so much we can test you on, so don’t stress too much. A bad score does not mean that you cannot do well in the class. Focus on understanding the core concepts and practicing problem-solving, rather than memorizing details. We usually give students two sheets of paper for the midterm cheat sheet and four sheets for the final cheat sheet. Consistent, active review will help you build confidence and perform your best on exam day.

For Labs, Homeworks, and Projects:

Prioritize assignments in this order: homeworks and projects. Homeworks are designed to reinforce concepts from lecture and are usually more straightforward (especially part A), making them a great starting point. Projects are typically the most complex and time-consuming, so it’s beneficial to approach them after you’ve mastered the material from homeworks.

  • Homeworks: Try to solve each question independently before seeking help, as this will strengthen your problem-solving skills. If you get stuck, review related lecture materials or discuss the problem with classmates.
  • Projects: Start early, break the project into manageable sections, and set milestones to track your progress. Collaborate with peers when allowed, but ensure you understand every part of your submission. Document your code and thought process.

If you encounter a question you don’t know how to solve, start by reviewing the relevant lecture slides for a quick refresher. The textbook is also a valuable resource, as lecture slides are often based on its content and can provide additional explanations and examples. Don’t hesitate to attend office hours—TAs and tutors are there to help you succeed and can offer guidance on difficult topics or assignments.

Consistent engagement with these resources and assignments will help you stay on track and deepen your understanding of the material.

Special Tricks

Below are some special tricks that I discovered and used while I was a student and later on the course staff for this course:

  • TBD

Future Course Suggestions

I have personally taken a variety of upper-division CS and DS courses, so if you are looking for future course suggestions, here are my recommendations: