Lab 1: Controlling a robot in a maze
Due Sunday, Feb. 4th by 11:59 pm

A robot in a maze. The maze is rectangular in shape with the robot in the lower left corner.  The goal is for the robot to find a light source in the right corner.

Introduction

As we discussed in class, an agent is an entity that perceives and acts within an environment. We defined artificial intelligence as the creation and study of agents that behave intelligently. In this lab you will learn how to control a simulated robot (the agent) to traverse through a maze to find a goal marked by a light source.

If you took cs35, you used both breadth-first search and depth-first search to solve various maze problems where the environment was divided into a grid and the agent knew its current (x, y) location within that grid (as in the example shown below).

grid-based maze
For this lab, however, the agent will only be able to perceive the maze environment via its sensors and will not know its global location within the maze, so you'll need to use a different strategy.

The objectives of this lab are to:

Starting point code

The process for this week will be very similar to last week; once again you'll be working individually, and you should have a git repo all ready to go. Clone it the same way we did the previous lab:

    $ cd cs63
    $ git clone git@github.swarthmore.edu:cs63-s24/lab1-USERNAME.git
  

The starting point code consists of two jupyter notebooks (which have the extension .ipynb).

Using jupyter lab

As a reminder, you can use last week's lab page as a guide for how to activate the CS63 Python environment and launch Jupyter Lab to open the notebooks in your git repo.

You can also use last week's notebook as a reference for Python syntax, reminders about how Jupyter works, etc.

Get started

You should begin with the notebook called GettingStarted.ipynb. Once you complete the exercises there, you can then move on to the notebook called Maze.ipynb. All of the lab instructions are provided within the notebooks themselves.

Submitting your code

To submit your code, use git to add, commit, and push the files that you modified.