EECS 543: Knowledge-Based Systems, Fall 2005

Lecture time: Tuesdays and Thursdays, 9:00-10:30, 3427 EECS (Note: 9:00 "Michigan Time" means 9:10 though 10:30 means 10:30)

Instructor: Daniel Reeves, dreeves@umich.edu

Office Hours: Tuesdays and Thursdays, 10:30-12:00 (i.e., after class), ATL room 30/30A (downstairs, past all the robots, to the southeast corner of the building)

Textbooks and Resources:

Prerequisites

This is a programming course, and students entering this course should have experience and capabilities in programming. Although it requires no prior knowledge of the programming languages used, the course does require an understanding of general programming concepts (data structures and algorithms (281)) and the ability to learn new languages quickly. Discrete math (203) and calculus are also prerequisites. Students who have taken EECS 492 (or some other AI class) may have an extra appreciation for some of the problems that we address, but EECS 492 is not a prerequisite for this course.

Course Material Online

We will use Ctools (https://ctools.umich.edu or google ctools). Log in there (link in upper right corner) and you should then have access to the EECS543 website, once you are registered for the course. There you will find assignments, course handouts, syllabus updates, etc. You will also be using the Ctools page to submit your assignments, and, while you are working on assignments, you can use the mailing list or the discussion feature to post messages to and read messages from the whole class. Often you can get an answer to a general question by posting a message and someone else in the class will provide you with an answer -- just do not post homework solutions. If you have a specific question that you think is inappropriate for the list, send email to the instructor, but if you have have a comment or question of general interest, I recommend trying the discussion list directly. Email directed to the instructor may be reposted to the discussion list unless you request otherwise.

Assignments

There will be five or six graded homework assignments (projects) over the course of the semester. Some will be significant programming projects, involving the design and development of knowledge-based systems with practical implications. Of course, it is assumed that good software-engineering practices will be observed in the development of code. In particular, documentation of code (commenting) is mandatory.

If you have a problem with the grading on a particular assignment or quiz, write a brief (one-paragraph) description of the problem, and email it or hand it to the instructor for a regrade. Regrade requests must be made no later than a week after the graded assignment and posted solutions have been made available.

Collaboration

Adherence to the Engineering Honor Code is required in all assignments. Each assignment will indicate whether it is to be done on your own, or whether it is allowable to work in a team, and if so, what the maximum size of that team is.  You must adhere to these instructions.  You are allowed to consult with other students in the current class during the conceptualization of a problem but all written work, whether in scrap or final form, is to be generated by you working alone or solely with the members of the team with which you will submit the assignment.   You are not allowed to sit together and work out the details of the problems with anyone (other than your team members). You are not allowed to discuss the problem set with previous class members, nor anyone else who has significant knowledge of the details of the problem set. Nor should you compare your written solutions, whether in scrap paper form, or your final work product, with other students except team members.  You are also not allowed to possess, look at, use, or in any way derive advantage from the existence of solutions prepared in prior years, whether these solutions were former students' work or copies of solutions that had been made available by instructors. Violation of this policy is grounds to initiate an action that would be filed with the Dean's office and would come before the College of Engineering's Honor Council. If you have any questions about this policy, including any ambiguities you might find in this policy, it is your responsibility to seek clarification with the instructor.

Late Policy

Programming assignments are typically due two weeks from when they are posted. If an assignment is late (as measured by the ctools submission timestamp) by t weeks then the score will be adjusted by multiplying by 1-t^4. This policy will be applied precisely and automatically, with to-the-second granularity. It has a lot of built-in leeway so the only exceptions to it will be for serious emergencies. Mistakes and oversights (such as forgetting to hit submit in ctools) will not warrant a manual override of the late policy. Once the nominal deadline has passed, no resubmissions will be allowed. So when submitting during the variable penalty period, check over your submission carefully. Note that within two days of the deadline less than 1% -- (2/7)^4 -- of the points are lost so the late policy can be treated as having essentially a 2-day grace period for every assignment.

Participation

Participation in the class is graded. More important than oral participation in class is participation in online discussion. For example, pointing out a language feature related to the last lecture. Or answering other students' questions. Or posting timing results to help resolve a question of efficiency. I feel this is an excellent way to demonstrate mastery of the material and warrants being part of the grade. Conciseness will also be rewarded.

Grading

Final grades will be computed as follows:

Course Schedule

N = Norvig, B = Bratko

#

Date

Topic

Reading

Assignment

1

09.06 Tu

Overview, Knowledge-Based Systems, Reasoning about Knowledge, LISP: Primitives and Syntax

 

 

2

09.08 Th

Lisp 2: lambda functions, subsets

N1

PA1 out

3

09.13 Tu

Lisp 3: dotted pairs, sort, optional args, math

N2

 

4

09.15 Th

Lisp 4: higher order functions, closures, i/o, trace, from-digits

N3.1-3.9

 

5

09.20 Tu

Lisp 5: macros, multiple-value-bind, arrays, hashes, structs

N3.10-3.22

 

6

09.22 Th

Search 1: tree-search, DFS, BFS, best-first

 

PA1 due, PA2 out

7

09.27 Tu

Search 2: graph-search, A*; memoization

N6.4-6.6

 

8

09.29 Th

PA1 review

9

10.04 Tu

Search 3: more A*, destructive functions, heuristics, function search

 

 

10

10.06 Th

Pattern Matching: Eliza, Student; property lists; regular expressions

N5,N6.1-6.3

 

11

10.11 Tu

Object-Oriented Programming in Lisp: canonical class examples, search examples; tail recursion, extending Student code

N7,N13

 

12

10.13 Th

Game Tree Search (minimax, alpha-beta), Decision Theory, Game Theory

N18

PA2 due, PA3 out

 

10.18 Tu

No Class: Fall Break

 

 

13

10.20 Th

PA2 review, Game Theory 2, Auctions

N9.1, 9.4-9.5

N10

 

14

10.25 Tu

Quiz 1 (and review)

 

 

15

10.27 Th

PROLOG: Overview of declarative programming, horn clauses, list-processing in Prolog

B1,2

 

16

11.01 Tu

Prolog 2: unification, procedural meaning vs declarative meaning, arithmetic, pets example, nondeterministic finite automaton example

B3,4

PA3 due

17

11.03 Th

Auction Tournament

B5,6,7

 

18

11.08 Tu

Prolog 3: delete/insert, pairify (nested lists), cut, not, assert/retract, memoization, bagof/setof, =../call

B8

19

11.10 Th

Prolog 4: sort, permutations, 8queens, search revisited, missionaries and cannibals

B11,12

20

11.15 Tu

Constraint Satisfaction Problems: definition, forward checking, arc consistency

PA4 out

21

11.17 Th

Prolog 5: anselm's ontological argument in prolog, nth, map, var, anti-coordination coin game

B19

22

11.22 Tu

MATHEMATICA intro: (more on cut in prolog -- if-then-else), Mathematica syntax and FullForm, Set vs SetDelayed, memoization, pattern-matching in function arguments, Map (/@), Apply (@@), lambda functions (#&), pairwise diffs and variations, qsort, Select, Join, Prepend, First, Rest

PA4 due

 

11.24 Th

No Class: Thanksgiving

23

11.29 Tu

PA4 Review, Mathematica 2

24

12.01 Th

Quiz 2, Mathematica 3

25

12.06 Tu

Mathematica 4

26

12.08 Th

Mathematica 5

 

27

12.13 Tu

Review and Wrap-Up

PA5 due

 

12.21 Wed

Final Exam

 

 

Last modified: Mon Nov 28 22:57:01 EST 2005