CS 321: Decision Making in Artificial Intelligence

Table of Contents

Course overview

There are many situations where computer systems must make intelligent choices, from selecting actions in a game, to suggesting ways to distribute scarce resources for monitoring endangered species, to a search-and-rescue robot learning to interact with its environment. Artificial intelligence offers multiple frameworks for solving these problems. While popular media attention has often emphasized supervised machine learning, this course instead engages with a variety of other approaches in artificial intelligence, both established and cutting edge. These include intelligent search strategies, game playing approaches, constrained decision making, reinforcement learning from experience, logical deduction, and more.

Course information

Instructor: Dave Musicant
Email: dmusicant
Office: CMC 326 (x4369)
Office hours: check my web site
Grader: Carl Tankersley (tankersleyc)

Textbook

Artificial Intelligence: A Modern Approach, 4th Edition, 2020. This book is the best source for learning the material that we will be covering in the course. In the past I’ve experimented with using free alternatives, and many students who took CS 321 nonetheless sought out this textbook because they found the content to be so much better. You can rent it for the term digitally for $40.

I will be regularly assigning readings from the textbook, and using quizzes on Moodle to help keep you up to date with the reading.

It will be important that you use the 4th edition. The previous edition (the 3rd edition) was published in 2009, which means that it is 11 years older than the version that we’re using. That’s a long time in the world of AI, and there are a number of changes to the book that will be relevant.

Communication

We’ve got a variety of ways of communicating with each other.

  • In class! Bring general questions to class and I can answer for everyone.
  • Office hours. I will be holding office hours in person; there is a link on the Moodle site for times that I will be available.
  • I will use Slack for all general purpose announcements to the entire class. There will be a link for signing up in the first assignment. Likewise, any questions about the course should also be posted there. It’s a great way to get to see what each other are asking. Please pitch in and help each other out: if you know the answer to someone else’s question, please go ahead and answer it. If you wish, you can use the /anonymous post option to post a question anonymously so that other students of the class can’t see who it was. Please use this sparingly, though; conversation tends to drop in quality if too much of it is anonymous.
  • Frequency of communication: you should check the course Moodle site and Slack communication at least once a day. I’ll be checking Slack and my email, and responding to people three times a day: once early in the morning (likely before 7am CDT), once roughly in the middle of the day (sometime 11am-2pm), and once near the end of the working day (sometime 4pm-6pm). I’ll be less reliable on weekends. When engaging with course activities online, always use your Carleton Gmail/Google account rather than personal accounts.

Grading

Programming assignment grading

Each portion of a programming assignment will receive one of these grades.

  • 4: Exemplary work. All specified functionality is working correctly.
  • 3: Meets expectations. The core functionality of the assignment has been correctly completed, but one or more of the exemplary-level aspects may not be working correctly.
  • 2: Partially meets expectations. The assigned task has been partially completed to a level indicating some understanding of the concepts, but the core required functionality has not been completely achieved. It is clear that the core goal of the assignment is there and is on its way to being accomplished, though it may not be completely correct.
  • 1: Beginnings. The work is not complete enough to indicate that a baseline level of correctness has been achieved. This likely applies when the work has very large gaps in functionality or in implementation. Nonetheless, the work submitted demonstrates that real progress has been made towards solution of the problem.
  • 0: Not assessable. The work was not submitted, or shows a deep disconnect with what was assigned.

Analysis assignment grading

Similarly, each portion of an analysis assignment will receive one of these grades.

  • 4: Exemplary work. The submission is completely correct without omissions.
  • 3: Meets expectations. The question has generally been answered correctly. Some relevant details may be missing, or some details may be incorrect that are relatively inconsequential.
  • 2: Partially meets expectations. The submission has been partially completed to a level indicating some understanding of the concepts, but the essential main idea has not been addressed correctly.
  • 1: Beginnings. The work is not complete enough to indicate that a baseline level of correctness has been achieved. This likely applies when the work has very large gaps between the correct solution and what was submitted. Nonetheless, the work submitted demonstrates that real progress has been made towards solution of the problem.
  • 0: Not assessable. The work was not submitted, or shows a deep disconnect with what was assigned.

In-class worksheets

The worksheets that you’ll be doing in class will not be graded. That said, they are important for learning the material in the class, and they are fabulous preparation for the in-class exams.

Video Viewing Quizzes

The video quizzes are intended to be straightforward, and are intended to help keep you up to date in watching the videos. You’ll simply receive a total average grade for your quizzes at the end of the term.

In-class exams

The in-class exams will be timed exams that will be scaled to a traditional percentage, and their score will be averaged. They will be a mixture of conceptual questions that could appear as mini-essays, short answers, multiple choice, problem solving, or other possibilities.

Your aggregate grade

Individual assignments: 40%
Team assignments: 15%
Exams: 35%
Video viewing quizzes: 10%

