Computer Science 165A, 4 Units
Enrollment Codes: 08060, 08078
Meeting times and locations
Lecture: Tues/Thurs 3:30-4:45pm, 1111 North Hall
Discussion: Wed 3:00-3:50pm or 4:00-4:50pm, Phelps 1401
Professor Matthew Turk (contact info)
Office Hours: Tues/Thurs 5-6pm or by appointment, or drop by and see if I'm available (Frank Hall 2163)
Brynjar Gretarsson (brynjar at cs.ucsb.edu)
Office Hours: Mondays 3-4pm and Thursdays 2:30-3:30 pm, in the Four Eyes Lab (see red arrow on map)
Course web site
Please check the course web site regularly for assigned reading and homework, announcements, and any other relevant information. Normally anything important will be mentioned in class. Lecture notes will be posted to the web site after each lecture, but these are only notes - if you only read the lecture notes, you may miss important information.
cs165a at cs.ucsb.edu forwards to both the instructor and the TA. Use this to ask questions or send comments. Direct email to the instructor is okay, but in general the "cs165a" alias is preferred.
Course discussion site
This is a resource for you - use it for discussion, questions, comments, etc. It will be read regularly by the TA (and semi-regularly by the instructor), but consider it as an unofficial course discussion forum.
The formal prerequisite, which may be waived by consent of the instructor, is Computer Science 130A (Data Structures and Algorithms I). This implies that you have studied topics such as algorithms, data structures, searching and sorting techniques, recursion, and induction, all of which are relevant to this course. Most importantly, you need to be able to think logically about problems and solution strategies, and you must be familiar enough with writing software to implement solutions on your own. If you have completed the CS pre-major courses (including the Math and PSTAT courses) and CS 130A then you will be very well-prepared.
"Consent of instructor" means that you may be admitted if you are willing to learn extra things where your background is weaker. Non-CS students are welcome (and encouraged) to take the course.
What is this course about?
An introduction to the field of Artificial Intelligence (AI), which attempts to understand and build intelligent systems. Topics include intelligent agents, search, game playing, logic, knowledge representation and reasoning, uncertainty, learning, and perception. We will also briefly cover the history of AI and philosophical and social implications.
Artificial Intelligence is about building and understanding intelligent systems. AI means different things to different people. People have approached the study of AI from various perspectives: philosophy, neurophysiology, mathematics, linguistics, psychology, control systems, and computer science, to name a few. Part of what makes it so interesting is the range of activities, from trying to understand minds in the abstract, to building creatures that run around and do things. AI has made steady progress and contributed to much of what is now standard computer science and cognitive science. It has spawned several sub-areas (e.g., natural language processing, speech recognition, computer vision, robotics, expert systems, and learning).
This is a computer science course, so we are not primarily concerned with the approaches of philosophy, cognitive science, etc., although we will come back to them from time to time. We will cover the following topics:
History and foundations of AI
Problem solving and intelligent agents
Problem solving and search (blind, informed, constraint satisfaction, adversarial)
Knowledge representation and reasoning in deterministic environments (logic, semantic networks, frames)
Knowledge representation and reasoning in probabilistic environments (Bayesian networks)
Overview of machine learning
Communication (natural language)
Perception and action (machine vision, robotics)
Note that CS165B, which will be taught in the Winter Quarter, is about the important topic of machine learning. Hence we will only provide a small overview of learning issues in CS165A.
What you will learn
By the end of the course, you will understand what AI is all about and what it has contributed, and may contribute, to computing. You will have a working knowledge of the basic tools of AI, which are applicable to a wide range of computing problems. You will be able to solve problems using explicit knowledge and reasoning. You will have experience building agents that, to some degree, can perceive their environment, reason about their behavior, and act upon the environment to achieve their goals.
This is not primarily a programming course - that is, the main goal is to learn the concepts, not to learn a language or particular programming techniques. However, coding examples of the concepts is the best way to demonstrate (and facilitate) your knowledge of them. Good programming practices (proper file structure, comments, etc.) are expected.
Why study AI?
AI techniques are used in building e-commerce (and other) agents, expert systems, speech recognition and natural language processing software, intelligent user interfaces, robotics, computer vision, and other areas of computing. A study of the approaches and techniques of artificial intelligence can broaden your perspective and give you a new set of tools to apply to a wide variety of problems.
Class attendance is highly recommended: you are responsible for everything that goes on in class. Prepare in advance for class by reading and studying the assigned text, and by making sure you understand the previous lecture.
Weekly one-hour discussion sections, led by the TA, will focus on (1) presenting supplementary material (such as practical examples) to the lectures and (2) answering questions (about lecture topics, homework problems, programming issues, etc.). It is expected that students attend these sessions; you are responsible for the material presented in these sessions. Students are encouraged to give the TAs (and, if appropriate, the instructor) feedback regarding topics or issues they would like to have discussed during this time.
Stuart Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, Prentice Hall, Second Edition, 2003. (Otherwise known as AIMA.) [Make sure you have the second edition, which has a green cover, not the first edition, which has a red cover.] This should be available in the UCSB bookstore. A very thorough and useful web site for the text can be found at http://aima.cs.berkeley.edu/. (Note the errata that are listed at http://aima.cs.berkeley.edu/errata.html.)
You may use the CSIL (Computer Science Instructional Lab) computers, or any other machine you prefer. If you need a computer account for this course, see Julia Orr (email@example.com) in the Computer Science office (2106 Frank Hall).
You should use either C/C++ or Java in your assignments.
Grades will be based on homework assignments, term project, weekly quizzes, midterm exam, and final exam:
40% Homework assignments
10% Weekly quizzes (Thursdays at the beginning of class)
20% Midterm exam
30% Final exam (Friday, December 14th, 4-7pm)
Homework will include both programming and non-programming assignments. For details on what to turn in, see the Assignments page.
Unless otherwise instructed, all assignments must be submitted by 3:30pm on the due date (meaning, usually, at the beginning of class). Late assignments will not be accepted. Turn in what you have done by the due date and time.
You are encouraged to discuss homework assignments with classmates at a general level. However, you may not share answers/code or collaborate on solutions unless otherwise directed to do so. All work turned in must be completely your own, including programming assignments. (See the Policy on Academic Integrity, below.)
There will be no makeup exams.
Please read this section carefully.
The university, the department, and this instructor all take the issue of academic integrity very seriously. A university requires an atmosphere of mutual trust and respect. While collaboration is an integral part of many scholarly activities, it is not always appropriate in a course, and it is never appropriate unless due credit is given to all participants in the collaboration. This goes for both ideas and programming or other work.
Here are some examples:
Allowed: Discussion of lecture and textbook materials
Allowed: Discussion of how to approach assignments, what techniques to consider, what textbook or lecture material is relevant
Not allowed: Sharing ideas in the form of code, pseudocode, or solutions
Not allowed: Turning in someone else's work as your own, even with that person's permission.
Not allowed: Allowing someone else to turn in your work as his or her own.
Not allowed: Turning in work without proper acknowledgment of the sources of the content (including ideas) contained within the work.
For some views on academic integrity at UCSB see:
Summary: Academic integrity is absolutely required - dishonesty (cheating, plagiarism, etc.) benefits no one and hurts everyone. If you are not sure whether or not something is appropriate, please ask the instructor or TA.
If you are a student with a disability and would like to discuss special academic accommodations, please contact the instructor. In addition, students with temporary or permanent disabilities are referred to the Disabled Students Program (DSP) at UCSB. DSP will arrange for special services when appropriate (e.g., facilitation of access, note takers, readers, sign language interpreters). Please note that it is the student's responsibility to communicate his or her special needs to the instructor, along with a letter of verification from DSP.
Please feel welcome to give feedback to the instructor and/or TAs regarding the course material, pace, assignments... whatever you wish. Don't just stew about it - let us know!
Cell phone policy - Please turn off your cell phone. If it rings, I get to answer it. Really.
Back to home