webmaster: Sven Koenig

Introduction to Artificial Intelligence


Artificial Intelligence (AI) seeks to understand the mechanisms underlying thought and intelligent behavior, with a particular focus on their embodiment in machines. Core topics include the integrating perspective of intelligent agents and how such systems can engage in search and problem solving; symbolic and probabilistic knowledge representation and reasoning; planning; and machine learning. The course introduces both basic concepts and algorithms, and explores how to apply these in the construction of systems that can interact intelligently with complex environments.

Target Audience

The course is intended for undergraduate students in computer science or closely related disciplines, usually in their junior year. Graduate students should take CS561 rather than CS360.


The courses CS104L ("Data Structures and Object-Oriented Design") and CS170 ("Discrete Methods in Computer Science") are necessary prerequisites, which will not be waived. Overall, the prerequisites of CS360 include a solid understanding of data structures, algorithms and programming since you will have to be able to understand algorithms and read pseudo code. You should also know the basics of probability theory, calculus (especially derivatives) and other high-school mathematics. Finally, you should know how to program in C/C++ since the projects will use these programming languages. Do not take this class if you cannot program. The most important prerequisite of all, however, is your interest in the class, motivation and commitment to learning. If you are not sure whether this class is for you, please come and talk to us.


Most readings will be chosen from the (required) textbook, which is readily available from many standard online retailers:

Stuart Russell and Peter Norvig
Artificial Intelligence: A Modern Approach
(most recent edition - currently: 3rd edition),
Pearson/Prentice Hall
(ISBN 978-0-13-604259-4)

The authors made extensive revisions from one edition to the next one. We therefore suggest that you buy the latest edition. Definitely do not use the first edition. We will not cover all chapters and, from time to time, cover topics not contained in the book.

Additional material will be provided as necessary.

Class Tools

The class web pages are maintained at http://idm-lab.org/wiki/360-Fall19/. Scores are posted on blackboard.usc.edu. The discussion forum is maintained at (to be determined). Graded exams are available at (to be determined).


We will ask you to fill out several questionnaires for different reasons: for example, because we want to learn a bit more about you so that we can tailor the class toward your skills and expectations; because we want to evaluate certain features of the class, and because we want to improve future classes. Filling out the questionnaires is voluntary and anonymous. We hope that you will make use of this opportunity and choose to provide us with feedback. We might use information from the questionnaires in our publications.


The about 80-minutes-long lectures (which sometimes might run a couple of minutes longer) are meant to summarize the readings and stress the important points. Thus, we expect you to read the corresponding part(s) of the textbook before the lectures. We will post the slides directly before the corresponding lectures (see "Schedule" on the left). We highly encourage you to take notes during the lectures and exercise sessions, for example, by printing out the slides and adding your notes to them. If you miss a class, it is your responsibility to find out what we discussed in class, including which announcements we made in class. If there is something that you do not understand, please feel free to interrupt the lecture or exercise session with questions. Your active participation in class is crucial in making the class successful. Use your colleagues as a resource (they are working toward the same goal as you are), for example, by forming study groups or posting questions on the discussion forum that the TAs monitor on a daily basis. (We encourage you to participate actively on the discussion forum, by both asking and answering questions. If you are consistently very active in helping other students on Piazza and - this way - demonstrate your knowledge of the class material, we will consider giving you up to 1.5 percent extra credit overall, which might help you in case you end up close to a grade boundary. The TAs might not respond right away to give the students in class a chance to respond first.) If you need additional help, please feel free to visit the office hours of the TAs and course producers. The TAs are experienced and will be able to answer all your questions, including about the textbook, lectures, projects and assignments.


To help you prepare for the exams, we will post "text-book style" homework assignments and their solutions. We will not collect or grade your solutions. However, solving these assignments before looking at the solutions is important as it will ensure your understanding of the material in preparation for the exams. Assignments are made available on Wednesday nights (covering the material taught in the current week), and sample solutions will be made available on Tuesday nights. You can discuss the assignments freely with your co-students. In fact, we encourage you to form study groups to discuss the assignments and come up with solutions.


The exercise sessions will allow you to practice the application of the material taught in the lectures via a mix of the TAs answering your questions, you solving assignment-type problems in small student groups, and the TAs discussing projects, assignments, and their solutions. The time of the exercises and other details are to be determined. There will be no exercise sessions during the first week of classes.


There will be three graded two-week projects, all of which are mandatory. Most or all of the projects will involve some programming problems in C/C++ in addition to more theoretical questions. All of them have to be done individually. You are required to cite all resources you relied on for coming up with your answers, including people, web pages, publications, and other write-ups. You are not allowed to use code or code snippets of others (that is, that you did not write yourself), unless we provided them with the projects. You are not allowed to discuss with others how to solve the projects.

Please start to work on your projects early and hand them in early. There is a grace period of 48 hours and then a linearly increasing penalty for late submissions so that submissions that are late by 96 hours (or more) after the original deadline will receive no credit. So, for example, if a project is due on Monday at midnight, and a) you hand it in on Wednesday at midnight, you maximum score is 100 percent; b) you hand it in on Thursday at midnight, your maximum score is 50 percent; c) you hand it in on Friday at midnight, you will receive no credit for it.


