Fall 2012 Courses

  • Visit Anchor 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
Daniela Oliveira M 1:00 - 2:25, W 1:00 - 2:25 Searles-223
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
Eric Chown T 1:00 - 2:25, TH 1:00 - 2:25 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. 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.

231. Algorithms
Stephen Majercik M 11:30 - 12:55, W 11:30 - 12:55 Searles-223
An introductory course on the design and analysis of algorithms. 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.

355. Cognitive Architecture
Eric Chown T 10:00 - 11:25, TH 10:00 - 11:25 Searles-126
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. Conceptually oriented, drawing ideas from computer science, psychology, and neuroscience. No programming experience necessary.

360. Computer and Security
Daniela Oliveira M 2:30 - 3:55, W 2:30 - 3:55 Searles-126
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.

375. Optimization and Uncertainty
Stephen Majercik M 10:00 - 11:25, W 10:00 - 11:25 Searles-126
Optimization problems and the need to cope 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, probabilistic inference and planning, and population-based optimization techniques (e.g., genetic algorithms and ant colony optimization).