Assignments are submitted online and must include an affidavit.  Due dates are posted on the calendar.

  1. Familiarize yourself with Python, set up your environment and write a small Python program (ungraded, nothing to submit).
  2. Read Williams & Kessler pair programming article.  (Article on Canvas, your first graded assignment will contain some simple questions on this).
  3. A1 Pair programming and agents
  4. A2 Search
  5. A3 Constraint satisfaction problems
  6. A4 Machine learning and logical agents
  7. A5 Uncertainty

Due dates for assignments that require work to be turned in are posted on the calendar below.  The grader for this class is Jordan Mata.  Should you have questions about grading on homeworks or projects, please contact Mr. Mata (you can find him associated with this class in Canvas).  Solution keys to problems are on Canvas.

Use the ICAL address to add this to a personal calendar if you wish. Interested in AI?  Check out the AI Club seminar blog.  

Please note that all dates except the final exam are tentative.  My primary concern is that you master the material and the schedule may be adjusted in either direction to optimize comprehension and scope of material.  The units in Russell and Norvig corresponding to material are listed on the first slide of each slide deck.

There is a special election this fall.  If you are a US citizen and have not registered to vote, please consider  doing so now.  California voters can do so online: Democracies only work when the public participates.

Weekly schedule:

  1. Aug 24 – Foundations of AI
    August 30th is the Last day to register to vote in California recall election
  2. Aug 31 – Problem formulation and uninformed search
  3. Sep 7 – Heuristic search
  4. Sep 14 – Constraint satisfaction problems (CSP)
    Tuesday September 14th is California recall election. Vote if you are eligible.
  5. Sep 21 – (CSP), Learning: supervised methods
  6. Sep 28 – Learning: supervised & unsupervised methods
  7. Oct 5 – Learning: unsupervised method, Deep neural networks
  8. Oct 12 – Midterm Tue Oct 12, Deep neural networks
  9. Oct 19 – Computer Vision
  10. Oct 26 – Propositional logic
  11. Nov 2 – Uncertainty: Bayes’ rule, probability models, Bayesian network, hidden Markov models
  12. Nov 9 – Uncertainty continued, no class on Veteran’s Day: Thu Nov 11
  13. Nov 16 – Professor Roch at conference (work on project)
  14. Nov 23 – Natural language processing (NLP), no class on Thanksgiving: Thu Nov 25
  15. Nov 30 – NLP continued
  16. Dec 7 – Speech recognition

Final exam is Tuesday, December 14th from 3:30 PM – 5:30 PM in our normal class room.



  • 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 have created a Python quick start video that is available on Canvas, we will not be devoting much time to how to program in Python as upper division computer scientists should have the skills to learn new languages without an extraordinary effort.  I am more than happy to help you with questions that you may have about Python during office hours.  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’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.  When your code is graded, it will be executed on Python 3.8.  We recommend using 3.8 for your development.

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 PM in AH 3177.  Office hours will be held via Zoom (see Canvas for link), times are listed in the sidebar.

TA:  Mr. Jordan Mata

Please see syllabus for detailed course policies.