Syllabus for

Heuristic Programming &

Artificial Intelligence

COSC 461/561

(MW 10:00-11:50, PH503)

Instructor: Matt Evett
Dept. Computer Science; room 512E Pray-Harrold
Tel: 734-487-1227; e-mail: mevett@emich.edu
http://canvas.emich.edu

Office Hours: M/W 12:00-1:00, T 11:00-3:00
You may drop by at times other than office hours, but in that case I cannot guarantee that I'll be able to see you.  Please feel free to e-mail or phone to make an appointment.

Prerequisite: Senior-level programming course.

Textbook: Stuart Russell and Peter Norvig, Artificial Intelligence, a Modern Approach, 3e, Pearson Education, 2015.

Course Summary: The course shall provide students with knowledge of the rudiments of the main subfields in the study of artificial intelligence. The course outline will roughly follow Luger's book, but we will spend more time in some areas than does the book, and less in others.

  1. The History of AI
  2. Agency
  3. Search (path planning, graph search, heuristic search [A*], Minimax, monotonicity, acceptability)
  4. Game playing
  5. Representation via logic--first order logic, predicate logic, inferencing, backward-chaining
  6. Planning
  7. Uncertainty & probability
  8. Learning, neural networks & evolutionary computation
  • The course is project oriented, with programming assignments spread throughout the semester.
  • Course Calendar:

    Due dates for projects are underlined . Exam dates are in bold. Be aware that due dates sometimes slip.  You are responsible for monitoring the Canvas course shell for the latest deadlines.  In addition, programming assignments (particularly the later ones) may be altered to accomodate the interests of the class as the semester progresses.
     
    Date Text Projects due
    9/5
    Ch 1  History, What is AI?  
    9/10, 12 Ch 2 Agency
    9/17, 19 Ch 3 Heuristic search  
    9/24, 26 Ch 4.1, 4.2  Local Search Search 1
    10/1, 3 Ch 5 Adversarial Search (Game Playing)  
    10/8, 10
    Ch 7 Reasoning with Propositional Logic Checkers
    10/15, 17 Ch 8.1-3 (Predicate Logic) Midterm Exam
    10/22, 24
    Ch 9 Reasoning with Predicate Logic
    10/29, 31 Ch 10 Classic Planning, STRIPS  
    11/5, 7 Handouts: AI in Computer Games Planning Project
    11/12, 14 Ch 18  Learning from Examples, Decision Trees  
    11/19, Thanksgiving break
    Ch 18.7 Neural Networks  
    11/26, 28  Handouts: Deep Learning, Evolutionary Computation Machine Learning
    12/3, 5   Genetic Algorithms and Programming

    12/10   Review EC Project
    12/12, 9:30-11:00
    Final Exam

     

    Grading Policy:

    The final course grade will be a weighted average of the grades received in each of the following categories, as specified: Small projects & homeworks 15%, Programs 35%, Midterm exam 20%, Final exam 30%.

    Students enrolled in COSC561 will be required to implement more complicated versions of the programming projects and assignments. In addition, exams will be graded on two separate curves: one for 461 and one for 561.

    Tardiness Policy: Programming and other homework assignments will be due at the beginning of class. After that, assignments will be accepted through the start of the next scheduled class, but will suffer a full grade penalty. E.g., if a late programming assignment is worthy of an 'A', I will mark it a 'B'. Assignments more than one class late will not be accepted, and will receive a grade of 'F'.

    Attendance Policy: We're all grown-ups, when and whether you attend class is up to you. However, missed assignments and exams shall only be excused by a doctor's written note, verifying that the student was medically indisposed to attend class that day.

    Grading of Programs: Grading of programming assignments will reflect three factors, weighted as shown.

    1. (80%) Correctness -- does the program run correctly?
    2. (10%) Style -- does the code adhere to class documentation standards? Is the code indented properly? Are the variable names mneumonic? How well has the student followed the basic formatting characteristics for the language?
    3. (10%) Design -- is the program adequately decomposed (i.e., are the functions and procedures small enough to be comprehensible)? Are the class and structure definitions well chosen? How well has the student taken advantage of the language's capabilities?

    Announcements and the Web Page:

    Students should view the Canvas course shell regularly for announcements regarding programming assignments, readings, etc.  Canvas is the official method for promulgation of information about the course, including changes to assignments and due dates.

    Course Accessibility and Disability Statement

    It is my goal that this class be an accessible and welcoming experience for all students, including those with disabilities that may impact their learning in this class. If anyone believes they may have trouble participating or effectively demonstrating learning in this course, please meet with me (with or without a Disability Resource Center (DRC) accommodation letter) to discuss reasonable options or adjustments. During our discussion, I may suggest the possibility/necessity of your contacting the DRC (240 Student Center; 734-487-2470; swd_office@emich.edu) to talk about academic accommodations. You are welcome to talk to me at any point in the semester about such issues, but it is always best if we can talk at least one week prior to the need for any modifications.

    Academic Irregularities:

    Students are required to attend to the University policy on academic dishonesty outlined in Section X (Special Disciplinary Provisions Governing Acts of Academic Dishonesty) of EMU's Student Conduct Code (see the full policy at http://catalog.emich.edu/content.php?catoid=3&navoid=259#9j). Academic Dishonesty is defined in Section V of the Student Conduct Code and Judicial Structure of the EMU Board Policy Manual (http://www.emich.edu/policies/policy.php?id=124&term=dishonesty.) In addition, unless explicitly allowed by me, collaboration among students in solving programming and homework assignments is forbidden. If I receive programs or homework assignments that are substantially equivalent, or which are not the original work of the student submitting the material, I will not hesitate to punish all involved parties to the fullest extent, up to and including assignment of a failing grade for the course, and referral to the Office of Judicial Student Services for possible punitive action at the University level, which may include expulsion from the University. In addition, the University and the Computer Science Department maintain policies regarding proper behavior on its computer systems. Failure to adhere to these policies can result in loss of computer privileges, and possible legal action.