CS313 ARTIFICIAL INTELLIGENCE LABORATORY Professor Loui loui--aat--cs.wustl.edu TA's: none Location: Cupples II-200 Time: W 5:30-7:30 lecture, W 7:30-8:30 help session/lab Required Texts: none Course Description: see catalog 3.0 credits Prerequisites: programming skill beyond CS102 in any language on any operating system Course in Brief I pose problems. Students program solutions. We discuss approaches. Students come to understand AI by doing it rather than being told about it. Compared to CS511: CS511 is a graduate course which aims at mastery of concepts in a book. Compared to CS517: CS517 (machine learning) is about well-understood algorithms for specific kinds of AI problems. Compared to CS513: CS513 is more like a group Master's Project in AI, and is intended to apply AI rather than illustrate it. Compared to CS101/102: instead of focusing on programming concepts and style, exercised through several problems, this course focuses on programming solutions to various problems. Usual Benefits to the Student Students are forced to use UNIX as a tool and a high standard of capability is demanded early. They are exposed to a powerful program editor and a powerful scripting language and encouraged to use them. Students exit with an understanding of AI's scope. They are able to compare machine learning, optimization, and AI. They can understand where search, scoring, compositional syntax, and combinatorial explosion can happen in their designs and make tradeoffs where needed. They understand how to incorporate knowledge into a solution and how to transform it so that it can be usefully represented. Students see AI problems, and non-AI problems, in the processing of images, language, game-playing, and human interaction. Usual Student Response The best programmers tend to love this course. Or perhaps that is how I have come to define the best programmers. Students who expect to be taught about AI explicitly are often disappointed and should have enrolled in CS511. Students who do not take quickly to UNIX, scripting, or bottom-up design are often frustrated by this course. You must be willing to program differently from "the right way" which was taught in CS101/102. This is exploratory programming, not the production of industrial code to specification. Mechanics You come to class. I organize and demonstrate. We adjourn to the lab, where I can help people in small groups and often 1-on-1. Not everyone is required to attend the lab, but ironically, those who need help the most are usually the ones who do not attend. Since almost all of the work done in this class is done in teams, it is useful to be in the lab with your teammates even if you do not need help. There is a strong correlation between A's in CS313 and lab attendance, but it is not my intention that there be such a correlation. We have four to six programming assignments. Usually four big projects and two minor checkpoints. Your grade depends on my assessment of your performance in those projects (the checkpoints are of secondary importance). Where there is a team, I am free to draw my own conclusions about how to assign credit within the team, and you are welcome to help me understand how to draw those conclusions. Your grade depends on the performance of your software and the merit of your approach. I am not interested in documentation or programming style in this class. You may use any programming language that you can support (I will not be supporting languages for you) on the UNIX machines you are required to work with. Each student shall keep a blog which is the actual graded work in this class. Source, scripts, screen grabs, and remarks should be made in the blog, which is graded occasionally by the professor. Teams may post redundant copies of work. Students will achieve the highest grade for the briefest mot informative blogging. Tentative List of Projects a. two-part regular expression exercise b. text-mining/web spidering exercise 1. Negotiating Agent 2. Classifying Documents 3. Face Finding 4. Playing Soccer Class Meeting 9/1 This document, above. Getting some horrid questions out of the way: What is AI? Does AI work? Can computers be intelligent? Understand? Does AI intend to harm us? When will AI be finished? Impromptu gawk language examples printing, looping, conditionals, functions associative arrays, iterators a closer look at identifiers and types getline from files, from pipes, from stdin automatic parsing of input two ways to run gawk printing to a pipe some built-in functions for regexps: ~, split, index, match larger structs as strings with delimiters, multi-d arrays practice with regular expressions