CS 30: Computation and Cognition

Spring 2006


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 experimenting with 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.

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


Prof. Jim Marshall
Office: Andrew Science Building 261
Office Hours: Mondays, Tuesdays, and Wednesdays 4:00-5:00 pm, and by appointment.
Phone/Voicemail: (909) 607-8650 (extension 78650 on campus)
E-mail: marshall@cs.pomona.edu

Class Meeting Times

Course Materials

Computer Accounts

All students enrolled in CS 30 need a Linux account on the Pomona computer science network. To get an account, simply fill out this on-line form.


Python Programming
by John Zelle
Mind Design II
edited by John Haugeland

There will also be a supplementary reading packet.

Grading and Attendance

On-time attendance in all class meetings is required. If you are unable to attend class due to illness, please contact me on the day of the missed class (or sooner). If you must miss class for any other reason, please let me know in advance.

Your final grade will be weighted roughly as follows:

Late Homework Policy

Getting Help

Our student mentor this semester is Dan Barcay. He will be helping out during the labs each week. In addition, he is available to answer your questions about the course material or homework assignments. If you would like to set up an appointment with him, feel free to contact him directly at daniel.barcay@pomona.edu. In general, he will be available in the CS Linux labs (Andrew 252 and 257) during the following times:

You are strongly encouraged to come to my office hours or talk to Dan 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 Dan 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 or transcribe 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 significant help obtained in a legitimate fashion (for example, from Dan, or from books, 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 in the course. Please do not put me, yourself, or anyone else in this unpleasant situation.