Location: Bowdoin / Computer Science / Courses / Fall 2009

Computer Science

Fall 2009

101. Introduction to Computer Science
Stephen Majercik M 11:30 - 12:55, W 11:30 - 12:55 Searles-126
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
Adriana Palacio T 1:00 - 2:25, TH 1:00 - 2:25 Searles-128
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 M 1:00 - 2:25, W 1:00 - 2:25 Searles-126
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 T 8:30 - 9:55, TH 8:30 - 9:55 Searles-126
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 T 11:30 - 12:55, TH 11:30 - 12:55 Searles-126
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.

270. Artificial Intelligence
Stephen Majercik M 8:00 - 9:25, W 8:00 - 9:25 Searles-126
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.

320. Robotics
Eric Chown M 10:00 - 11:25, W 10:00 - 11:25 Searles-224 Linux Lab
Robotics is a challenging discipline that encourages students to apply theoretical ideas from a number of different areas—artificial intelligence, cognitive science, operations research—in pursuit of an exciting, practical application: programming robots to do useful tasks. Two of the biggest challenges are building effective models of the world using inaccurate and limited sensors, and using such models for efficient robotic planning and control. Addresses these problems from both a theoretical perspective (computational complexity and algorithm development) and a practical perspective (systems and human/robot interaction) through multiple programming projects involving simulated and actual robots.

360. Computer and Network Security
Adriana Palacio T 10:00 - 11:25, TH 10:00 - 11:25 Searles-126
Covers the fundamental concepts and techniques used to ensure secure computing and communication. Topics include cryptographic protocols, code security and exploitation (buffer overflows, race conditions, SQL injection, etc.), access control and authentication, covert channels, protocol attacks, firewalls, intrusion detection/prevention, viruses/worms and bots, spyware and phishing, denial-of-service, privacy/anonymity, and computer forensics. Provides an appreciation of the fundamental challenges in designing and implementing secure systems as well as an understanding of the base technologies and threats in today’s interconnected environment.