This page will have all relevant email transactions with the students regarding the AI course, so that everyone has equal information regarding the course material.
Newest transactions will be posted on the top. Regularly view this page to see what's going on between other students and the instructor.
All sensitive material such as your name, email address, etc. will be removed, and also any part of code that is not relevant to the discussion will not be uploaded here.
Date: 11/08 | Title: Program #3 alternative: mini term project |
Date: 10/11 | Title: Homework #2 unification exercise solution |
Date: 10/3 | Title: General Q and A |
Date: 9/21 | Title: Compiling Lisp programs |
Date: 9/15 | Title: Program #1 Q and A |
Date: 11/08 | Title: Program #3 alternative: mini term project |
I. IntroductionIn place of program #3, you can do a mini term project relating to any topic in AI. The percentage will be the same as program #3, so this will not be a major project.
II. Timeline
III. Example Topics
| |
Date: 10/11 | Title: Homework #2 unification exercise solution |
Solution to homework #2, unification exercise: 1. P(x,b,f(x)), P(a,y,f(y)) {x/a} P(a,b,f(a)), P(a,y,f(y)) {y/b} P(a,b,f(a)), P(a,b,f(b)) Cannot unify because the final disagreement set, D = {a,b}, contains no variable. 2. P(x,f(x,y),g(f(a,b))), P(a,z,g(z)) {x/a} P(a,f(a,y),g(f(a,b))), P(a,z,g(z)) {z/f(a,y)} P(a,f(a,y),g(f(a,b))), P(a,f(a,y),g(f(a,y))) {y/b} P(a,f(a,b),g(f(a,b))) == P(a,f(a,b),g(f(a,b))) unifier = {x/a} o {z/f(a,y)} o {y/b} = {x/a, z/f(a,b), y/b} | |
Date: 10/3 | Title: General Q and A |
> > 1- What are topics that we need to study for the exam? Topics covered in class. > > 2- Are the slides enough for that? That, and what I mentioned in class. > > 3- Shall we read only the sections that are listed in the reading part > of the web site? That would be sufficient. > 4- In case of Chapter 3.1-3.5 (3.6,3.7 optional) , are sections 3.6 and > 3.7 included in the exam ? No. > > 5- Shall we memorize the UNIX commands? No. > > 6- In the case of Lisp, should again memorize all the functions? No. No lisp questions. > > 7- Shall we memorize the topics of chapter 1 and 26 including definitions and history ?!! No, but read and get acquainted with the concepts. > 8- Shall we know all the algorithms in the book? Do we expect to write > an algorithm? No. Only those that were discussed in the class. No. No writing of algorithms. > 9- May you please provide us with previous exams so that we can have a > brief idea of what to expect we shall see in the exam ? like would there > be comprehensive questions , True/False , multiple choice etc. Yes I will. > > 10- Just to be in the safe side , the exam will be in the class on > October 13 at 11:10 until 12:25 Yes. > 11- Some definitions (small topics) in the book you are not explained in > the slides , shall we try to understand them ? No. > 12- When is the date and time of the final exam test? See the official university schedule. 12/9 3-5pm ZACH | |
Date: 9/21 | Title: Compiling Lisp programs |
To optimize and speed up execution, you should compile your program
code. You can do this in CMUCL by running the (compile-file
<filename>) function. See below for an example, where I am
compiling function(s) in the file fibo.l. The file contained the
definition for the (fibo ..) function. Of course you can have multiple
function definitions in the file, and all of those will be compiled.
Again, * is the
lisp prompt, and my inputs to lisp are in bold.
* (compile-file "fibo.l") ; Python version 1.1, VM version UltraSparc/Solaris 7 on 09 SEP 04 10:49:52 am. ; Compiling: /user/choe/web_project/625/fibo.l 09 SEP 04 10:44:02 am ; Converted FIBO. ; Compiling DEFUN FIBO: ; Byte Compiling Top-Level Form: ; fibo.sparcf written. ; Compilation finished in 0:00:00. #p"/user/choe/web_project/625/fibo.sparcf" NIL NIL * (load "fibo.sparcf") ; Loading #p"/user/choe/web_project/625/fibo.sparcf". T * (fibo 20) 10946 *Note that you need to first compile it, and then note what the resulting compiled file is (the one highlighted in red above), and then finally (load ...) that. | |
Date: 9/15 | Title: Program #1 Q and A |
First of all, see
http://courses.cs.tamu.edu/choe/04fall/board.htmlfor useful tips on program #1. Start from the bottom of the page and go up. Next, there were several questions from the students already, so I'll summarize those and my responses below. Q1: Why do I get "end-of-file" error when I try to load the following code? (defun ... ... (list ... } ... ) A1: That error happens if you did not balance all the parentheses. For example, in the above example, "}" is used instead of ")". Also, see an old article on the same topic, from Fall 2004, which gives much more detail. ---------------------------------------------------- Q2: I am having trouble with the deriv-eval in multiple ways. Any suggestions? A2: Try using "list", "eval", etc. creatively, or write a recursive expression evaluator. ---------------------------------------------------- Q3: I am getting strange errors like: ; Warning: These variables are undefined: ; Y X ; A3: Try declaring them first using (let (x y) ... . (defun ... (setq x ... (setq y ... ) ==> (defun ... (let (x y) (setq x ... (setq y ... ) ) ---------------------------------------------------- Q4: Does our program need to evaluate derivatives for negative numbers too? For example, does our program need to handle the following command? (deriv-eval '(* x x) 'x (- 1)) A4: No. Just use -1 instead of (- 1). ---------------------------------------------------- Q5: Does our deriv-eval need to support lettered constants like (deriv-eval '(* x y) 'x 2) A5: No, you don't need to worry about those cases. ---------------------------------------------------- Q6: Can I use "smult" instead of "sminus" (or "sunaryminus" for that matter) in the main unary minus function? A6: It's up to you, under the condition that it does simplify the expression correctly. |