CS 30: Computation and Cognition

Fall 2002


To what extent is your brain like a computer? The central metaphor of cognitive science views the brain as a complex biological computing machine, the physical properties of which give rise to the mind's capacity for remembering, forgetting, introspection, perception, misconception, and consciousness. But what exactly does it mean to view thought as a complex computation? How far does this metaphor take us in practice, and what insights does it offer?

In this course we will investigate the nature of computation and its relationship to human—and possibly machine—intelligence. We will do this in a hands-on way, by writing computer programs that computationally model human cognitive processes such as language, perception, memory, and learning. We'll talk about abstract models of computation, such as Turing machines, and what they may tell us about the ultimate limits of the mind. We'll read and discuss a number of important papers from artificial intelligence. And we'll explore the idea of embodied cognition by building, programming, and experimenting with small, autonomous mobile robots.

No programming experience is expected, but much will be provided. This course is a "must-take" for all cognitive scientists and anyone interested in cognition. It can also serve as an alternative introductory course in computer science, and a challenging but interesting way to fulfill your PAC 3.

Prerequisite: An introductory psychology or cognitive science course, or permission of the instructor. No previous knowledge of computer programming is required or presumed.

This course fulfills the Pomona College PAC 3 distribution requirement.


Prof. Jim Marshall
Office: Andrew Science Building 261
Office Hours: Mondays 2:30-3:30pm, Tuesdays 2:30-3:30pm, Thursdays 11:00am-noon, and by appointment.
Phone/Voicemail: (909) 607-8650 (extension 78650 on campus)
E-mail: jmarshall@pomona.edu

Class Meeting Times

Course Materials

Computer Accounts

All students enrolled in CS 30 need a Novell account on the Pomona campus network. Pomona students should already have such an account. Off-campus students should go to the consultant desk in the Seaver Computing Center as soon as possible to obtain an account. Click here for more information.

Required Books

The Little Schemer, 4th edition
by Daniel P. Friedman and Matthias Felleisen
Concrete Abstractions
by Max Hailperin, Barbara Kaiser, and Karl Knight

Students should always bring their textbooks and extra disks with them to lab. I will also assign supplementary readings from time to time in the form of handouts distributed in class.

Optional Books

The following is a good reference to have on hand if you're interested in doing more advanced Scheme programming, but is not required for the course:

Grading and Attendance

You are expected to attend all lectures and labs. Your final course grade will be based on attendance, class participation, homework assignments, readings, and exams.

Your final grade will be weighted roughly as follows:

30% Programming Assignments
15% Midterm Exam 1 (Thursday, October 3, 7-9pm)
15% Midterm Exam 2 (Thursday, November 14, 7-9pm)
20% Final Exam
10% Readings
10% Class Attendance and Participation

You will hand in your homework assignments electronically, via a drop folder on the network (to be explained in class). You do not need to turn in a hardcopy printout of your assignments, unless I explicitly ask for one.

Late Homework Policy

Getting Help

Our student mentor this semester is Sarah Trefethen. She will be helping out during the labs each week. In addition, she is available to answer your questions about the course material or homework assignments. If you would like to set up an appointment with her, feel free to contact her directly. Here is her contact information:

You are strongly encouraged to come to my office hours or talk to Sarah whenever you are having difficulty with the material. If you are confused about something, don't stay that way! Staying confused will only make things worse later. Come see one of us as soon as possible so that we can clear up the problem. There is no point in banging your head against a wall for hours trying to figure out why your program won't work, when just a few minutes is usually all it takes to track down the problem together.

If you want to see me but can't make it to my office hours, I'll be more than happy to schedule an appointment. Ask me about it in class, send me some e-mail, or leave a message on my voice mail. You can also try to catch me outside of my regular office hours, though I can't always guarantee that I'll have time to meet with you right then.

Collaboration Policy

The highest level of academic integrity is expected of every student. You are strongly encouraged to discuss ideas and approaches to solving problems, on a general level, with Sarah or your fellow classmates, but unless I tell you otherwise, the work you hand in must be exclusively your own. Effective learning is compromised when this is not the case.

Accordingly, you should never read another student's code or solutions, exchange computer files, or share your code or solutions with anyone else in the class. Under no circumstances may you hand in work done by, or in collaboration with, someone else under your own name, with the exception that you may freely use any code that I explicitly provide to you.

When in doubt, credit the people or sources from whom you got help. This also goes for any help obtained via the Internet. You will not lose any points for acknowledging help obtained in a legitimate fashion (for example, from Sarah, or from Web sites or articles). If you are ever unsure about what constitutes acceptable collaboration, just ask.

Failure to abide by these rules is considered plagiarism, and will result in severe penalties, including possible failure of the course. Please do not put me, yourself, or anyone else in this unpleasant situation.