Due dates for assignments that require work to be turned in are posted on the calendar.  Use the ICAL address to add this to a personal calendar if you wish.

Graded assignments

Programming assignments must be accompanied by a single or pair programming affidavit with each assignment.  Place the text in a comment at the top of the file containing your program’s main entry point.  Assignments must be submitted by 10:30 PM on the day they are due.  Late assignments are accepted up to 10:30 PM the next time that the class meets.  e.g. If the assignment was due Thu, late assignments are accepted up to Tue at 10:30 PM.

  1. Read Williams & Kessler pair programming article, then author your first agent: the very timid agent.  (Article and assignment files are on Canvas).
  2. Holy search Batman, we’ll solve that 8-puzzle yet…  (Assignment files on Canvas.)
  3. Would you like to play a nice game of checkers?
  4. Open the pod bay doors Hal.  You will need to install numpy and scipy for this assignment if you do not have them already installed.  (use pip, conda, etc.)
  5. Constraint satisfaction and logic

The grader for this class is Harsh Kagartha.  Should you have questions about grading on homeworks or projects, please contact him (you can find him associated with this class in Canvas.  Solution keys to problems are on Canvas.

Interested in AI?  Check out the AI Club seminar blog.  

Ungraded assignments

  1. Familiarize yourself with Python


Numbers in square brackets refer to chapters and/or sections of your text:

Russell, S. J., and Norvig, P. (2021). Artificial intelligence: a modern approach (Prentice Hall, Upper Saddle River), pp. xviii, 1115  pp.

This is a presidential election year.  If you are a US citizen and have not registered to vote, please consider  doing so now.  California voters can do so online: https://covr.sos.ca.gov/. Democracies only work when the public participates.

Weekly schedule:

  1. Aug 25 – What is AI? Brief Python introduction, uninformed search [1, 2]
  2. Sep 1 – Search (uninformed, informed, (Sep 4 7:59 PM is add/drop deadline) [3]
  3. Sep 8 – Search, Local search [4] (Labor Day is Mon Sept 7)
  4. Sep 15 – Local search contd., Deterministic games [5-5.3]
  5. Sep 22 – Deterministic games contd.
  6. Sep 29 – Stochastic games [5.5], Markov decision process games [17.1-17.3])
  7. Oct 6 –  Markov decision processes contd.
  8. Oct 13– Probability [12.1-12.5] & Supervised learning [19.1-2] (Naïve Bayes [12.6], Decision trees, [19.3], regression [19.6], neural networks [21-21.4])
  9. Oct 20 – Supervised learning contd.
  10. Oct 27 – Supervised learning contd.
  11. Nov 3 – Constraint satisfaction [6] Election Day (VOTE if you are eligible).
  12. Nov 10 – Constraint satisfaction contd. (Veteran’s Day is Wed Nov 11)
  13. Nov 17 – Logical agents [7]
  14. Nov 24 – Logical agents contd. (Thanksgiving Th Nov 26, no class)
  15. Dec 1 – Logical agents / catch up
  16. Dec 7 – Catch up or advanced topics



  • Russell, S. J., and Norvig, P. (2021). Artificial intelligence: a modern approach (Prentice Hall, Upper Saddle River), pp. xviii, 1115  pp.

Programming exercises will be implemented using Python 3.  While we will briefly introduce Python in class, we will not be devoting much time to how to program in Python as upper division computer scientist should have the skills to learn new languages without an extraordinary effort.  Optional books to help you with this are freely available from SDSU Library through Safari Technical Books:

  • Lutz, M. (2015).  Learning Python, 5th Edition, O’Reilly Media, Sebastapol, CA
  • Martelli, A., Ravenscroft, A., and Holden, S. (2017). Python in a Nutshell, 3rd Edition, O’Reilly Media, Sebastapol, CA) or
  • Reitz, K. (2016). The Hitchhiker’s Guide to Python: Best Practices for Development (O’Reilly Media, Sebastopol)

In addition, the python.org’s tutorial is also quite good.  If you prefer to watch videos to reading, you might want to try Jessica McKellar’s Introduction to Python on Safari.

Programming environment 

Python is rapidly becoming one of the most popular languages for AI.  This is primarily due to a large number of scientific libraries such as NumPy and SciPy coupled with popular machine learning language libraries such as scikit-learnTensorFlow, and PyTorch.  Python can be downloaded from the Python Software Foundation if it is not already available on your machine.  Make sure that you install Python 3.6 or later.

You are welcome to use any integrated development environment (IDE) that you wish.  There are many popular IDEs for Python (Computerworld has a 2016 review covering some of the more popular ones).  I personally have used both eclipse with the pydev extension  and PyCharm, both of which have free versions.  PyCharm has a professional version that is free to students although you must register.

About the course:

Students will master a number of basic areas in artificial intelligence.

After successful completion of the course, students will be able to:

  • Construct intelligent agents capable of interacting with their environments.
  • Understand and implement heuristic searches for problem solving and game playing (adversarial search)
  • Understand first-order logic and its application to theorem proving.
  • Analyze constraint satisfaction problems and resolve them through search.
  • Understand and be able to apply machine learning algorithms

Prerequisites:  CS 310 Data Structures, Mathematics:  Discrete Math (245) or Mathematical Logic (523)

Course meets Tu/Th from 4-5:15 via Zoom, see Canvas for access information.  Office hours may be found on this web pages sidebar with a Zoom link on Canvas.

TA:  Mr. Dhaval Sharma.  e-mail:  sharmadhaval97 _!a*t!_ gmail.com.

Please see syllabus for detailed course policies.