Assignments will be assigned frequently throughout the course; there will typically be one or two assignments due each week. The exams will occur on Fridays, and there will be 3 of them. Dates will appear on the Moodle site. The final project will be part of the assignments grade, and will count as approximately two assignments.

The quiz average will be maintained on a traditional 100 point scale. Getting every quiz question correct means you’ll get a 100; answering no questions means that you will get a 0.

The homework assignments (programming and analysis) will be scaled to a scale where a 4 maps to 95, a 0 maps to a 55, and everything else in between maps proportionately. Some of the assignments may break down more cleanly into separate gradeable pieces than others, so the grades maybe be weighted so that each entire assignment counts for roughly the same amount.

The exams may have variations in the number of points, but they will each be converted to a 100 point scale and then averaged together. That said, any exam which is submitted will receive a score of 50 as a minimum. This means you have an opportunity to somewhat recover if a particular exam goes less well than you hope.

Based on the above weighted average, here are the thresholds that will be used for each grade.

grade threshold
D- 60%
D 63%
D+ 67%
C- 70%
C 73%
C+ 77%
B- 80%
B 83%
B+ 87%
A- 90%
A 93%

There is one important special exception to the above, however: to achieve a C- in the class, you must achieve an average of at least C- (i.e., 70%) on the individual course assignments. If you reach this threshold, then the grade will be calculated via the technique described above. However, if your individual assignment average is below 70%, you will not receive a grade of C- or better.

Late policy

Quizzes

The videos are designed to serve as an introduction to the content that we’ll be doing in class that day. This blog posting by Robert Talbert does a pretty good job at explaining the idea. The goal is for students to get familiar with the basic ideas of what we’re doing, where interaction with me is less essential. We then maximize our time together focusing on deeper exploration. Therefore, it is important that you watch the videos before class. The quizzes, which are associated with the videos, are a way of helping to encourage you to keep up.

The system by which Moodle handles due dates for video quizzes is a little strange. It’s manageable, but the terminology is a little different from how we regularly talk about due dates.

The deadline for each quiz in Moodle will be referred to the expected completion date and time. This is a Moodle term, but for our purposes, the expected completion date and time is when it is due. You will incur late penalties if you submit a quiz after the expected completion date.

You have a quota of 7 late quiz days that you may use throughout the term if you like. This means that you can submit 7 quizzes one day late each, or a single quiz 7 days late. Once your late days are used up, you will no longer be able to submit quizzes past the deadline, which is the expected completion date. Moodle does not have any automatic way of keeping track of these late quiz days, but we will review your quiz submissions on a regular basis and have a somewhat out-of-date inventory in Moodle. Once your 7 late quiz days are used up, any quizzes you submit late will receive a grade of 0.

Assignments

Moodle uses more conventional terminology for assignments. Every assignment will have two deadlines associated with it: the due date and the cut-off date. The due date is the actual due date. You will incur late penalties if you submit an assignment after the due date. The cut-off date is the last possible date that you can submit the assignment, under any circumstances, regardless of late days or extensions. Moodle will prevent you from submitting after the cut-off date.

You have a quota of 7 late assignment days that you may use throughout the term if you like. Once your assignment late days are used up, you will no longer be able to submit assignments past the due date. Moodle does not have any automatic way of keeping track of these late assignment days, but we will review your assignment submissions on a regular basis and keep a somewhat out-of-date inventory in Moodle. Once your 7 assignment late days are used up, we will configure your assignments so that the due date and the cut-off date are on the same day.

Absent from class

There are a variety of reasons for which you may be absent from class. You might have a job interview, you might have a personal reason, or you might be quarantined or isolated due to COVID. To catch up on the material you missed, here are your options. Take advantage of all of them!

  • The pre-class video content will be available to all via Moodle.
  • The content that I will be lecturing on in class, and answering questions about, is very similar to what is in our textbook. I will post to Moodle the sections in the textbook that we will have covered in class. You can read those sections, and then follow up with questions either in-person with me or in Slack.
  • You should check with someone else in the class to get a personal description of what we covered and what we missed. Everyone in class will have a group that they are in for in-class worksheets; you can check in with one or more of those people in particular. If you can get ahold of one or more of your groupmates before class, you can give them an extra heads-up that you’ll be looking for info on how class went.
  • I will be posting the worksheets to Moodle, so you can find them there as well.

I will not be recording the live portions of classes, so that people can feel free to ask questions and engage interactively in-person.

Working together

  • Each programming assignment will either be a “team” problem assignment or an “individual” assignment.
  • When working on team problems, you and your partner should engage in the pair programming model, that is both of you should be sitting at a single machine, side by side. One of you is “driving,” i.e. actually using the keyboard and mouse. The other is actively engaged following along, stopping bugs, and providing ideas. You should make sure that over the course of an assignment that you spend roughly the same amount of time each “driving.” I will also ask you to turn in a form rating the work that your partner does.
  • If you are determined to work alone on the team assignments, that’s fine. I will expect, however, that you do work of the same amount and quality as those students with partners. You can change whether or not you work alone each “cycle” that I assign new partners.
  • I will also be assigning analysis work. On these and on the “individual” programming problems you may collaborate with others in the class for ideas, but all students should turn in individual assignments for these. You should be writing up or programming your own solutions, and not sharing printouts with each other. You may discuss ideas with other students, but no paper or electronic record of your conversations should exist when the conversation is done.

