Information about Lee Spector's Courses


Current Courses

CS 104: Cognitive Science Fiction

Can androids fall in love? Could a planet have a mind of its own? How might we communicate with alien life forms? Will it ever be possible for two people to "swap minds"? How about a person and a robot? And what would it feel like to engage in a Vulcan "mind meld"?

A large body of science fiction explores questions like these -- questions that push the limits of the science of the mind. Current cognitive science research can shed light on many of these questions, with results that are often as strange and as wonderful as the inventions of science fiction authors.

In this course we will read and view science fiction while simultaneously reading current scientific literature on the mind, the brain, and intelligent machines. The science fiction will provide a framework for our discussions, but the real goal of the course is to provide a tour of issues in cognitive science that will prepare students for more advanced cognitive science courses.

No previous experience in cognitive science is required.

Class will meet twice a week for one hour and 20 minutes and additionally one evening a week for film screenings. Enrollment is limited to 15.

On-line resources

CCS 284: Seminar in Artificial Intelligence: Evolutionary Computation

(with Jaime Dávila)

Evolutionary computation techniques harness the mechanisms of natural evolution--including genetic recombination, mutation, and natural selection--to automatically produce solutions to a wide range of problems. In this course students will explore several evolutionary computation techniques and apply them to problems of their choosing. The technique of "genetic programming," in which populations of executable programs evolve through natural selection, will be emphasized. The prerequisite for this course is fluency in either Lisp or C. A background in Artificial Intelligence (for example, CCS 263: Artificial Intelligence) would also be helpful. The class will meet twice weekly for one hour and twenty minutes. Enrollment is limited to 20.

On-line resources


Catalog Descriptions and On-Line Resources from Some Previous Courses

CS 104: Cognitive Science Fiction

Can androids fall in love? Could a planet have a mind of its own? How might we communicate with alien life forms? Will it ever be possible for two people to "swap minds"? How about a person and a robot? And what would it feel like to engage in a Vulcan "mind meld"?

A large body of science fiction explores questions like these -- questions that push the limits of the science of the mind. Current cognitive science research can shed light on many of these questions, with results that are often as strange and as wonderful as the inventions of science fiction authors.

In this course we will read and view science fiction while simultaneously reading current scientific literature on the mind, the brain, and intelligent machines. The science fiction will provide a framework for our discussions, but the real goal of the course is to provide a tour of issues in cognitive science that will prepare students for more advanced cognitive science courses. No previous experience in cognitive science is required. The course will meet twice a week for one hour and twenty minutes each time, with possible additional meetings for film screenings.

On-line resources still available.

CCS 105: The Nature of Mind: An Introduction to Cognitive Science

(with Mary Jo Rattermann)

Cognitive Science explores the nature of mind using tools developed in psychology, artificial intelligence, linguistics, neuroscience, and philosophy. This course will consist of classroom lectures and discussions based on a series of critical essay assignments due throughout the term. As the course progresses students will become acquainted with ongoing research issues in cognitive science, developing a term project that involves the review of primary literature and the collection of original data. The course will meet twice a week for one hour and twenty minutes each time. Enrollment is limited to 40.

CS 109: Computing Concepts: Creative Machines?

This course is an introduction to computer science 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 projects, the topics and forms of which will be chosen by students in consultation with the professor. Projects may be philosophical papers, technical papers, computer programs, artworks, etc., as long as they clearly address the material covered in the course. Students will be encouraged to write programs for some of their projects. The Lisp programming language will be taught both as a tool to be used for projects and as a framework within which topics in computer science will be presented. Knowledge of Lisp is a prerequisite for CCS 263: Artificial Intelligence, so students interested in Artificial Intelligence may want to take this course first. This course will also cover features of the C programming language. No previous experience with computers or with programming is required. Class will meet twice a week for one hour and twenty minutes each time. Enrollment limit is 25.

On-line resources.

CCS 111: When Machines Talk

Lee Spector/Steven Weisler

The tremendous advances in computer science over the last three decades continually raise the question of whether computers will ever be as intelligent, as conversant, as creative as humans are. In this course we will examine the prospects for building machines that can talk and can understand human language. We will consider linguistic, philosophical, and computational challenges to modeling what is often considered to be the defining characteristics of what it means to be human. 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 and language, including techniques for proving that certain linguistic problems are "intractable" or "unsolvable."

Students will be evaluated through a combination of short papers and problem sets, along with a final project. The class will meet twice a week for one hour and twenty minutes each time. Enrollment limit is 25.

On-line resources still available.

CCS 175: What Computers Can't Do

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. Such questions range from privacy and security issues in phone systems, bank networks, and computer conference systems to the use of computers in science, the space program, and the military.

Students will be evaluated through a combination of short papers and problem sets, along with a final project.

The class will meet twice a week for one and one-half hours each time. Enrollment is limited to 20.

CCS 199: Research Practicum

Students with some background in cognitive science will work in research teams with faculty and advanced students, participating in on-going projects as research assistants. Each student will design an individual program of study with the instructor in charge of the research team. Students are required to work in the research labs a minimum of five hours each week.

Section C: Artificial Intelligence Research Laboratory

In this section students will work in the Creative Cognition Laboratory on one of two research project areas: (1) artificial intelligence and music/art, or (2) design choices for intelligent action systems. Students will generally be expected to have Lisp programming skills at the start of the course, although a limited number of seats will be reserved for strong computer science students who do not have prior Lisp programming experience.

CCS 215: Creative Programming Workshop

