Courses

Spring 2008 Courses

  • Visit Bearings 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 11:30 - 12:55, W 11:30 - 12:55
What is computer science, what are its applications in other disciplines, and 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, and problems that arise in real-life. Assumes no prior knowledge of programming or computers.

101. Introduction to Computer Science
Adriana Palacio T 1:00 - 2:25, TH 1:00 - 2:25
What is computer science, what are its applications in other disciplines, and 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, and problems that arise in real-life. Assumes no prior knowledge of programming or computers.

210. Data Structures
Laura Toma T 11:30 - 12:55, TH 11:30 - 12:55
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. This course is 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. Beginning in Spring 2008, students interested in taking Computer Science 210 are required to pass the computer science placement examination prior to registration.

250. Principles of Programming Languages
Eric Chown M 11:30 - 12:55, W 11:30 - 12:55
Focuses on different paradigms for solving problems, and their representation in programming languages. These paradigms correspond to distinct ways of thinking about problems. For example, “functional” languages (such as Haskell) focus attention on the behavioral aspects of the real-world phenomena being modeled; “logic programming” languages (such as Prolog) focus attention on the declarative aspects of problem-solving. Covers principles of language design and implementation including syntax, semantics, type systems, control structures, and compilers.

280. Projects in Computer Science
Eric Chown M 2:30 - 3:55, W 2:30 - 3:55
Affords students the opportunity to work on large-scale software projects. In most cases this will involve the student, or team of students, contributing to an on-going project. Emphasis will be placed upon how the nature of such work differs from the coursework typically found in a Computer Science course. The work for the course will consist mainly of the projects, but students will also be required to give regular progress reports and presentations on their work.

289. Theory of Computation
Adriana Palacio T 10:00 - 11:25, TH 10:00 - 11:25
What is computation? This course studies this question, 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.

340. Spatial Data Structures
Laura Toma T 2:30 - 3:55, TH 2:30 - 3:55
In many disciplines the data being collected have spatial coordinates. Analysis of spatial data is an active area of research in computer science, with applications in areas like computer-aided design (CAD), data warehousing, network routing and geographic information systems (GIS). Presents algorithms and data structures for problems involving spatial data, covering both their theory and their practical efficiency and scalability to large datasets. Topics include spatial database design; computational geometry, covering algorithms for computing convex hulls, Delaunay triangulations and Voronoi diagrams; line segment intersection and spatial join; data structures for orthogonal range searching; nearest-neighbor queries and window queries; techniques for dynamization of spatial data structures; clustering techniques and external memory algorithms.

375. Optimization and Uncertainty
Stephen Majercik M 1:00 - 2:25, W 1:00 - 2:25
Optimization problems and coping 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, and probabilistic inference and planning.