605.645.81 - Artificial Intelligence

Computer Science
Spring 2024


This is a foundational course in Artificial Intelligence. Although we hear a lot about machine learning, artificial intelligence is a much broader field with many different aspects. In this course, we focus on three of those aspects: reasoning, optimization, and pattern recognition. Traditionally, the first was covered under “Symbolic AI” or “Good Old Fashioned AI” and the latter two were covered under “Numeric AI” (or more specifically, “Connectionist AI” or “Machine Learning”). However, despite the many successes of machine learning algorithms, practitioners are increasingly realizing that complicated AI systems need algorithms from all three aspects. This approach falls under the ironic heading “Hybrid AI”. In this course, the foundational algorithms of AI are presented in an integrated fashion emphasizing Hybrid AI. The topics covered include state space search, local search, example based learning, model evaluation, adversarial search, constraint satisfaction problems, logic and reasoning, expert systems, rule based ML, Bayesian networks, planning, reinforcement learning, regression, logistic regression, and artificial neural networks (multi-layer perceptrons). The assignments weigh conceptual (assessments) and practical (implementations) understanding equally.


Profile photo of Stephyn Butcher.

Stephyn Butcher


Course Structure

The course materials are divided into modules which can be accessed by clicking Modules on the course menu in Canvas. A module will have several sections including the overview, content, readings, discussions, and assignments. You are encouraged to preview all sections of the module before starting. Modules run for a period of seven (7) days. Details can be found in the Course Outline. You should regularly check the Calendar and Announcements for assignment due dates.

Course Topics

Course Goals

The course of this course are:

  1. To understand and implement the foundational algorithms in Artificial Intelligence.
  2. To be able to apply these artificial intelligence algorithms to various subproblems in reasoning, optimization, and pattern recognition so as to solve problems in “Hybrid AI”.
  3. To understand the moral and ethical issues surrounding Artificial Intelligence.

Course Learning Outcomes (CLOs)


Russell, S. & Norvig, P. (2020). Artificial intelligence: A modern approach (4th ed.) Pearson.

ISBN-10: 013461097

ISBN-13: 978-0134610997

Textbook information for this course is available online through the appropriate bookstore website: For online courses, search the MBS website.

Note that this text is a great resource for artificial intelligence but it’s not necessarily the best textbook. We will be going through the material in a non-standard order to more fully develop a picture of “Hybrid AI”.

Here is a link to the directions for setting up your Python environment:


Required Software

Here is a link to the directions for setting up your Python environment:


Student Coursework Requirements

Course Participation

In an online course, participation comes mainly in the form of participation on Canvas and any other platforms that may be adopted and through email.

You are expected to respond to email. Please make sure that your email in SIS is current and that it is either an email you check every day or it is forwarded to an email account that you check every day.

You should check Canvas every day for Announcements, Posts, etc., that may have a bearing on assignments.

Readings & Lectures

Each student is responsible for carefully reading/watching of all assigned material. The majority of readings are from the course text. Additional reading may be assigned to supplement text readings. Each student is also responsible for all posts in the forums contained in the Course Discussions section, whether by the instructor or other students.


Every week there is a self-check assignment. You should download it from the appropriate Course Module section before you start your reading the text/watching the video lectures.

The main goal of the Self-Check is to prepare you for the Programming Assignment.

The Self-Check is due on Thursday by Midnight, Eastern Time and you can post your submission to Canvas. Your submission should be in PDF format. You must also post your PDF to your Discussion Group (as explained next). You are on the honor system not to peak at previously submitted assignments.

Group Discussions

Group discussions revolve around students helping students with their Self Checks.

Part 1 (before Thursday End of Day)

Post any questions you have about the Self Check to your group discussion. If anyone posts a question, you must respond (everyone should weigh in). Do not give away the answer but instead try to clarify.

Part 2 (starting Friday Morning)

You will have posted your Self Check PDF to your Discussion Group the previous night. You must review at least two other Self Checks and post comments. Also start with Self Checks that have the fewest responses so far.

Programming Assignments

Every week there will be a programming assignment. The Self-Check will have walked you through the algorithm you're about to implement.

The assignment will consist of a notebook (and possibly supporting files). You will only ever need to submit the notebook (do not submit the supporting files).

Programming assignments are to be entirely your own work.

Programming Assignments are due on Sundays.

Look for further instructions for Programming Assignments on Canvas in the General Discussion forum. There are very specific requirements. Failure to follow them will result in an “F” for the assignment.


Modern pedagogy is based on a number of empirical results. First, that testing is the only way to remember anything. You should constantly be testing yourself about what you just read, just watched. Second, that cramming is nearly useless for long term retention. As a result, there is no Mid term or Final in the course.