In this course we will study the process of computer programming, programs in the "code literature," and our own code while engaging in intensive programming projects. Students will program continuously and read, run, and criticize one another's programs. These programs may be written for any application area and may include utilities, games, artworks, cognitive models, and environmental or social simulations. We will develop the ability to critique programs from a variety of perspectives including complexity theory, software engineering, and aesthetics. The course will include class analysis of student work and exercises in specific computational techniques and programming paradigms (for example functional, declarative, and object-oriented programming). Students may work in a range of programming environments including both "scripting environments" (such as Director and HyperCard) and more traditional programming languages (C/C++, Lisp, Java, etc.). Prerequisite: fluency in any programming or scripting language. The class will meet once a week for two hours and fifty minutes. Enrollment limit is 20.

On-line resources still available.

CS/NS 241: Computational Models of Biological Systems

(with Michelle Murrain)

As computers have gotten faster and able to handle more complex tasks, computer models of biological systems have become more widespread. These models have primarily been used for two purposes: to understand biological systems better, and to enhance computing capabilities by borrowing successful strategies from nature. How good are these models at fulfilling either of these purposes? What can we learn from thes models, and conceptual frameworks arising from them? We will review scientific literature on these models, experiment with them, and do some design of new models. The course will focus on computer models of neural, environmental, and genetic systems. Students taking this course should have some background in either biology or computer science. This course will meet for 1 and 1/2 hours twice a week, and 2 hours once a week for lab.

CCS 236: Seminar in Artificial Intelligence: Evolutionary Computation

Evolutionary computation techniques harness the mechanisms of natural evolution--including genetic recombination, mutation, and natural selection--to automatically produce solutions to a wide range of problems. In this course students will explore several evolutionary computation techniques and apply them to problems of their choosing. The technique of "genetic programming," in which populations of executable programs evolve through natural selection, will be emphasized. The prerequisite for this course is fluency in either Lisp or C. A background in Artificial Intelligence (for example, CCS 263: Artificial Intelligence) would also be helpful. The class will meet twice weekly for one hour and twenty minutes. Enrollment is limited to 20.

On-line resources still available.

CCS 263: Artificial Intelligence

Artificial Intelligence (AI) is a branch of computer science concerned with the construction of computer systems that "think." This course is an introduction to the core ideas of AI through concrete, hands-on activity. We will use the Common Lisp programming language, which is taught in CCS 109, to build working AI systems. We will study a range of techniques and mechanisms including pattern matching and production systems, semantic networks and frame systems, heuristic search, genetic algorithms, resolution theorem proving, STRIPS-style planning, symbolic learning algorithms, augmented transition networks, and neural networks. We will also discuss the philosophical foundations of AI, alternative approaches to AI (for example, symbolic, connectionist, and situated activity approaches), and implications of AI for cognitive science more broadly.

This course or its equivalent is a prerequisite for Advanced Topics in Artificial Intelligence; it may also be a prerequisite for other advanced courses on computational topics in the cognitive sciences. Prerequisite: Basic competence in the Common Lisp programming language. Class will meet twice a week for one hour and twenty minutes each time. Enrollment limit is 25.

On-line resources still available.

CCS 282: Advanced Topics in Artificial Intelligence

This course will cover advanced concepts in artificial intelligence (AI) research, focusing on Lisp programming techniques for the construction of large AI systems. We will read papers on current directions in AI research, and we will design and construct AI programs in an exploration of computational cognitive science.

The course will be organized around problems of dynamic reasoning in complex environments, an important new area of AI research. Students will be expected to complete several small programming assignments and to collaborate on a group final project. The final project will focus on the question of how a dynamic AI system can be "creative" in producing reasoned responses. We will collectively design a system that implements a theory of creative response, and each student will implement part of the system. The Lisp programming concepts to be covered include Common Lisp data structures, the package system, and object-oriented programming techniques using the Common Lisp Object System (CLOS). The AI systems concepts to be covered include non-linear planners, reactive planning systems, and genetic programming.

The prerequisite for this course is CCS 263 (Introduction to Artificial Intelligence) or an equivalent Lisp-based AI course. The class will meet twice a week for one and one-half hours each time. Enrollment is limited to 20.

CCS 283: Animals and Animats: Natural and Artificial Intelligence and Behavior

(with Mark Feinstein)

Even very simple natural organisms interact with the world in very complex ways, and often exhibit the kind of adaptive behavior that might be called "intelligent." Cognitive scientists and biologists want to understand how the minds and brains of animals work and how they evolved. Computer scientists are equally interested in the nature of intelligent behavior---the capacity to represent information, move in the world, lear, solve problems, interact with other organisms, and make decisions---as it might be implemented in autonomous machines liker robots or in "animats," computer simulations of living organisms.

In this course we will grapple with the nature of intelligence and behavior from all of these perspectives. Students will examine the main methods and results that have emerged within the fields of animal behavior, animal cognition, artificial intelligence and robotics. We will also look closely at recent developments in "genetic programming," which models some of the features of natural selection and adaptation in the biological world, and also provides an exciting new way to think about creating computer programs. Class will meet three times a weel for one-and-one-half hours each time. Enrollment is open, by instructor permission.

SMITH COLLEGE CS 280: Programming Language Paradigms

Microprocessors manipulate patterns of bits in small numbers of simple ways. But high-level programming languages allow us to think of these bits and the processes that manipulate them in a remarkable variety of ways. The abstractions provided by current programming languages include arbitrary-precision numbers, symbolic structures, functions as data, logical inferences, and analogs to real-world objects. In this course we will discuss the dimensions along which current programming languages differ and think about some of the future possibilities for human-machine communication. Students will be expected to write small programs in several different languages and to complete a final project that explores the unique features of one programming language in detail. There will also be midterm exam on programming language concepts.

On-line resources still available.