Course Catalog (for year beginning Sept '07)

All Courses | Undergraduate Courses | Graduate Courses         Sept'07 | Sept'08

Note: Undergrad course numbers go to 499, grad courses are 500 and above.
Not all students can take all courses.

COS109 - Computers in Our World (Fall)
Computers are all around us. How does this affect the world we live in? This course is a broad introduction to computing technology for humanities and social science students. Topics will be drawn from current issues and events, and will include discussion of how computers work, what programming is and why it is hard, how the Internet and the Web work, security and privacy. Two 90-minute lectures, one three-hour laboratory.
COS126 - General Computer Science (Fall, Spring)
An introduction to computer science in the context of scientific, engineering, and commercial applications. The goal of the course is to teach basic principles and practical issues, while at the same time preparing students to use computers effectively for applications in computer science, physics, biology, chemistry, engineering, and other disciplines. Topics include: hardware and software systems; programming in Java; algorithms and data structures; fundamental principles of computation; and scientific computing, including simulation, optimization, and data analysis. No prior programming experience required. Two lectures, two classes.
COS217 - Introduction to Programming Systems (Fall, Spring)
An introduction to computer organization and system software. The former includes topics such as processor and memory organization, input/output devices, and interrupt structures. The latter includes assemblers, loaders, libraries, and compilers. Programming assignments are implemented in assembly language and C using the UNIX operating system. Three lectures.
Prerequisite(s): 126 or instructor's permission.
COS226 - Algorithms and Data Structures (Fall, Spring)
The study of fundamental data structures such as lists, queues, stacks, trees, heaps, hash tables, and their variations. The implementation and analysis of important algorithms for sorting, searching, string processing, geometric applications, and graph manipulation. Introduction to advanced algorithms and techniques. Two lectures, one preceptorial.
Prerequisite(s): 126 or instructor's permission.
COS318 - Operating Systems (Fall)
A study of the design and analysis of operating systems. Topics include: processes, mutual exclusion, synchronization, semaphores, monitors, deadlock prevention and detection, memory management, virtual memory, processor scheduling, disk management, file systems, security, protection, distributed systems. Two 90-minute lectures.
Prerequisite(s): 217 and 226 or instructor's permission.
COS323 - Computing for the Physical and Social Sciences (Fall)
Principles of scientific computation, driven by current applications in biology, physics, economics, engineering, etc. Topics include: simulation, integration of differential equations, iterative optimization algorithms, stability and accuracy issues. Students will pursue projects in a variety of fields, writing their own computer programs and also using higher-level tools such as Maple. Two 90-minute lectures.
Prerequisite(s): 126 and MAT 104, or instructor's permission.
COS340 - Reasoning About Computation (Fall)
An introduction to mathematical topics relevant to computer science. Combinatorics and probability will be covered in the context of computer science applications. The course will present a computer science approach to thinking and modeling through topics such as dealing with uncertainty in data and handling large data sets. Students will be introduced to fundamental concepts such as NP-completeness and cryptography that arise from the world view of efficient computation. Two 90 minute lectures, one preceptorial.
COS347 - Quantum Physics, Qubits and Nanoscience (Fall)
(One-time offering by visiting Distinguished Professor) An elementary introduction to Quantum Mechanics, especially aimed at students interested in interdisciplinary areas like nanoscience and quantum computing. Using "qubits" (basic building blocks of quantum computation, information and cryptography), we give simple treatments of standard QM topics such as superposition, tensor products, Bell's inequalities and Heisenberg uncertainty principle, as well as "advanced" topics like multi-particle systems and spin. We also discuss the computational power of quantum computers and cryptosystems as well as their possible lab implementations. Two lectures.
COS397 - Junior Independent Work (B.S.E. candidates only) (Fall)
Offered in the fall, juniors are provided with an opportunity to concentrate on a "state-of-the-art" project in computer science. Topics may be selected from suggestions by faculty members or proposed by the student.
Prerequisite(s): B.S.E. candidates only.
COS402 - Artificial Intelligence (Fall)
The fundamental principles, algorithms and techniques of modern artificial intelligence research and practice. Likely topics include: problem solving using search, game playing, logical inference, probabilistic reasoning in the presence of uncertainty, hidden Markov models, speech recognition, Markov decision processes, machine learning. Two 90-minute lectures.
Prerequisite(s): 217 and 226.
COS429 - Computer Vision (Fall)
An introduction to the concepts of 2D and 3D computer vision. Topics include low-level image processing methods such as filtering and edge detection; segmentation and clustering; optical flow and tracking; shape reconstruction from stereo, motion, texture, and shading. Throughout the course, there will also be examination of aspects of human vision and perception that guide and inspire computer vision techniques. Two 90-minute lectures.
Prerequisite(s): 217 and 226.
COS433 - Cryptography (Fall)
A rigorous introduction to modern cryptography. Emphasis will be placed on the fundamental cryptographic primitives of public-key encryption, digital signatures, pseudo-random number generation, and basic protocols. The course will discuss both the foundations of modern cryptography in computational complexity theory and the main conceptual applications of cryptographic primitives. Two 90-minute lectures.
Prerequisite(s): 226 and 341 recommended, but other interested students are encouraged to contact the instructor.
COS436 - Human-Computer Interface Technology (Fall)
(also ELE 469) This course covers hardware, sensors, displays, software, signal processing, pattern recognition, real-time computing, systems, and architectures for human-computer interfacing. Labs supplement lectures and readings, and final group projects are executed and tested.
Prerequisite(s): COS 217 or ELE 302.
COS441 - Programming Languages (Fall)
How to design and analyze programming languages and how to use them effectively. Functional programming languages, object-oriented languages; type systems, abstraction mechanisms, operational semantics, safety and security guarantees. Implementation techniques such as object representations and garbage collection will also be covered. Three lectures.
COS497 - Senior Independent Work (Fall)
Offered in the fall, seniors are provided with an opportunity to concentrate on a "state-of-the-art" project in computer science. Topics may be selected from suggestions by faculty members or proposed by the student.
Prerequisite(s): B.S.E. candidates only.