Professor of Computer Science
His main interests are artificial intelligence and the connections between cognition, computation, and evolution. He is also interested in the use of technology in music and other arts.
His recent research includes projects on the development of new genetic programming techniques, the use of artificial intelligence technologies in the study of quantum computation, the interdisciplinary study of human and machine cognition, and the development of technologies to support inquiry-based education.
Professor Spector is also an active editor, reviewer, and organizer for scientific journals and conferences. He recently received the highest honor bestowed by the National Science Foundation for excellence in both teaching and research, the NSF Director's Award for Distinguished Teaching Scholars. He has held the College's MacArthur Chair and has served as the dean of the School of Cognitive Science and as the elected faculty member of Hampshire's board of trustees.
Artificial Intelligence is a branch of computer science concerned with the development of computer systems that "think." In this course we will explore the core ideas of artificial intelligence through readings, presentations, discussions, and hands-on programming activities. A range of practical artificial intelligence techniques will be covered, and students will complete programming projects to demonstrate engagement with the themes of the course. Prerequisite: One programming course (in any language).
This course is an inquiry-based introduction to programming and computational concepts for students intending to concentrate in cognitive science, natural science, or computer science. Students will learn to write programs for data manipulation and scientific modeling in a general purpose programming language, and they will also have the opportunity to work in special-purpose science programming environments. Several of the core concepts of computer science that underlie computational approaches across the sciences will be introduced. No previous experience with programming is required. Prerequisite: One course in cognitive or natural science.
Computers are commonly (and inconsistently) regarded as both omnipotent and as "stupid machines." In this course we will explore the real limits of computation from philosophical, logical, mathematical and public-policy perspectives. We begin with a discussion of the possibility of "artificial intelligence" (AI), covering the claims that have been made by AI scientists and the critiques of such claims that have arisen from the philosophical community. We then focus on the fundamental logic and mathematics of computation, including techniques for proving that certain problems are "intractable" or "unsolvable." In the third part of the course we turn to social and political questions on which an enlightened view of the limits of computation can have an impact. Students will be evaluated through a combination of short papers and problem sets, along with a final project.
This course is an introduction to computer science and programming framed by the question, "Is it possible for a computer to be creative?" The core areas of computer science will be introduced, including algorithms, complexity, computability, programming languages, data structures, systems, and artificial intelligence, with an eye toward the insights that they can provide about issues of computational creativity. Students will complete several programming projects to demonstrate developing technical skills and engagement with the themes of the course. No previous experience with computers or with programming is required.
Genetic programming is a computational technique that harnesses the mechanisms of natural evolution -- including genetic recombination, mutation, and natural selection -- to synthesize computer programs automatically from input/output specifications. It has been applied to a wide range of problems spanning several areas of science, engineering, and the arts. In this course students will explore several variations of the genetic programming technique and apply them to problems of their choosing. Prerequisite: One programming course (any language)