Course Catalog


All Courses | Undergraduate Courses | Graduate Courses

This is the list of courses that the department may offer. The Course Schedule page lists the currently scheduled courses.

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.
COS116 - The Computational Universe (Spring)
Computers have brought the world to our fingertips. This course explores at a basic level the science "old and new" underlying this new computational universe: propositional logic of the ancient Greeks (microprocessors); quantum mechanics (silicon chips); network and system phenomena (Internet and search engines); computational intractability (secure encryption); and efficient algorithms (genomic sequencing). Ultimately, this study makes us look anew at ourselves: our genome; language; music; "knowledge"; and, above all, the mystery of our intelligence.
Cross-listed as EGR116
Prerequisite(s): 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.
COS231-236 - An Integrated, Quantitative Introduction to the Natural Sciences I-IV
See ISC231-236
COS280 - Computational Linguistics
See LIN280
COS306 - Introduction to Logic Design
COS314 - Introduction to Computer Music
See MUS314 (Department of Music)
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.
COS320 - Compiling Techniques (Spring)
The principal algorithms and concepts associated with translator systems. Topics include lexical analysis, syntactic analysis, parsing techniques, symbol table management, code generation and optimization, run time system design, implementation issues related to programming language design. Course will include a large-scale programming project utilizing the above topics. Three lectures.
Prerequisite(s): 217 and 226 or instructor's permission.
COS323 - Computing for the Physical and Social Sciences (Spring)
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.
COS325 - Transforming Reality by Computer (also MUS 315) (Fall)
Capturing and transforming sound by computer for artistic purposes. Emphasis is on the studentNULLs own creative use of aural material from the real world, on providing a basic foundation in the signal processing theory and technique most useful for computer music, and on the interaction between the artistic and scientific aspects of the endeavor. Two 90-minute lectures, one preceptorial, one laboratory.
Prerequisite(s): COS 217 and MAT 104.
COS333 - Advanced Programming Techniques (Spring)
The practice of programming. Emphasis is on the development of real programs, writing code but also assessing tradeoffs, choosing among design alternatives, debugging and testing, and improving performance. Issues include compatibility, robustness, and reliability, while meeting specifications. Students will have the opportunity to develop skills in these areas by working on their own code and in group projects. Two 90-minute lectures.
Prerequisite(s): 217 and 226 (as corequisite).
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.
Prerequisite(s): COS 126 and MAT 200 or 202 or 204.
COS342 - Introduction to Graph Theory
COS375 - Computer Architecture and Organization
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.
COS398 - Junior Independent Work (B.S.E. candidates only) (Spring)
Offered in the spring, 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.
COS423 - Theory of Algorithms (Spring)
Design and analysis of efficient data structures and algorithms. General techniques for building and analyzing algorithms. Introduction to NP-completeness. Two 90-minute lectures.
Prerequisite(s): 226 and 341 or instructor's permission.
COS425 - Database and Information Management Systems (Fall)
Theoretical and practical aspects of database systems and systems for accessing and managing semi-structured information (e.g. Web information repositories). Topics include: relational and XML models, storage and indexing structures,query expression and evaluation, concurrency and transaction management, search effectiveness. Two 90-minute lectures.
Prerequisite(s): 217 and 226.
COS426 - Computer Graphics (Spring)
The principles underlying the generation and display of graphical pictures by computer. Hardware and software systems for graphics. Topics include: hidden surface and hidden line elimination, line drawing, shading, half-toning, user interfaces for graphical input, and graphic system organization. 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.
COS432 - Information Security (Fall)
Security issues in computing, communications, and electronic commerce. Goals and vulnerabilities; legal and ethical issues; basic cryptology; private and authenticated communication; electronic commerce; software security; viruses and other malicious code; operating system protection; trusted systems design; network security; firewalls; policy, administration and procedures; auditing; physical security; disaster recovery; reliability. 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.
Cross-listed as MAT443 (Department of Mathematics) Two 90-minute lectures.
Prerequisite(s): 226 and 341 recommended, but other interested students are encouraged to contact the instructor.
COS435 - Information Retrieval, Discovery, and Delivery (Spring)
This course studies both classic techniques of indexing documents and searching text, and also new algorithms that exploit properties of the World Wide Web, digital libraries, and multimedia collections. There is significant emphasis on current methods employed by Web search engines, including methods of employing user profiles to enhance search results. Pragmatic issues of handling very large amounts of information that may be widely dispersed - caching, distributed storage, and networking technology - are also covered.
Prerequisite(s): COS226
COS436 - Human-Computer Interface Technology (Fall)
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.
Cross-listed as ELE460 (Department of Electrical Engineering)
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.
COS444 - Internet Auctions: Theory and Practice (Spring)
The goal of this course is to connect auction theory to real-world auctions. Basic results will be derived and illustrated with experiments in class and observations of behavior on the Internet. Topics include: current Internet auctions, Vickrey auctions, dominant strategies, equilibrium behavior, revenue equivalence, optimal auctions, multi-unit auctions, efficiency, mechanism design, risk aversion, spite, collusion, wars, fraud, ethical and legal considerations.
Prerequisite(s): COS 226 and 217; or ECO 310; or instructor's permission.
COS451 - Computational Geometry (Spring)
Introduction to basic concepts of geometric computing, illustrating the importance of this new field for computer graphics, solid modelling, robotics, databases, pattern recognition, and statistical analysis. Algorithms for geometric problems. Fundamental techniques, for example, convex hulls, Voronoi diagrams, intersection problems, multidimensional searching. Two 90-minute lectures.
Prerequisite(s): 226 and 341, or equivalent.
COS455 - Introduction to Genomics and Computational Molecular Biology
COS461 - Computer Networks (Spring)
This course studies computer networks and the services built on top of them. Topics include packetswitch and multi-access networks, routing and flow control, congestion control and quality-of-service, Internet protocols (IP, TCP, BGP), the client-server model and RPC, elements of distributed systems (naming, security, caching) and the design of network services (multimedia, peer-to-peer networks, file and Web servers, content distribution networks). Two 90-minute lectures.
Prerequisite(s): 217.
COS462 - Design of Very Large Scale Integrated (VLSI) Systems (see ELE 462)
COS463 - Computer-aided Design of Digital Systems
COS475 - Computer Architecture
COS487 - Theory of Computation (Fall)
Formal models of computation: finite automata and Turing machines. Universality Theorem and the Church-Turing Thesis. Computability Theory ("What can or cannot be computed?") and Complexity Theory ("How efficient can a certain computation be?"). NP-completeness and PSPACE-completeness. An introduction to complexity issues in application areas such as robotics, graphics, compilers, and computer security.
Cross-listed as MAT447 (Department of Mathematics) Two 90-minute lectures.
Prerequisite(s): 341 or instructor's permission.
COS494 - Special Topics in Artificial Intelligence (Spring)
The study of theoretical and pragmatic aspects of one or two of the following topics: machine learning, intelligent scientific computation, qualitative physics, knowledge representation, nonmonotonic reasoning, or reasoning about uncertainty. Two 90-minute classes.
Prerequisite(s): 402 or instructor's permission.
COS495 - Special Topics in Computer Science (Fall, Spring)
These courses cover one or more advanced topics in computer science. The courses are offered only when there is an opportunity to present material not included in the established curriculum; the subjects vary from term to term. Three classes.
COS496 - Special Topics in Computer Science
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.
COS498 - Senior Independent Work (Spring)
Offered in the spring, 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.