Location: Bowdoin / The College Catalogue / Courses / Computer Science / Courses

The College Catalogue

Computer Science – Courses

Introductory, Intermediate, and Advanced Courses

1101 {101} a - MCSR. Introduction to Computer Science. Every semester. Fall 2013. Mohammad Irfan and Stephen Majercik.

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.

2101 {210} a - MCSR. Data Structures. Every semester. Eric Chown.

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.

Prerequisite: Computer Science 1101 {101}, placement above Computer Science 1101 {101}, or permission of the instructor.

2200 {231} a - MCSR. Algorithms. Fall 2013. Laura Toma.

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.

[2210 {289} a - MCSR. Theory of Computation.]

[2300 {220} a. Computer Organization.]

[2310 {240} a - MCSR. Operating Systems.]

2400 {270} a - MCSR. Artificial Intelligence. Fall 2013. Stephen Majercik.

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.

Prerequisite: Computer Science 2101 {210} or permission of the instructor.

2505 {281} a. Mobile Computing. Spring 2014. Eric Chown.

As computer science enters the “post-PC” era, basic computing paradigms are shifting to take advantage of mobile platforms such as phones and tablets. Covers all aspects of programming for mobile devices including development environments, programming languages, the use of touch screens for input, and associated sensors such as accelerometers and GPS. Students engage in a series of introductory projects before taking on a large self-designed term project that highlights the differences between mobile applications and more traditional applications designed for the desktop.

Prerequisite: Computer Science 2101 {210}.

2970–2973 {291–294} a. Intermediate Independent Study in Computer Science. The Department.

2999 {299} a. Intermediate Collaborative Study in Computer Science. The Department.

[3005 {280} a. Projects in Computer Science.]

3225 {350} a. GIS Algorithms and Data Structures. Fall 2013. Laura Toma.

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.

Prerequisite: Computer Science 2101{210} and 2200 {231}, or permission of the instructor.

[3310 {360} a. Computer Security.]

3355 {315} a. Open Source Software Development. Fall 2013. Allen Tucker.

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. Requires students to learn about and master these methods by working in teams with real clients to complete real software projects; includes, consequently, 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.

Prerequisite: Computer Science 2101 {210}, or permission of the instructor.

3400 {355} a. Cognitive Architecture. Fall 2015. Eric Chown.

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.

Prerequisite: One of the following: Computer Science 2101 {210}, Biology 2135 {213}, Psychology 2040 {216} or 2740 {270} or permission of the instructor.

[3415 {320} a. Robotics.]

3425 {375} a. Optimization and Uncertainty. Fall 2014. Stephen Majercik.

Optimization problems and the need to cope with uncertainty arise frequently in the real world. A numeric framework, rather than the symbolic one of traditional artificial intelligence, is useful for expressing such problems. In addition to providing a way of dealing with uncertainty, this approach sometimes permits performance guarantees for algorithms. Topics include constraint satisfaction, systematic and non-systematic search techniques, probabilistic inference and planning, and population-based optimization techniques (e.g., genetic algorithms and ant colony optimization).

Prerequisite: Computer Science 2101 {210} or permission of the instructor.

3440 {344} a. Nature-Inspired Computation. Spring 2015. Stephen M. Majercik.

The size and complexity of real-world optimization problems can make it difficult to find optimal solutions in an acceptable amount of time. Researchers have turned to nature for inspiration in developing techniques that can find high-quality solutions in a reasonable amount of time; the resulting algorithms have been applied successfully to a wide range of optimization problems. Covers the most widely used algorithms, exploring their natural inspiration, their structure and effectiveness, and applications. Topics will be drawn from: genetic algorithms, particle swarm optimization, ant colony optimization, honeybee algorithms, immune system algorithms, and bacteria optimization algorithms. Requirements include labs, programming assignments, and a larger final project.

Prerequisite: Computer Science 2101 {210} or permission of the instructor.

4000–4003 {401–404} a. Advanced Independent Study in Computer Science. The Department.

4029 {405} a. Advanced Collaborative Study in Computer Science. The Department.

4050–4051 a. Honors Project in Computer Science. The Department.

Online Catalogue content is current as of August 1, 2013. For most current course information, use the online course finder. Also see Addenda.