Artificial intelligence is a broad and interdisciplinary field that has drawn from and impacted every area of computer science and engineering, along with areas spanning philosophy, psychology, math and statistics, economics, neurology, and even literature and the humanities. The course takes a survey approach, beginning with a conceptual and historical understanding of the subject and proceeding to core techniques involving search and constraint satisfaction. By subsequently introducing the concepts of uncertainty and probabilty, the course then considers Markov decision processes, reinforcement learning, and machine learning techniques culminating in neural networks and deep learning. A final portion covers specific topics and applications of artificial intelligence.
The course pursues a three-pronged learning approach whereby the same concepts are repeatedly encountered across lectures, readings, and assignments:
Course staff will work to align lectures, readings, and assignments, ensuring relevance between all three processes. Students should be diligent in pursuing readings, as passively receiving a concept one time in lecture and then referenceing lecture slides alone may not be sufficient for successful assignment completion.
The grading process serves as an assessment of learning, but also aims to motivate progress, and provide feedback. Similarly, fraud detection acts to punish cheating within the framework of academic misconduct, but the primary goal is to protect the motivation of students who are not cheating, and to simplify the work process for everybody by eliminating the credible possibility of non-educational shortcuts.
Lecture attendance is encouraged, but not mandatory--especially for students in unamenable time zones. Lectures will be recorded, and posted to the "Schedule" section of this site once processed by Zoom. But, if everyone who is able can attend live and participate in questions, chat, and polls, the overall result will be that much more enjoyable for everybody. The zoom meeting for lecture will be open 30 minutes early for anyone who wants to preconvene and catch up on reading, chat or just relax before the start of class.
Grades will be assessed by a ratio of 80% assignments, 20% exams. The exams are designed to be short, and simple to complete on the basis of knowledge and insights gained from completing assignments.
Coding Assignments can be completed with the use of online sources and discussion between students. But, students should not look at or run actual python solution code written by anybody else, whether a fellow student or someone from outside the class who has posted code to the web. When closely following a particular pseudocode presentation of a general algorithm, students should cite the source in a comment. Such practices will help to resolve issues where multiple submissions look similar under machine comparison, and will also facilitate preparation for exams.
Three Late Days are available to students to submit assignments past the deadline without penalty. However, no more than one late day may be used per assignment.  No special action must be taken to use a late day, and at the end of the course, they will be automatically reallocated for students who are late on more than three assignments, in a way that is most advantageous to the student.  In the absence of a late day, scores are penalized at a rate of 25% of the original score, for each day that they are late.