Plagiarism and appropriate use of other materials in CS 321

Collaborating is good. Students are encouraged to collaborate on ideas and program design. Learning is often a social effort. However, it is important that students don’t slip into plagiarizing the work of others, or inappropriate use of work by others, which is explained below.

Plagiarism is when someone submits work that isn’t theirs, but that person takes credit for doing so.

Inappropriate use of work by others is when someone submits work by others that is correctly cited, but the quantity of work taken is inappropriate because it defeats the entire purpose of the assignment.

Here are two quick examples:

  • If someone takes a program that they find online and submits it without citing it, that’s plagiarism. This is because by not citing it, that student is implicitly taking credit for it.
  • If someone takes a program that they find online that accomplishes the tasks laid out by an assignment, and they submit it with an appropriate citation, it is inappropriate use of work by others. This is because the student didn’t actually do the goals specified by the assignment. But because it was correctly cited, it isn’t plagiarism.

Inappropriate use of work by others prevents students from learning and achieving the goals of the course. It is generally acceptable to include small amounts of materials found elsewhere when cited correctly, and there’s some more specific information about that below. But the general principle is that the wholesale use of materials found elsewhere and submitted for assignments is not permitted, and results in an assignment receiving a low grade.

Plagiarism is problematic for all of the reasons that inappropriate work by others is, but it is also unethical, illegal, and a violation of college policy. I am compelled by Carleton policy to submit plagiarism cases that I find to the Academic Standing Committee. The academic penalty for a first offense is determined jointly between me and the Academic Standing Committee, but likely results in at least a grade of 0 for the assignment. Furthermore, the college retains a record of the incident, and may respond with suspension or other sanctions on repeat occurrences.

In short, inappropriate use of work is considered as a poor submission, and is graded accordingly. Plagiarism is a deeper infraction that results in college-level disciplinary action. Students shouldn’t engage in either, but plagiarism is considerably worse.

The good news is that avoiding plagiarism is very easy. If you use work that isn’t yours, CITE IT. If you turn in an entire assignment with code that you got from the internet, and you cite it, it isn’t plagiarism.

Can you safely use any uncited materials at all? What about a single word, or examples from class?

Most importantly: if you’re unsure, just ask me. I’m happy to help!

Your default view should be that if you use code or materials from elsewhere, you should cite it.

One exception is that you may use any code or materials that I supply without citation. It is understood that any code I write or provide for this class is done so with the intention that you can use it and/or modify it. Likewise, any concepts, definitions, and theory I supply are intended as a starting point for learning. This includes starter code that I give you for the assignments, but also any code or other materials that I supply in lectures, class worksheets, or the like.

If you find materials anywhere else (StackOverflow is the classic example, but there are many such places), you must cite it unless it is exceedingly short. Exceedingly short means perhaps less than three lines of code. Regardless, you should not be looking for code that solves the actual goals of the assignment, as this would be inappropriate use of work by others.

How do you cite material you find elsewhere?

Citing for purposes of this course is easy. If you find it online, add a comment to the code or materials with the URL where you found it. If you find it in a book, put in a comment with the title and author of the book. If you get it from someone else (a lab assistant, friend, etc), put the name of the person in the comment. We’re not writing a research paper, so you don’t need to spend time with carefully formatted bibliography styles. The key point that matters is simply making clear what the source of the material is.

What if you modify the content that you find?

If you are using an idea based on code you find online, you still must cite it. Taking code that you find online and modifying the variable names, for example, is still plagiarism if you don’t cite it.

How does this apply to things other than code?

If you submit an idea from somewhere else, you must cite it. This applies for example to definitions, explanations, and conclusions that you find elsewhere, either online or from other people.

Assuming you cite everything correctly, how much is inappropriate use of work by others?

Again, if you have any concerns about this, just ask me and I’m happy to clarify in any particular case.

The answer to this varies based on the assignment, and hinges on what the goals of the assignment are. Anything I say here may be superseded by a particular assignment, but here is the philosophy.

The goal of an assignment is for you to accomplish the tasks specified. Of course, you may get help from others — either people, or reference sources — to help understand the challenges within. However, you should be assembling these pieces yourself in your own way to accomplish the tasks at hand. If you submit correctly cited work by others that accomplishes the assignment as a whole, or a significant fraction of it, then you are not accomplishing the goals of the assignment, and that is inappropriate work by others. Ask, and I’m always happy to clarify.