Instead, there is a 15 question Assessment every week on the materials of the Module. You will have 30 minutes. The Assessment is timed, questions are randomized, and you cannot go back to previous questions.

Grading Policy

Assignments are due according to the dates posted in your Canvas course site or Course Outline. You may check these due dates in the Course Calendar or the Assignments in the corresponding modules. I will try to post grades one week after assignment due dates but no later than two weeks.

It’s worth noting that the due date is not the do date. You can and should start much earlier in the week on your assignments.

Late Policy

I do not accept late submissions for a grade without prior consultation, except in the case of extreme emergencies (the birth of a child, incapacitating illness, etc). The following are not legitimate reasons: work, taking other classes, weddings, family reunions, holidays, anniversaries, vacations, etc. However, emergencies of all stripes to arise. The key here is prior consultation.

The main issue is that lateness on Module 5’s programming assignment snowballs into Module 6’s programming assignment. To fall behind may mean never being able to catch up.


We are still in the grips of a pandemic and the situation is fluid. Exceptions will be granted for documented COVID-19 illness. This requirement is twofold. First, I really did have students last year say “I think I have COVID”…some twice. Second, if you really think you have COVID, you need to get tested and quarantine.

We generally do not directly grade spelling and grammar. However, egregious violations of the rules of the English language will be noted without comment. Consistently poor performance in either spelling or grammar is taken as an indication of poor written communication ability that may detract from your grade.

Grading Standard

“A” – Excellent. You completed the assignment in a timely manner, demonstrating a thorough understanding of the technique, tool or concept and conducted an excellent exploration of its use. If it is a discussion, your post was substantive, did not just quote other materials, and contributed to the on-going discussion. You went above what was required, asked for or expected.

“B” – Acceptable. You completed the assignment in a timely manner, you did exactly what was requested, demonstrating a sufficient understanding of the technique, tool, or concept. There may have been minor deficiencies. If it was a discussion pot, the post contributed to the discussion but it may have been a reference to other materials or perhaps even slightly off topic. You may have done more too much in the hopes that something was correct.

“C”, “D” – Unacceptable. You either did not complete the assignment, it was not timely or you did what was minimally required. There are significant areas of confusion. A lack of exploration or curiosity about the concept, tool or technique. If it was a discussion post, it may have been off topic.

“F” - Oops. You did not submit the assignment on-time or post on-time or no bona fide effort was evident.

Basically the only way you can get a 0 is by not doing something on-time or at all or failing to follow the programming requirements (see below).

I cannot stress this enough, merely working hard is not grounds for an A. The being said, if you put forth a bona fide effort, you’re likely to do better than a C. I once worked very hard for a C in the Advanced Microeconomics (actually, I worked too hard and did not ask enough questions!). Many students work hard instead of working smart. Ask questions.

Please go back and read those descriptions again. An “A” indicates excellence and a “B” indicates “meets requirements”. Additionally, there is the emphasis on every week.

Grading System

After decades of teaching, it’s not clear to me, even now, what’s worth 78 points and what’s worth 82 points when it comes to graduate work. The standard is very different than undergraduate studies and especially secondary education. If this is your first foray for graduate school, it’s worth bearing this in mind.

As a result, this class does not use the traditional 100 point scale, I do not weight things. There is no point gaming, percents or averages. Instead I use just Pass/Fail or A-F for all assignments. And the final grade is based on the majority of your grade for each of the different categories of work: 

Class Participation

Checking Teams, Discussion Participation


14 - Spring/Fall (12, Summer)

Programming Assignments

14 - Spring/Fall (12, Summer)


14 - Spring/Fall (13, Summer)


For an A, you must at least get:


13 of 14 (12 of 12, Summer) Submissions with "Complete"

Programming Assignments

12 of 14 (10 of 12, Summer) with a score of “A”, with the rest "C" or higher.


12 of 14 (10 of 13, Summer) with a score of “A”, with the rest "C" or higher.

Class Participation


For a B, you must at least get:


13 of 14 (12 of 12, Summer) Submissions with "Complete"

Programming Assignments

12 of 14 (10 of 12, Summer) with a score of “B” or higher, with the rest "C" or higher.)


12 of 14 (10 of 12, Summer) with a score of “B” or higher, with the rest "C" or higher.

Class Participation

“B” or better

* although it is not advised, you may miss one self check and or one assessment (get a "0") and still get an "A" or "B".

Basically, an “A” is for “A” work across the board, every week whereas a “B” may be a mixture of “A” and “B” work. Anything below this standard will be a “C” or lower. The mixture of A and B work may lead to "plusses and minuses" in final grades (A- or B+, for example).

