Fall 2013 Courses

  • Please note that for the 2013-14 academic year, official course numbers are now four digits. This page only shows the older three-digit course numbers. If you need to see both the old and the new numbers, consult the College Catalogue.
  • The College Catalogue has a class finder tool to search for courses by title, instructor, department, and more.
  • Login to Blackboard. Instructional materials are available on a course-by-course basis.
101. Introduction to Computer Science
Stephen Majercik M 1:00 - 2:25, W 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.
101. Introduction to Computer Science
Mohammad Irfan T 11:30 - 12:55, TH 11:30 - 12:55
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
Eric Chown 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 2101 {210} are required to pass the computer science placement examination before class starts.
231. Algorithms
Laura Toma T 10:00 - 11:25, TH 10:00 - 11:25
An introductory course on the design and analysis of algorithms. 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 11:30 - 12:55, W 11:30 - 12: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.
315. Open Source Software Development
Allen Tucker T 2:30 - 3:55, TH 2:30 - 3:55
Studies the principles and practice of software development, with a particular emphasis on humanitarian free and open source software (HFOSS), agile methods, team programming, and real-world applications. Agile methods include unit testing, team programming, using collaboration tools, code sharing, unit testing, refactoring. The course requires students to learn about and and master these methods by working in teams with real clients to complete real software projects. Thus, the course has a required community service component. Examples of past projects completed by Bowdoin computer science students can be found at http://myopensoftware.org/content/new-projects-2012.
350. GIS Algorithms and Data Structures
Laura Toma T 1:00 - 2:25, TH 1:00 - 2:25
Geographic information systems (GIS) handle geographical data such as boundaries of countries; course of rivers; height of mountains; and location of cities, roads, railways, and power lines. GIS can help determine the closest public hospital, find areas susceptible to flooding or erosion, track the position of a car on a map, or find the shortest route from one location to another. Because GIS deal with large datasets, making it important to process data efficiently, they provide a rich source of problems in computer science. Topics covered include data representation, triangulation, range searching, point location, map overlay, meshes and quadtrees, terrain simplification, and visualization.