Location: Bowdoin / Computer Science / Courses / Spring 2011

Computer Science

Spring 2011

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.

280. Projects in Computer Science
Eric Chown T 10:00 - 11:25, TH 10:00 - 11:25
Affords students the opportunity to work on large-scale software projects. Most involve the student, or team of students, contributing to an ongoing project. Emphasis placed on how the nature of such work differs from the coursework typically found in a computer science course. Work consists mainly of the projects, but students also required to give regular progress reports and presentations.

289. Theory of Computation
Stephen Majercik T 8:30 - 9:55, TH 8:30 - 9:55
Studies the nature of computation and examines the principles that determine what computational capabilities are required to solve particular classes of problems. Topics include an introduction to the connections between language theory and models of computation, and a study of unsolvable problems.

345. When RAM is Not Enough: Computing with Massive Data Sets
Laura Toma M 11:30 - 12:55, W 11:30 - 12:55
The traditional measure of an algorithm's efficiency--number of instructions performed--assumes that all the data fits in main memory. Massive data sets, which are becoming more common and do not fit into main memory, have led to a new measure that takes into account disk accesses, which are orders of magnitude slower than main memory accesses and usually dominate the running time. IO-efficient algorithms try to minimize both the number of instructions and the number of disk accesses. Covers basic algorithms and data structures, techniques and paradigms, and applications. Looks at examples where IO-efficeint algorithms make a difference in practice, and the extent of this difference. Consists of lectures, paper reading and presentation, and programming projects.

360. Computer and Network Security
Daniela Oliveira M 10:00 - 11:25, W 10:00 - 11:25
Millions of people use the Internet in many important activities of their lives, but many of them are using software/hardware that is not secure. Students learn the principles, mechanisms, and implementation of computer security and data protection, attackers’ motivations, how real attacks work and how to defend against them, and how to design more secure systems. Opportunities to perform and analyze real attacks in a controlled environment. Topics include computer security and principles, malicious software (e.g., worms, rootkits, botnets, Trojans, viruses), intrusion detection, network security, Web security, access control matrices, confidentiality and integrity policies, design principles, access control mechanisms, information flow, and cryptography as a security tool.