[Note: this webpage last modified Wednesday, 24-Aug-2011 15:11:05 EDT]
Work smarter not harder! (Actually, work smarter /and/ harder)
General Information
Announcements
Purpose and Focus of Course
Grading, Assignments, and Expectations
Blackboard
Academic Integrity
Special Needs
Lecture: TR 3:30-4:45pm, in A008 Root Hall
First class: Thursday August 25
Last class: Thursday December 8
Final exam: Tuesday December 13
Office hours: I am generally in my office and available
most MWF's from about 8:30am-4pm. My official office hours are
Wednesdays 9:30-11:30am. My office is A-156 Root Hall.
Instructor: Jeff Kinne
Website:
http://cs.indstate.edu/~jkinne/cs475-f2011 (or browse for Jeff Kinne
on http://math.indstate.edu, or
search for Jeff Kinne on google, bing, yahoo, etc.
and find a link to the course website from my personal webpage)
Required text: Artificial Intelligence: A Modern Approach by Stuart Russell and Peter Norvig. You can purchase either the second or third edition of the textbook. I have listed the 2nd edition as the official required version with the bookstore because it is cheaper. I have both the 2nd and 3rd editions (I did not have to pay for them). The two editions are close enough that either will be fine for you.
Software/Programming Environment: This course will use Python for most programming assignments and code that I supply to you. I will not assume that you know Python at the beginning of the course, but you should be able to pick up the basics quickly (because you are a good programmer in some other language already). The programming assignments will start out easier to allow you to become comfortable with Python if you are not already.
For information and resources for learning Python, see http://www.python.org (in particular, the tutorial is quite good). You can also consult the free online Python manual "How to Think Like a Computer Scientist" by Allen B. Downey available at http://greenteapress.com/thinkpython/.
For programming the Parallax Boe Bot robots, we will use the software system provided by Parallax. Software can be downloaded from http://www.parallax.com/tabid/441/Default.aspx, and documentation is available at http://www.parallax.com/tabid/440/Default.aspx.
Online Storage: You can use http://isecure.indstate.edu to store your files when you are switching between computers. You should have enough storage to store all of your files for this course. The site allows you to upload/download. You can also use your cs.indstate.edu login to store your course files on the CS server. If you are using a Mac or Linux computer, you can use the built in terminal to ssh and sftp into the CS server. If you are using Windows, you can download the putty software to ssh/sftp; this software is available from http://www.chiark.greenend.org.uk/~sgtatham/putty/.
Announcements regarding the course will be made both during class and via email to your @sycamores.indstate.edu email address. You should regularly check this email account or have it forwarded to an account that you check regularly. You can set the account to forward by logging into your indstate.edu email from Internet Explorer (the "light" version of the webmail client that opens up from Firefox or Chrome does not give the option to forward email).
This is an introduction to Artificial Intelligence. This is supposed to be a fun course, albeit one in which you will work hard. Artificial Intelligence has its roots in trying to create computer programs that can think like humans or perform tasks that humans can. In the sixty or so years of the field's existence, there have been many interesting ideas in trying to achieve these goals. Many of these ideas have involved clever programming tricks, analysis of the human mind, and/or use of mathematics. Although the ultimate goal of creating computer programs that are "as intelligent as humans" seems that it may still be in the distant future, the techniques discovered along the way have been very useful for solving many problems, and there has been some partial success.
In this course, we will look at some of the most interesting/important techniques that have been developed and problems that can be solved reasonably well. Here are a few examples:
And the list goes on and on. For more, you can start looking at the textbook for the course, or look at the wikipedia page: http://en.wikipedia.org/wiki/Artificial_intelligence .
We will choose three of these topics to use for moderately sized programming projects in the course. At this point, the most likely candidates are: (1) game-playing (everyone writes their own AI for a game such as checkers, and we play them all against each other - and against the instructor's), (2) learning/classification (SPAM/fraud detection, image recognition, letter recognition - like trying to "beat" the bot challenges on websites...), (3) robotics (taking simple little robots and having them navigate a maze or solve some other simple problems). Beyond the projects, we will explore many of the other interesting topics with lectures and homework assignments. Given the recent excitement over the Jeopardy! playing system Watson, I will also look for assignments/projects that are relevant to parts of that system. The ultimate goals of the course are to master some of the techniques that AI has to offer, get a glimpse of the future of AI, and have fun.
Grading, Assignments, and Expectations
The students of this course have the following responsibilities: read assigned pages of the book before lecture, attend lecture, complete homework assignments (generally "working problems" or writing simple programs), complete projects, and take exams. The final grade consists of:
Projects: 30% total. There will be three programming projects, each worth 10% of the total grade.
Homeworks: 30% total. There will be roughly 6 homework assignments throughout the semester, and each will be weighted equally. If you turn in an assignment late, I will grade it so you know how you did, but it will count as a 0. LATE HOMEWORKS WILL NOT BE ACCEPTED. NOTE: if you turn an assignment in more than one day early, I will look at it and give you feedback on any mistakes you might have - and if you resubmit before the due date I will grade the corrected version.
Presentation: Each student (potentially in pairs) will give a presentation/lecture to the class on a topic that is chosen in consultation with me. It could be a topic from the book, something from online, a paper from a journal/conference, ... For graduate students, the presentation will count as a homework assignment. For undergraduate students, the presentation will be pass/fail. We will talk about the presentations a bit later in the semester.
Exams: 30% total. There will be two exams, each worth 15% of the total grde.
Class Attendance/Participation: 10% total. Attendance will be taken at the beginning of each class. Half of your attendance/participation score will consist solely of whether you were present when attendance was taken each day - the total number of days present divided by the number of lectures in the semester. The other half of your attendance/participation grade will be assigned at the end of the semester based on how attentive you were in class throughout the semester.
The class attendance grade serves the purpose of giving you credit for coming to class. You benefit from coming to class by seeing me present the new material, getting to ask questions, interacting with your classmates, keeping up on what is going on in the course, etc.
The exams serve as benchmarks of your ability to relatively quickly solve problems related to the material. This helps me assign a grade, and also gives you motivation to pay attention and keep up with the assignments.
The homework assignments are supposed to help you really learn what we have talked about in class (and what you have read in the book) by solving problems yourself. You do not really know the material until you are able to solve problems.
The projects will be discussed further after the first few weeks of the semester. These give you practice writing larger pieces of software that do more interesting things than simple programs. Thus you will practice your programming skills in addition to applying the concepts from class.
Expectations. My expectation is that an average student will spend 6-12 hours OUTSIDE of class each week (that is in addition to class time) WORKING PRODUCTIVELY/EFFICIENTLY (not just starring at the computer) to complete their coursework for this class. Some students may spend less time than this, and some students may spend more.
Classroom conduct. You may not use cell phones, iPods/music players, etc. during class. You should be civil and respectful to both the instructor and your classmates, and you should arrive to class a few minutes before the scheduled lecture so you are ready for lecture to begin on time. You may use your laptop during class if you are using it to follow along with the programming examples that are being discussed. You may not check email, facebook, work on other courses, etc. during class.
Important Note. If you wait until the last minute to begin your assignments, I will not be available to answer questions if you have problems. Programming assignments are notorious in the sense that oftentimes most of the time completing the assignment occurs after you thought you had the problem solved. This is called debugging (and testing), and is typically most of the effort in completing a program. So you MUST start your assignments early. I suggest attempting the assignment the day it is given, or the day after, so that if you have a problem you can ask early. If you continue to have problems in trying to complete the assignment, you will have time to ask again. Working on programming assignments is much less stressful if you start early!
I make no promise ahead of time what the exact cutoff will be in terms of the number of points to achieve an A+, A, A-, etc. These will depend on how the course goes. I will use the guidelines below in assigning letter grades. After the first few weeks, I will include a "letter grade if the semester ended today" in your grades. You can keep track of how you are doing in the course with the grades on the blackboard site for this course.
The following is roughly what I would expect by the end of the semester to earn a particular grade.
A+/A Superior. You have a deep understanding of nearly all of the concepts - able to write correct programs and solve even tricky questions about the material. An A+/A student could likely even teach the course if they spent enough time in preparation!
A-/B+ Excellent. You have a deep understanding of many of the concepts but may have some gaps in your understanding. You can write correct programs but you sometimes have difficulty with tricky questions about the material. An A-/B+ student would likely do a fine job of using the material from the course in real world applications.
B/B- Good. You have basic understanding of most of the concepts but sometimes lack deep understanding. Some of your programs are correct, but others have errors; even your incorrect programs were at least on the right track and are somewhat functional. You are able to solve basic problems about the material but are often tripped up by tricky questions. A B/B- student would be able to use the material from this course in real world applications, but would have more difficult in doing so.
C+/C/C- Adequate. You have modest gaps in either your ability to solve problems or write programs, but you show at least basic abilities in both areas and "glimmers of more" at times. A C+/C/C- student has a sense of what the course is about by the end, but would have difficulty successfully applying the material in real world applications except for the most basic direct applications.
D+/D/D- Poor. You have shown some ability to solve problems and write programs, but often have programs that do not work or are unable to solve problems. You should have shown at least basic abilities in both areas, but I cannot see you being able to apply the material from this course in real world applications.
F Failing. For much of the material in the course, you do not even know the basic information or have not turned in assignments. You may not even have a sense for what the major topics in the course were, or you simply did not turn in enough of the required work to pass.
For each programming assignment, I will assign a grade based on correctness and style. The exact breakdown may vary slightly from one assignment to another. In general, 60-70% of the points for an assignment will be given based on whether it is correct. The remaining 30-40% will be given based on good programming style: (i) choosing variable and function names that are descriptive/appropriate, (ii) writing code that is easy to understand and efficient, (iii) including documentation at the top of each file about what is in that file and how to use it, (iv) including documentation with each function describing what the function does (including what should be input to the function and what the function outputs), (v) documentation throughout each function describing the flow of the program. For portions of the code that are given to you, you do not need to add documentation to those parts of the code; if I give you partially completed code, you are responsible only for documenting the code that you add.
The course has a blackboard site. Click here to go to blackboard. You should see CS 475 or 575 listed under your courses for the current term. The blackboard site is used only for giving you your grades. All course content, schedule, etc. is kept on the instructor's webpage (which you are currently viewing).
Please follow these guidelines to avoid problems with academic misconduct in this course:
Homeworks: You may discuss the homework assignments, but should solve them on your own. To make sure you are not violating this, if you discuss with someone, you should DESTROY any work or evidence of the discussion, go your separate ways, SPEND at least an hour doing something completely unrelated to the assignment, and then you should be able to RECREATE the program/solution on your own, then turn that in. If you cannot recreate the solution on your own, then it is not your work, and you should not turn it in.
Note on sources: if you use some other source, the web or whatever, you better cite it! Not doing so is plagiarism.
Exams: This should be clear - no cheating during exams. The exams will be closed-book, closed-notes, no computer, and no calculator.
Projects: You should not copy code from the internet or anywhere else. The project should be your own work. It will be fairly obvious to me if you do copy code from the internet, and the consequences will be at the least a 0 on the project.
If cheating is observed, you will at the least receive a 0 for the assignment, and I will file a Notification of Academic Integrity Violation Report with Student Judicial Programs, as required by the university's policy on Academic Integrity. A student who is caught cheating twice (whether in a single course or different courses) is likely to be brought before the All-University Court hearing panel, which can impose sanctions up to and including suspension/expulsion. See the Student Code of Conduct and Academic Integrity Resources for more information.
Please ask the instructor if you have doubts about what is considered cheating in this course.
If you have special needs for the classroom environment, homeworks, or quizzes, please inform the instructor during the first week of classes. If you have any such needs, you should go to the Student Academic Services Center to coordinate this. See Student Academic Services Center - Disabled Student Services for more information.