It is not my aim to surprise or shock you—but the simplest way I can summarize is to say that there are now in the world machines that can think, that can learn and that can create. Moreover, their ability to do these things is going to increase rapidly until — in a visible future — the range of problems they can handle will be coextensive with the range to which the human mind has been applied. — H. Simon, Models of Man: Social and Rational, 1957.
  1. Chapter 3
    1. Describe how to formulate problems as search problems (see Sections 3.1–3.2).

    We’ll skip classical search methods, which were addressed in CS 212. For a detailed review of the use of these algorithms for problem solving, see the Udacity AI materials (Lesson 2, “Problem Solving”, P. Norvig) linked from the policies page.

  2. Chapter 4
    1. Describe the following (see Section 4.1):
      1. Local Search
      2. Hill-Climbing Search
      3. Simulated Annealing
      4. Local Beam Search
    2. What “hills” does hill-climbing search?
    3. Define:
      1. Local Maximum
      2. Random Restarts
    4. Compare and contrast hill-climbing vs. simulated annealing vs. local beam search.

    You can skip Sections 4.1.4 unless you’re interested in Genetic Algorithms.

  3. Programming Tools

    1. MatPlotLib — Do first few sections: “General Concepts”–“Coding Styles”. For future work, you can then use the Gallery to learn how to do specific sorts of graphs.

    2. Seaborn — Read the beginning of the introductory notes to see what Seaborn is and how it related to MatPlotLib and work through the first example program. Note that to display the graph, you’ll need to import matplotlib.pyplot as plt and run plt.show().