Location: Bowdoin / Computer Science / Courses / Fall 2010

Computer Science

Fall 2010

101. Introduction to Computer Science
Stephen Majercik T  10:00 - 11:25
TH 10:00 - 11:25
What is computer science, what are its applications in other disciplines, and what is its impact in society? A step-by-step introduction to the art of problem solving using the computer and the Java language. Provides a broad introduction to computer science and programming through real-life applications. Weekly labs provide experiments with the concepts presented in class. Assumes no prior knowledge of computers or programming.

101. Introduction to Computer Science
Eric Chown T  1:00 - 2:25
TH 1:00 - 2:25
What is computer science, what are its applications in other disciplines, and what is its impact in society? A step-by-step introduction to the art of problem solving using the computer and the Java language. Provides a broad introduction to computer science and programming through real-life applications. Weekly labs provide experiments with the concepts presented in class. Assumes no prior knowledge of computers or programming.

210. Data Structures
Laura Toma M  1:00 - 2:25
W  1:00 - 2:25
Solving complex algorithmic problems requires the use of appropriate data structures such as stacks, priority queues, search trees, dictionaries, hash tables, and graphs. It also requires the ability to measure the efficiency of operations such as sorting and searching in order to make effective choices among alternative solutions. Offers a study of data structures, their efficiency, and their use in solving computational problems. Laboratory exercises provide an opportunity to design and implement these structures. Students interested in taking Computer Science 210 are required to pass the computer science placement examination before class starts.

231. Algorithms
Laura Toma M  11:30 - 12:55
W  11:30 - 12:55
An introductory course on the design and analysis of algorithms building on concepts from Computer Science 210. Introduces a number of basic algorithms for a variety of problems such as searching, sorting, selection, and graph problems (e.g., spanning trees and shortest paths). Discusses analysis techniques, such as recurrences and amortization, as well as algorithm design paradigms such as divide-and-conquer, dynamic programming, and greedy algorithms.

240. Operating Systems
Daniela Oliveira T  1:00 - 2:25
TH 1:00 - 2:25
Operating systems (OS) are essential to any computer system and although we have been witnessing rapid changes in applications and in the use of computers, the fundamental concepts that underlie an OS remain the same. This is an introductory course in OS concepts, design, and implementation. Students will get hands-on experience experimenting with Linux, a real, widely used, open source OS. However, the core concepts are applicable to most operating systems: Windows, OS X, FreeBSD, Solaris. Whenever applicable, we will compare differences in design choices among these other OSs. Topics covered include: process management (scheduling, threads, interprocess synchronization, and deadlocks), main memory and virtual memory, file and I/O subsystems, and the basics of OS protection and security.

270. Artificial Intelligence
Stephen Majercik T  8:30 - 9:55
TH 8:30 - 9:55
Explores the principles and techniques involved in programming computers to do tasks that would require intelligence if people did them. State-space and heuristic search techniques, logic and other knowledge representations, reinforcement learning, neural networks, and other approaches are applied to a variety of problems with an emphasis on agent-based approaches.

355. Cognitive Architecture
Eric Chown T  10:00 - 11:25
TH 10:00 - 11:25
Advances in computer science, psychology, and neuroscience have shown that humans process information in ways that are very different from those used by computers. Explores the architecture and mechanisms that the human brain uses to process information. In many cases, these mechanisms are contrasted with their counterparts in traditional computer design. A central focus is to discern when the human cognitive architecture works well, when it performs poorly, and why. Conceptually oriented, drawing ideas from computer science, psychology, and neuroscience. No programming experience necessary.