Courses

Fall 2007 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.
050. Computing: Tools and Issues
Allen Tucker T 2:30 - 3:55, TH 2:30 - 3:55 Searles-223
What is computer science? How does it differ from related disciplines, especially mathematics and the sciences? What are the core elements of computer science and how do they reveal themselves in our everyday lives? What do we need to know about computer science in order to function effectively in a technological world? Helps prepare students to address these questions. Takes a first-hand look at the nature of programming and its role in computer science. Explores the nature of the Internet—how it is designed, managed, and used effectively in commercial, academic, and governmental applications. Also examines some key social and ethical issues that have important places in a technological world, such as intellectual property, privacy, and Internet security. Combines lectures, laboratory experiences, readings, and short papers to substantively engage these questions and issues. A modest amount of programming accompanies the laboratory component. Additional laboratory work includes the use of simulators and models that add hands-on experiences to topics encountered in the readings. Students who have taken or are concurrently taking any computer science course numbered 100 or above do not receive credit for this course.

101. Introduction to Computer Science
Stephen Majercik M 11:30 - 12:55, W 11:30 - 12:55 Searles-126
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 Searles-223
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 Searles-126
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.

231. Algorithms
Laura Toma T 2:30 - 3:55, TH 2:30 - 3:55 Searles-126
An introductory course on the design and analysis of algorithms building on concepts from Computer Science 210. 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.

260. Software Design
Allen Tucker M 2:30 - 3:55, W 2:30 - 3:55 Searles-224 Linux Lab
Studies the process for designing complex software applications, with a special focus on the use of formal design and verification methods. The study of formal methods includes contemporary methodologies and tools like “designs by contract,” the Unified Modeling Language (UML), and the Java Modeling Language (JML). Students evaluate the overall strengths and limitations of formal specification and verification in the software design process. A substantial software design project is used as a case study for working with various concepts, tools, and techniques in a laboratory setting.

270. Artificial Intelligence
Stephen Majercik M 1:00 - 2:25, W 1:00 - 2:25 Searles-126
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. Formerly Computer Science 370.

355. Cognitive Architecture
Eric Chown T 1:00 - 2:25, TH 1:00 - 2:25 Searles-224 Linux Lab
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. The course is conceptually oriented, drawing ideas from computer science, psychology, and neuroscience. No programming experience necessary.

360. COMPUTER AND NETWORK SECURITY
Adriana Palacio T 10:00 - 11:25, TH 10:00 - 11:25 Searles-126


390. Advanced Seminar in Robotics
Eric Chown
Engages students in directed projects in robotics. Projects may cover virtually any aspect of robotics, but the focus will be on integrating them as part of a large-scale research program.