- 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.

- 107. Introduction to Computer Science
- Laura Toma 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? This course provides a broad introduction to computer science and programming through real-life applications. It does not assume any prior knowledge of programming or computers. The course is a step-by-step introduction to the art of problem solving using the computer and uses the Java language. Weekly labs provide experiments with the concepts presented in class, and problems that arise in real-life. Intended for students not intending to major in computer science, as well as for majors and for those with interest in programming with application in other sciences.
- 107. Introduction to Computer Science
- Stephen Majercik T 1:00 - 2:25, TH 1:00 - 2:25
Searles-126 - What is Computer Science, what are its applications in other disciplines, and its impact in society? This course provides a broad introduction to computer science and programming through real-life applications. It does not assume any prior knowledge of programming or computers. The course is a step-by-step introduction to the art of problem solving using the computer and uses the Java language. Weekly labs provide experiments with the concepts presented in class, and problems that arise in real-life. Intended for students not intending to major in computer science, as well as for majors and for those with interest in programming with application in other sciences.
- LAB
- Laura Toma T 2:30 - 3:55
Searles-128 - Provides a broad overview of computer science. Students learn about the basic areas of the discipline—algorithms (the foundation of computer science), what goes on inside a computer, how to design an algorithm and write a program to solve a problem on the computer, how your program is translated to a form the computer can “understand,” some theory (can a computer solve anything?), and some applications. Weekly labs provide experiments with concepts presented in class. Programming is done in C++.
- LAB
- Stephen Majercik M 2:30 - 3:55
Searles-128 - Provides a broad overview of computer science. Students learn about the basic areas of the discipline—algorithms (the foundation of computer science), what goes on inside a computer, how to design an algorithm and write a program to solve a problem on the computer, how your program is translated to a form the computer can “understand,” some theory (can a computer solve anything?), and some applications. Weekly labs provide experiments with concepts presented in class. Programming is done in C++.
- 189. Foundations of Computing
- Allen Tucker T 1:00 - 2:25, TH 1:00 - 2:25
Searles-223 - Introduces the foundations of logic and proof and their applications in computer science. Emphasis is placed on the functional programming paradigm. Topics include propositional and predicate logic, sets, relations, lists, trees, structural induction, and recursion in algorithms and data structures. Applications include digital logic design, program correctness, data compression, and databases.
- 210. Data Structures
- Eric Chown 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.
- LAB
- Eric Chown W 2:30 - 3:55
Searles-128 - 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. The Design and Analysis of Algorithms
- Laura Toma M 1:00 - 2:25, W 1:00 - 2:25
Searles-126 - Focuses on the design and analysis techniques of efficient algorithms. Topics include sorting, searching, graph algorithms, divide-and-conquer, greedy, dynamic programming, recurrences, amortized analysis. Prerequisites: csci101, csci210 and either csci189 or math 200.
- 260. Software Design
- Allen Tucker T 10:00 - 11:25, TH 10:00 - 11:25
Searles-223 - This course 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 "design by contract," the Unified Modeling Language (UML) and the Java Modeling Language (JML). In this course, students will evaluate the overall strengths and limitations of formal specification and verification in the software design process. A substantial software design project will be used as a case study for working with various concepts, tools, and techniques in a laboratory setting.
- 355. Cognitive Architecture
- Eric Chown T 1:00 - 2:25, TH 1:00 - 2:25
Searles-127 - Advances in computer science, psychology, and neuroscience have shown that humans process information in ways that are very different than 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. This is a conceptually-oriented course that draws ideas from computer science, psychology, and neuroscience. No programming experience necessary.
- 375. Optimization and Uncertainty
- Stephen Majercik T 2:30 - 3:55, TH 2:30 - 3:55
Searles-217 - 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. Examples of this approach are belief networks and Markov decision processes. In addition to providing a way of dealing with uncertainty, this approach sometimes permits performance guarantees for algorithms. Explores artificial intelligence from the numeric perspective: constraint satisfaction, combinatorial optimization, function approximation, probabilistic inference, and control. Also looks at applications such as robotics.