Programming Assignments (0-10 "points")

Programming assignments are generally graded using the following criteria:

1. Does it conform to the course programming requirements?
2. Does it provide the requested output correctly?

AI algorithms can be difficult to implement, especially Symbolic AI algorithms. Generally speaking, a completely correct submission is an A and it goes down from there. Minor deficiencies are a B, major shortcomings and partial implementations are in C and D territory. Failure to conform to the course programming requirements is an F as is a failure to submit a "good faith effort" assignment. Points here are more of an index into the effort required for future assignments.


So a B with 6 points is an indication that you were not as satisfactory as you could have been but it's still a B (pluses and minuses are not counted in the tally above).

This is not a programming course. I will not and do not debug your assignments (either before submission or as part of grading). I will make my best effort to look for any obvious issues but I cannot fix your assignments. I will, however, answer all questions, prior to submission, about the algorithm. I often given hints about implementation strategies.

Assessments (0-15 "points")

Canvas is a bit squirrelly when it comes to presenting grades for assessments. Here is how points work out to letter grades for Assessments:


Academic Policies

Deadlines for Adding, Dropping and Withdrawing from Courses

Students may add a course up to one week after the start of the term for that particular course. Students may drop courses according to the drop deadlines outlined in the EP academic calendar (https://ep.jhu.edu/student-services/academic-calendar/). Between the 6th week of the class and prior to the final withdrawal deadline, a student may withdraw from a course with a W on their academic record. A record of the course will remain on the academic record with a W appearing in the grade column to indicate that the student registered and withdrew from the course.

Academic Misconduct Policy

All students are required to read, know, and comply with the Johns Hopkins University Krieger School of Arts and Sciences (KSAS) / Whiting School of Engineering (WSE) Procedures for Handling Allegations of Misconduct by Full-Time and Part-Time Graduate Students.

This policy prohibits academic misconduct, including but not limited to the following: cheating or facilitating cheating; plagiarism; reuse of assignments; unauthorized collaboration; alteration of graded assignments; and unfair competition. Course materials (old assignments, texts, or examinations, etc.) should not be shared unless authorized by the course instructor. Any questions related to this policy should be directed to EP’s academic integrity officer at ep-academic-integrity@jhu.edu.

Students with Disabilities - Accommodations and Accessibility

Johns Hopkins University values diversity and inclusion. We are committed to providing welcoming, equitable, and accessible educational experiences for all students. Students with disabilities (including those with psychological conditions, medical conditions and temporary disabilities) can request accommodations for this course by providing an Accommodation Letter issued by Student Disability Services (SDS). Please request accommodations for this course as early as possible to provide time for effective communication and arrangements.

For further information or to start the process of requesting accommodations, please contact Student Disability Services at Engineering for Professionals, ep-disability-svcs@jhu.edu.

Student Conduct Code

The fundamental purpose of the JHU regulation of student conduct is to promote and to protect the health, safety, welfare, property, and rights of all members of the University community as well as to promote the orderly operation of the University and to safeguard its property and facilities. As members of the University community, students accept certain responsibilities which support the educational mission and create an environment in which all students are afforded the same opportunity to succeed academically. 

For a full description of the code please visit the following website: https://studentaffairs.jhu.edu/policies-guidelines/student-code/

Classroom Climate

JHU is committed to creating a classroom environment that values the diversity of experiences and perspectives that all students bring. Everyone has the right to be treated with dignity and respect. Fostering an inclusive climate is important. Research and experience show that students who interact with peers who are different from themselves learn new things and experience tangible educational outcomes. At no time in this learning process should someone be singled out or treated unequally on the basis of any seen or unseen part of their identity. 
If you have concerns in this course about harassment, discrimination, or any unequal treatment, or if you seek accommodations or resources, please reach out to the course instructor directly. Reporting will never impact your course grade. You may also share concerns with your program chair, the Assistant Dean for Diversity and Inclusion, or the Office of Institutional Equity. In handling reports, people will protect your privacy as much as possible, but faculty and staff are required to officially report information for some cases (e.g. sexual harassment).

Course Auditing

When a student enrolls in an EP course with “audit” status, the student must reach an understanding with the instructor as to what is required to earn the “audit.” If the student does not meet those expectations, the instructor must notify the EP Registration Team [EP-Registration@exchange.johnshopkins.edu] in order for the student to be retroactively dropped or withdrawn from the course (depending on when the "audit" was requested and in accordance with EP registration deadlines). All lecture content will remain accessible to auditing students, but access to all other course material is left to the discretion of the instructor.