Assignments and examples for the course in CS 5/7320 Artificial Intelligence taught at the Computer Science Department at SMU by Michael Hahsler. Slides and more information for students taking the course can be found on SMU's Canvas.
The code examples follow the textbook Artificial Intelligence: A Modern Approach (AIMA) by Russell and Norvig. The code in this repository is intended to be simple to focus more on the basic AI concepts and less on the use of advanced implementation techniques (e.g., object-oriented design). More complex code examples accompanying the textbook can be found at the GitHub repository aimacode.
Chapter | Slides | Code |
---|---|---|
1: Introduction to AI | Slides | - |
2: Intelligent Agents | Slides | Code |
3: Solving Problems by Search | Slides | Code |
4.1-2: Search in Complex Environments: Local Search | Slides | Code |
4.3-5: Search in Complex Environments: Search with Uncertainty | Slides | Code |
5: Adversarial Search and Games | Slides | Code |
6: Constraint Satisfaction Problem | Slides | Code |
7-9: Logical Agents | Slides | - |
12: Quantifying Uncertainty | Slides | Code |
13: Probabilistic Reasoning | Slides | Code |
16: Making Simple Decision | Slides | - |
17: Making Complex Decision | - | Code |
19: Learning from Examples (Machine Learning) | Slides | Code |
You can experiment with the code online without installation using Google CoLab.
To work on assignments, you can use one of several environments:
- Use the online service Google CoLab. No additional installations are necessary.
- Install Docker and
use a prepared JupyterLab on Ubuntu image.
Execute
docker run -p 8888:8888 -e JUPYTER_ENABLE_LAB=yes jupyter/datascience-notebook
to download and create a container that runs JupyterLab and bookmark the link (including the login token) that you get during installation. Details and configuration options can be found on the Jupyter Docker stack GitHub page) From now on, usedocker ps -a
to list containers and their container id,docker stop <container id>
anddocker start <container id>
to stop and start the container (do not userun
again because it will create a new empty container). - Install Python, JupyterLab and all needed packages yourself. You can also use Visual Studio Code as a nice editor.
If you are not familiar with Python, then you should work through one of the many Python tutorials (e.g., this tutorial) to learn the basics about Python and the packages numpy
and pandas
. Some code examples that help with the assignments are available here.
How to use Jupyter notebooks is covered in many online tutorials like the Jupyer notebook tutorial.
You can fork this repository to work on your solutions with version control. The assignments are improved frequently, so always sync your fork before you start to work on a new assignment. Here is how to update your repository with my changes:
git fetch upstream
git checkout master
git merge upstream/master
git push
Your assignment notebooks needs to be a complete project reports with
- documentation (including your design choices),
- code (with comments for difficult to unserstand sections) and
- results (e.g., tables with simulation results) with a short discussion of what they mean.
Use the provided notebook cells and insert additional code and markdown cells as needed.
All code and documents in this repository are provided under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License.