Skip Navigation

Text Only/ Printer-Friendly

Carleton College

  • Home
  • Academics
  • Campus Life
  • Prospective Students
  • Alumni
  • Faculty & Staff
  • Students
  • Families

Newsletter: Carleton Sentinel

"Keeping you in the loop since 2005"

Winter Term Course Descriptions

October 22nd, 2009

By sjandro

CS 201: Data Structures. Instructor: Jack Goldfeather, Time: 3a
Prerequisite: CS 111 or consent of the instructor.

Think back to your favorite assignment from Intro to Computer Science. Did you ever get the feeling that "there has to be a better/smarter way to do this problem?" The Data Structures course is all about how to store information intelligently and access it efficiently. How can Google take your query, compare it to billions of web pages, and return the answer in less than one second? How can one balance the tradeoff of being able to store information so that it can be retrieved quickly, but also can be quickly updated? Ideas such as stacks, queues, trees, linked lists, graphs and hash tables will be examined, and we'll look at how to program them as well as how to analyze them for their performance.

CS CS 204: Software Design. Instructor: Jeff Ondich, Time: 1a
Prerequisite: CS 111 or consent of the instructor.

Most software is developed by programmers with the best of intentions: I will study the needs of my audience, I will design before coding, I will write thorough and useful documentation, I will test exhaustively, and I will keep good records. Unfortunately, good intentions don't guarantee much. This course will focus on techniques and tools that will help you create good software and follow through on those good intentions. The course will center around a few medium-sized projects, with an emphasis on the formation of good habits in design, implementation, testing, and documentation. (Though there are many important things to be said about software engineering in teams, this course will not emphasize these issues, and you will be free to work individually or in groups.) Topics we will consider include code construction, object-oriented design, design patterns, requirements and specifications, testing, user interface design, and various programming tools (debuggers, integrated development environments, version control systems, etc.). We will also read lots of great advice from some leading writers on programming, and we will welcome a few professional programmers to class for story-telling and interrogation.

CS 252: Algorithms. Instructor: David Liben-Nowell, Time: 2a
Prerequisites: CS 201; CS 202 or Math 236

What with Halloween here and all, you start to wonder: suppose that, after you don your Rob Oden costume and head out into the night, you want to hit all of the houses of Carleton's political science professors while you're trick-or-treating. (They have the best candy.) But you're feeling lazy, so you want to be sure that your route is as efficient as possible. So you decide to write a program to solve this problem. How would you go about designing a solution for this problem? How fast can your program be? Sadly, some problems are just plain hard. How do you solve the easy problems? How do you identify the hard problems? How do you deal with a hard problem when you're confronted with it? CS 252, which counts toward both mathematics and computer science majors, is concerned with developing techniques for the design and analysis of algorithms. We will cover several major algorithm design techniques, computational complexity focusing on NP-completeness, and algorithmic techniques for intractable problems.

CS 334: Database Systems. Instructor: Dave Musicant, Time: 5a
Prerequisite: CS 201 or consent of instructor.
Most people have a pretty good intuitive sense of what a database is. From a computer science perspective, though, what is a database system? We’ll study the relational model and the theoretical concepts behind it such as normal forms and relational algebra. At the same time, we’ll look at the gritty tools necessary to actually build a database system, such as file organization and indexing. We’ll actually build a significant portion of the backbone for a database system, and look at using SQL in interacting with a full-fledged relational database system.

Back to Newsletter: Carleton Sentinel