This course will include both a survey of crucial background results and an open-ended exploration of the current state of the art in computer modeling. It will include a philosophical introduction to (1) foundations of computer science, emphasizing the historical links to logic and focusing on Turing machines and Minsky register machines, and (2) essential limits to computability, highlighting the Halting problem but also tracing connections to Gödel, Rice’s Theorem, and Gregory Chaitin’s work on algorithmic randomness.
A major purpose of the course will also be to serve as a hands-on introduction to computer modeling as a subject worthy of both philosophical scrutiny and philosophical use. Topics to be covered include chaotic and complex systems, cellular automata, genetic algorithms, neural nets, and agent-based modeling. Applications will be drawn from philosophical logic, philosophy of language, epistemology, philosophy of mind, and social and political philosophy. A broad philosophical background and creative imagination are more important for the course than is any background knowledge of computers. A basic knowledge of elementary programming will be supplied; no such knowledge is required in advance.