There will be one midterm and one final, all of which are mandatory. The exams have to be solved individually in class. The midterm will be written on Tuesday, October 15 from 6:00pm to 7:50pm in GFS106 (for both sections simultaneously). The final will be written on Friday, December 13 from 8:00am to 9:50am in SGM124 (for both sections simultaneously). No makeups will be given. The exams will be open textbook ("Artificial Intelligence - A Modern Approach" only) and open printed or hand-written (but not electronic) notes (including, but not limited to, all material posted on this wiki). All exams will be comprehensive but with a focus on material not yet tested in a previous exam. Please bring a calculator and your USC ID to all exams. Using computers, cell phones or similar equipment is not allowed, not even to access electronic versions of the textbook.


We do not require you to attend the lectures or exercises but think that it is a good idea to attend them. We do require you to attend the exams.

We will not accept excuses unless you provide us with a note from a doctor (or similar professional) that verifies the problem and you told us about the issue IMMEDIATELY WHEN IT AROSE (not: after it has already affected your performance in class). For example, you will need to let us know about an illness when it develops, not a couple of days before an exam when you suddenly notice that you lost so much time that you can no longer catch up with the rest of the class. We accept only true emergencies as excuses, such as your sickness or a death in your immediate family.

We are sorry that we cannot make exceptions to these rules. So, please do not ask for them.


We will not grade on a curve. Projects and exams have the following weights:

  • Project 1: 10%
  • Project 2: 10%
  • Project 3: 10%
  • Midterm: 35%
  • Final: 35%

The intended grading scale is as follows.

  • 95% - 100%: A+ (only in spirit; USC allows only for an A)
  • 90% - 95%: A
  • 85% - 90%: A-
  • 80% - 85%: B+
  • 75% - 80%: B
  • 70% - 75%: B-
  • 65% - 70%: C+
  • 60% - 65%: C
  • 55% - 60%: C-
  • 50% - 55%: D+
  • 45% - 50%: D
  • 40% - 45%: D-
  • 00% - 40%: F

The instructor reserves the right to adjust the grading scale.

The instructor might give students a bonus of up to 1.5 percent for frequently helping other students on the discussion forum. This is your only chance for extra credit, so you might want to make use of it.

The instructor will assign grades from A to F, if warranted. There will always be some students who are very close to grade boundaries. There is nothing that we will do about that. Grades are based on performance, not need or personal circumstances, and the instructor does not negotiate grades. Thus, please do not take CS360 (or take it completely at your own risk) if you need a certain grade, for example, because it is important for your graduation or because you have been conditionally admitted.

CS360 is very exam-heavy, and we do not expect extra-credit tasks (other than the one mentioned above) to be available. To receive a good grade, you will therefore need to perform well in exams. Please check the correctness of the grading and the posted scores immediately after we announce the availability of the scores. You will need to let us know about any grading issue with an exam, project or similar within 7 days of us posting the score for that exam or project. After that time, we will no longer entertain your requests for changes to your score. If you have a grading issue, you will need to discuss the issue first with the TAs. If you cannot reach consensus, you can appeal the grading issue to the instructor. Both the TAs and the instructor might check your exam or project completely for other grading issues as well and adjust your score up or down as appropriate.

Academic Integrity

USC seeks to maintain an optimal learning environment. General principles of academic honesty include the concept of respect for the intellectual property of others, the expectation that individual work will be submitted unless otherwise allowed by an instructor, and the obligations both to protect one's own academic work from misuse by others as well as to avoid using another's work as one's own. All students are expected to understand and abide by these principles. We will strictly enforce the student conduct code and refer students to the Office of Student Judicial Affairs and Community Standards for further review, should there be any suspicion of academic dishonesty, and suggest that they follow the recommended sanctions in case they should find that there was academic dishonesty. We typically suggest an F as overall class grade as penalty, if asked. Scampus, the Student Guidebook, contains the student conduct code and the academic review process: https://policy.usc.edu/scampus-part-b/.

Recommendation Letters

Unfortunately, Sven currently does not write recommendation letters for students in his current or previous classes due to the insufficient administrative support provided by the department and the large class sizes of his current classes.

Problems and Concerns

At some point, you will have questions. For example, you might not be able to get code to run that we provided, there is something in the textbook that you do not understand, and so on. In this case, we encourage you to post the question on the discussion forum and see whether someone can help you. If this approach does not generate the desired result, then the TAs will be happy to help you in person. They do answer email but, unfortunately, often will not manage to answer it on the same day. (Sometimes, they will be out of town and it will take them even longer. Also, they are typically overloaded with questions on exam days or directly before.)

It is very important to us that you voice your concerns about any aspect of the class as soon as they arise. Please send an e-mail to the instructor or talk to him in person. He will accept anonymous notes (either on paper or via email from any free "on-the-fly" email account) and treat them seriously, as long as they are sincere and constructive. Your comments will have an effect on the class, so please do not hesitate to provide them.

Artificial Intelligence is a fun topic, and we hope that all of us will have lots of fun!

Sven (yes, please feel free to call the instructor by his name) and the TAs

P.S.: As you might guess from the lengthy rules above, Sven is of German origin. His first name, though, is Scandinavian and means "young person" or "warrior." Fight on!