Computer Science Course Descriptions

March 2002

The Department of Computer Science offers a wide variety of regular courses, as well as special topics courses and independent study courses. Courses at the 400 level are generally taken by juniors and seniors but are commonly taken by graduate students. Courses at the 500 level are graduate level courses but are commonly taken by juniors and seniors. Research seminars are intended primarily for doctoral students and master's students engaged in research.

 

CS 100. Introduction to Computing Tools
This course introduces the use of computer and network tools in support of individual and collaborative undergraduate studies. Students learn through labs how to use popular software: electronic mail, resources on the World Wide Web, text editing, spreadsheets, power point presentations, image editing, web page composition, basic systems administration. Credit 1 unit.

CS 101G. Computer Science I
Same as L44 Ling 101G
A fast-paced introduction to software concepts and implementation, emphasizing problem solving through abstraction and decomposition. Introduces processes and algorithms, procedural abstraction, data abstraction, encapsulation, and inheritance. Recursion, iteration, and simple data structures are covered.  Representation invariants, loop invariants, and exception handling are used as techniques for writing correct and robust programs.  The impact of data representation on performance is discussed but not emphasized.  Concepts and skills are mastered through challenging programming projects, many of which employ graphics to enhance conceptual understanding.  Java, an object-oriented programming language, is the vehicle of exploration. Prerequisites: Comfort with algebra and geometry at the high school level is assumed.  Patience and good planning, organization, and problem solving skills will help you to succeed.  Prior programming experience is helpful, but not necessary. Credit 4 units.

CS 102G. Computer Science II
CS 102 builds on CS101's introduction to software systems as collections of communicating components.  CS102 emphasizes more sophisticated uses of object-oriented concepts (inheritance, polymorphism, method overloading, and multiple inheritance of interfaces) and techniques for managing communication among software components.  An introduction to packages, file I/O, parsing, graphical user interfaces, exception handling, threads, concurrency, synchronization, and network programming is provided.  Algorithms and data structures are presented as needed to support discussion of these topics.  Concepts and skills are mastered through software projects, many of which employ graphics to enhance conceptual understanding. Java, an object-oriented programming language, is the vehicle of exploration.  Prerequisite: CS 101G or equivalent. Credit 4 units.

CS 120. Undergraduate Seminar
The CS120 undergraduate seminar is intended for freshmen who have completed CS101 and are interested in learning more about research opportunities in computer science. Faculty presentations of research and hands-on team projects will expose students to major technologies and exciting research directions in several fields of computer science, including algorithm design, networking, and artificial intelligence. Students will get the opportunity to meet researchers at the forefront of their fields, and learn how to become involved with their research.  Prerequisite: CS 101G Credit 1 unit.

CS 136G. Introduction to Computing
A workshop course (lectures and supervised laboratory sessions) covering the fundamental organization and operating principles of digital computers and the systematic design and development of well-structured programs. After an intensive exposure to algorithmic principles and programming techniques and practices using the JAVA language, students learn about a computer's internal structure through the use of a simple Von Neumann machine simulator. Credit 4 units.

CS 142. Computers and Society
An introduction to social, legal, ethical, and economic issues related to computing.  A broad range of topics will be covered including the use of computers in society, risks, privacy, computer crime, growth and funding of the Internet and intellectual property laws.  No prerequisites. No math or computer programming is required.  Credit 2 units.

CS 152. Internet Applications
Designed for non-CS majors from freshmen to seniors to study the Internet technologies applied in the areas of personal communication and e-commerce. Topics covered are: web site planning, designing display and navigation, gathering and preparing elements, selecting tools, assembling the pages, testing and posting the site, HTML basics, tables and frames, secure transactions, and interactive web page design through forms and CGI scripting. Hands-on experience in designing a web site for a small business enterprise. No prerequisites. No math or computer programming is required. Two textbooks are required. Weekly lab works are mandatory. Credit 3 units.

CS 160. Web Development
This comprehensive course does not assume prior programming background or web design experience. Explores the elementary principles that go into designing, creating, and publishing an effective web site. Topics include the production process, design metaphors, interface/information design, page layout concepts, graphics preparation, color theory, development tools, HTML, style sheets, basic scripting techniques, and site maintenance/marketing strategies. Credit 3 units.

CS 201. Formal Foundations of Computer Science
Introduces elements of logic and discrete mathematics that allow reasoning about computational structures and processes. Generally, the areas of discrete structures, proof techniques, and computational models are covered. Topics typically include propositional and predicate logic; sets, relations, functions, and graphs; proof by contradiction, induction, and reduction; and finite state machines and regular languages. Prerequisite: CS 101G or other introductory programming background. Credit 3 units.

CS 241. Algorithms and Data Structures
Study of fundamental algorithms, data structures, and their effective use in a variety of applications.  Emphasizes importance of data structure choice and implementation for obtaining the most efficient algorithm for solving a given problem.  A key component of this course is the worst-case asymptotic analysis, which provides a quick and simple method for determining the scalability and effectiveness of an algorithm. Topics covered generally include: asymptotic analysis, divide-and-conquer algorithms, sorting algorithms, decision tree lower bound technique, hashing, binary heaps, skip lists, B-trees, basic graph algorithms. Prerequisites: CS 101G, and CS 201 (or some basic discrete mathematics background) is strongly recommended. Credit 3 units.

CS 242. Programming Skills Workshop
Provides an overview of practical implementation skills to help beginning C++ programmers.  Topics include compilation and linking, memory management, pointers and references, using code libraries, testing and debugging. The course will be offered as a series of three all-day Saturday sessions. Prerequisites: CS102G.  Enrollment limited to CS majors only. Credit 1 unit.

CS 260M. Digital Computers I: Organizational and Logical Design
Same as CoE/EE 260M
Digital computers and digital information-processing systems; exposure to machine language programming; Boolean algebra, principles and methodology of logic design; introduction to CAD tools for digital logic design, including hardware description languages and logic simulation; design of common digital circuit building blocks; memory subsystems; programmable logic; computer organization and control; arithmetic unit design. Occasional laboratory exercises. Prerequisites: CS 101G or 136G.

CS 265. Introduction to Computing and Computer Applications
Basic architectural components of computers and networks and their functions in a state-of-the-art client-server computing environment; introduction to the disciplined development of computer programs and problem solving;  the development and importance of numerical methods in analyzing solutions to problems when traditional tools of analysis do not apply.  Using the C++ or FORTRAN language and software tools and libraries, students design and implement a variety of programs covering a broad spectrum of nontrivial computer applications. Use of high-level tools for calculus/algebraic analysis. Corequisite: Math 217. Credit 3 units.

CS 306S. Processing Systems and Structures
Same as CoE 306S.
Introduction to the hardware and software foundations of computer processing systems.  Examines the process whereby computer systems manage, interpret, and execute applications.  Covers fundamental algorithms for numerical computation, memory organization and access, storage allocation, and the sequencing and control of peripheral devices.  Weekly laboratories, exercises, and a final laboratory project.  Prerequisites: CS 101G or 136G. Credit 3 units.

CS 313A. Artificial Intelligence Laboratory
Same as E61 CS 513A.
Project course in artificial intelligence. Students are challenged with new design problems in teams and asked to present design ideas and alter existing code. Students integrate solutions to create an intelligent agent in simulated worlds faced with classic AI problems in natural language processing, reasoning, vision, speech, organization of expert knowledge, planning, and/or learning. Prerequisites: CS 102G and 201. Credit 3 units.

CS 333S. Distributed Applications
A hands-on introduction to distributed algorithms and applications through independent and group projects.  Several distributed application paradigms are explored.  Possible topics include client-server applications, distributed simulations, computer-supported collaborative work, distributed pipelines, and distributed multiplayer games. No prior experience in distributed computing is assumed.  Prerequisites: CS 102G and permission of instructor.  Credit 3 units.

CS 342S. Object-Oriented Software Development Laboratory
Intensive focus on practical aspects of designing, implementing and debugging object-oriented software.  Topics covered include reusing design patterns and software architectures and development, documenting, and testing representative applications using object-oriented frameworks and C++.  Design and implementation based on design patterns and frameworks are central themes to enable the construction of reusable, extensible, efficient, and maintainable software.  Prerequisites: CS 102G and 241. Credit 3 units.

CS 353T. Operations Analysis I
Introduction to the nature of operations research and some of its techniques.  Operations Analysis (Research) is the application of optimal decision making techniques in, and modeling of deterministic and probabilistic systems that originate in real life problems from engineering, business and science.  These problems are characterized by the need to allocate limited resources such as bandwidth in electronic communications networks.  The solutions to many of these problems require linear programming or integer programming methods. Therefore we will learn the necessary background from mathematics which will give us the underlying principles needed to develop and utilize the algorithms and data structures used to solve these problems.  We will emphasize software development and the use of packages and developing skills in modeling and recognition.  Prerequisite: CS 101G, 136G or 504N. Credit 3 units.

CS 362M. Digital Computers II: Architecture
Same as CoE/EE 362M.
Study of interaction and design philosophy of hardware and software for digital computer systems.  Machine organization, data structures, I/O considerations. Comparison of microcomputer architectures. Prerequisite: CS/EE 260M. Credit 3 units.

CS 400. Independent Work
Possible topics may be found in the Undergraduate Research Opportunities Program listing, available in the department office and also at http://www.cs.wustl.edu/cs/urop.html on the World Wide Web. Prerequisite: junior standing.  Credit variable, maximum 3 units.

CS 401. System Administration
An introduction to the automation of system administration tasks: backups, installation, accounts, upgrading, patching, monitoring systems and networks. Other topics to be covered include firewalls, vendors, inventory, support contracts, licensing, capacity planning, security, central vs. distributed systems, cross platform issues. The course is targeted towards seniors. Students will learn to write some scripts in sh, csh, perl and winbatch.  Prerequisites: EP 310, CS 342S, and CS423S. Credit 1 unit.

CS 402. Mathematical Tools for Computer Science
CS402 is a 1 unit class designed to review a variety of math techniques that appear in one or more upper division computer science classes. This class is not a substitute for math classes, but will help students to see the relationships between mathematics and specific problems in computer science. We especially recommend this class for students who want extra practice before tackling graphics, vision or robotics. Topics reviewed are Linear Algebra, Calculus, and Probability and Statistics.  Prerequisites: Math 233 and SSM 326 or Math 320. Credit 1 unit.

CS 421M. Communications Theory and Systems
Same as E65 EE 421.
Introduction to the concepts of transmission of information via communication channels.  Amplitude and angle modulation for the transmission of continuous-time signals.  Analog-to-digital conversion and pulse code modulation.  Transmission of digital data.  Introduction to random signals and noise and their effects on communication.  Optimum detection systems in the presence of noise.  Elementary information theory.  Overview of various communications technologies such as radio, television, telephone networks, data communication, satellites, optical fiber, and cellular radio.  Prerequisites: EE 379 and SSM 326A.  Credit 3 units.

CS 422S Operating Systems Organization
Same as E91 CoE 422S.
Exploration of operating systems as managers of shared local and remote resources.  Using UNIX and Windows NT as experimental frameworks, students study algorithms and data structures that support essential operating systems services.  Concepts are reinforced through programming exercises and comparative studies.  Topics include: time sharing and real-time scheduling of processes and threads, networking, memory management, virtual memory, device management, concurrent programming, file system organization, and distributed object computing. Prerequisites: CS 342S. Credit 3 units.

CS 423S. Introduction to Computer Networks
Same as CoE 423S.
An introduction to the principles and practice of communicating data. The ISO-OSI layered model is introduced and used as a framework for examining computer communication.  Topics: physical aspects of reliable and efficient transmission; protocol design and analysis; assessment of network performance; datalink, routing and transport protocols.  A small number of exercises supplement lectures and provide experience with computer communications programming.  Prerequisite: CS 306S or 362M. Credit 3 units.

CS 427M. Embedded Computing
Same as CoE/EE 427M.
Introduces the issues, challenges, and methods for designing embedded computing systems – systems designed to serve a particular application, which incorporate the use of digital processing devices.  Example embedded systems include VCRs, PDAs, cellular phones, appliances, automobiles, toys, radar, networking routers, etc.  Emphasis is given to aspects of design that are distinct to embedded systems.  The course examines hardware, software, and system-level design.  Hardware topics include microcontrollers, Harvard architecture, memory hierarchy, and I/O (A/D and D/A conversion).  Software issues include languages, run-time environments, and algorithm design.  System-level topics include real-time operating systems, scheduling, correctness, performance, and multi-processor systems.  Prerequisites:  CoE/CS/EE 362M.  Credit 3 units.

CS 431S Translation of Computer Languages
The theory of language recognition and translation is introduced in support of compiler construction for modern programming languages. Topics include syntactic and semantic analysis, symbol table management, code generation, and runtime libraries.  A variety of parsing methods is covered, including top-down and bottom-up.  Machine problems culminate in the course project, for which students construct a working compiler. Prerequisites: CS 102G, CS 201, and 241. Credit 3 units.

CS 441T Advanced Algorithms
Same as E61 CS 539T.
Provides a broad coverage of fundamental algorithm design techniques with the focus on developing efficient algorithms for solving combinatorial and optimization problems.  In particular, greedy algorithms and dynamic programming are studied.  Also linear programming and basic duality are briefly covered. Along with having the ability to develop an efficient algorithm to a problem, it is important to determine when a problem is hard and thus unlikely to have any efficient solution.  The topic of NP-completeness and reducibility meets this goal.  For problems that have no efficient algorithms, we then study approximation algorithms.  Other topic covered generally include: median finding, adversary lower bound technique, parallel computation, randomized algorithms, and an introduction to cryptography.  Prerequisites: CS 201 and CS 241. Credit 3 units.

CS 453A Computer Graphics
Introduction to computer graphics. Input, representation, manipulation, and display of geometric information. Two-dimensional display of three-dimensional objects: perspective, hidden surface, shading, animation. Display and input devices. Issues in designing interactive graphics systems. Issues in building three-dimensional renderers. Students develop interactive graphics programs with a standard graphics package and using various graphics input and output devices. Prerequisite: CS 342S. Credit 3 units.

CS 455S Programming Systems and Languages
A systematic study of the principles, concepts, and mechanisms of computer programming languages: their syntax, semantics, and pragmatics; the processing and interpretation of computer programs; programming paradigms; and language design.  Illustrative examples will be selected from a variety of programming language paradigms. Prerequisites: CS 102G, CS201, and CS 241. Credit 3 units.

CS 456S Software Engineering Workshop
An introduction and exploration of concepts and issues related to large-scale software systems development.  Areas of exploration include technical complexities, organization issues, and communication techniques for large-scale development.  Students participate through teams emulating industrial development. The project covers the principal system development life-cycle phases from requirements analysis, to software design, and to final implementation.  Issues relating to real-time control systems, human factors, reliability, performance, operating costs, maintainability and others are addressed and resolved in a reasonable manner.  Prerequisite: CS 342S. Credit 3 units.

CS 462M. Digital Computers III: Computation Structures
Same as E65 CoE/EE 462M.
Introduction to ALU design: addition, subtraction, multiplication, and division.  Direct and iterative approaches for multiplication, including Wallace trees.  Synchronization.  Introduction to modern design methodologies.  Students use a commercial CAE/CAD system for schematic capture and simulation while designing a selected computation system.  Prerequisites: CS 306S and 362M.  Credit 3 units.

CS 465A. Numerical Methods
Same as E68 SSM 465A.
Introduces current numerical methods: iterative methods, roots of polynomials, interpolation, numerical differentiation and integration, numerical solution of ordinary differential equations, application to numerical solution of physical and engineering problems. Prerequisites: Math 217; CS 101G, 136G, or 265; and sophomore standing.

CS 467A. Management Information Systems I
Introduction to the use of computing and information systems in organizations and to problems of analysis, design, implementation, and management of information systems. The role of technology and the organizational forms and processes needed to effectively apply technology in organizations is contrasted with the role of management and staff in directing and guiding information systems activities. The use of advanced systems development technologies such as application generators complements material on systems design, control, database methods, and systems organization. Prerequisites: CS 101G, 136G, or M.B.A standing. Credit 3 units.

CS 468A. Management Information Systems II
The design and implementation of computer-based information systems with emphasis on database and transaction aspects of large-scale information systems. The basics of database management, including data storage structures and large-file manipulations. Architecture of relevant database management systems. Database administration; data administration. A familiarization with COBOL is used to introduce information systems, implementation strategies, and transaction processing. Fourth-generation transaction processing systems are used to illustrate current directions in large corporate computer organizations. Data analysis; data models, database design, transaction systems design; design and implementation strategies. Prerequisite: CS 241. Credit 3 units.

CS 493-494. Senior Project
Implementation of a substantive project on an individual basis, involving one or more major areas in computer science. Problems pursued under this framework may be predominantly analytical, involving exploration and extension of theoretical structures, or may pivot around the design/development of solutions for particular applications drawn from areas throughout the University and/or community. In either case, the project serves as a focal point for crystallizing the concepts, techniques, and methodologies encountered throughout the curriculum. Students intending to take CS 493-494 must submit a project proposal for approval by the department during the spring semester of the junior year. Prerequisite: senior standing. Credit 3 units each.

CS 499. Undergraduate Honors Thesis
Working closely with a faculty member, the student investigates an original idea (algorithm, model technique, etc.), including a study of its possible implications, its potential application, and its relationship to previous related work reported in the literature. Contributions and results from this investigation are synthesized and compiled into a publication-quality research paper presenting the new idea. Prerequisites: a strong academic record and permission of instructor. Credit 3 units.


Graduate Courses

There are two levels of graduate courses in the Department of Computer Science: 500-level courses are available to all juniors, seniors and graduate students in the department.

CS 500. Independent Study. Credit 3 units.

CS 501S Advanced User Interface
An introduction to various technologies for human-computer interaction through visual, haptic, and audio channels.  User interface management systems for GUI (graphic user interface) and advanced user interface such as pen and voice.  Object-oriented design and implementation of UI application framework.  Adaptable user interfaces.  An overview of event-oriented end-user programming for user definable user interfaces.  Introduction to visual programming.  First hand design experience through individualized projects. Prerequisite: An introduction to various technologies for human-computer interaction through visual, haptic, and audio channels.  User interface management systems for GUI (graphic user interface) and advanced user interface such as pen and voice.  Object-oriented design and implementation of UI application framework.  Adaptable user interfaces.  An overview of event-oriented end-user programming for user definable user interfaces.  Introduction to visual programming.  First hand design experience through individualized projects.  Prerequisite: CS 342S. Credit 3 units.

CS 502A. Data Security
In this age of Internet computing, there is indeed no place or time at which security does not matter. Protecting vital data from various attacks is always an important part in data systems. This course provides introduction to both theory and practice of data security. The theory part includes conventional crypto-algorithms, public-key crypto-algorithms, hash functions and digital signatures.  The practice part covers important data security tools and applications: Kerberos, SSH, X.509, IP Security, SSL/TLS, and possibly others. This course is self-contained: basic mathematical foundations, e.g., basics of number theory, are covered in the course. Prerequsites: CS 201, CS 342S, and CS 423S is strongly recommended. Credit 3 units.

CS 504N. Programming Concepts and Practice
This introductory course assumes no prior programming background and is intended for graduate students who desire significant programming and program design experience within a modern programming paradigm. Exploration of the enterprise of software design, creation, maintenance, and reuse.  Abstraction as a vehicle for reducing the complexity of problems.  Concepts of object-oriented programming. Internet-related programming including threads.  Design and implementation of nontrivial algorithms in selected application areas. Prerequisites none.  Credit 3 units.  No credit toward CS graduate degree. Credit 3 units.

CS 506T. Introduction to Computational Geometry
Computational geometry is the algorithmic study of problems that involve simple geometric shapes, such as points, lines, and polygons. Such problems are motivated by applications in computer graphics and vision, robotics and animation, visualization, molecular biology, and electronic design automation. This introductory course covers various algorithmic techniques and data structures that are unique to geometric computing, such as convex hull, voronoi diagram, delaunay triangulation, arrangement, range searching, the post office problem, Kd-trees, and segment trees. Algorithms for polygon triangulation, shortest paths, and ray tracing are also covered. Prerequisite:  CS 241. Credit 3 units.

CS 507T. Introduction to Formal Languages and Automata
An introduction to the mathematical theory of languages and grammars. Topics include deterministic and nondeterministic finite state machines, push-down automata, and Turing machines; regular, context-free, context-sensitive and recursive languages; closure properties of languages; the concepts of computability and undecidability. Prerequisite: CS 201. Credit 3 units.

CS 511A. Artificial Intelligence I
The discipline of artificial intelligence (AI) is concerned with building systems that think and act like humans or rationally on some absolute scale.  This course is an introduction to the field, with special emphasis on sound modern methods.  The topics include knowledge representation, problem solving via search, game playing, logical and probabilistic reasoning, planning, machine learning (decision trees, neural nets, reinforcement learning, and genetic algorithms) and machine vision.  Programming exercises will concretize the key methods. The course targets graduate students and advanced undergraduates.  Evaluation is based on written and programming assignments, a midterm exam, and a final exam. Prerequisite: CS 102G, CS 201, and CS 241, or permission of the instructor. Credit 3 units.

CS 513A. Applied Knowledge Engineering
Same as E61 CS 313A.
Project course in artificial intelligence. Students are challenged with new design problems in teams and asked to present design ideas and alter existing code. Students integrate solutions to create an intelligent agent in simulated worlds faced with classic AI problems in natural language processing, reasoning, vision, speech, organization of expert knowledge, planning, and/or learning. Prerequisites: CS 102G and 201. Credit 3 units.

CS 514N. Fundamentals of Computer Science
This course, intended for graduate students without a computer science background, covers the core components seen in a computer science undergraduate curriculum on which our graduate level courses rely.  Topics include fundamental algorithms, data structures, proof techniques, computational models, machine organization, and software design and implementation. Prerequisites: graduate standing; CS 504N or prior programming experience; some mathematical sophistication highly desirable. No credit towards CS graduate degree. Credit 3 units.

CS 515A. Natural Language Processing
Study of techniques for computer processing of natural language. Emphasis will be placed on syntactic processing, semantic interpretation, and the study of discourse structure. Linguistic models and formalisms relevant to this task will be discussed. Additional topics will vary between offerings. Prerequisite: CS 511A. Credit 3 units.

CS 516A. Multiagent Systems
Multiagent systems research, a subfield of artificial intelligence, studies the interactions of computational agents.  These agents can represent real world parties, and they can have different preference structures.  A key research goal is to design open distributed systems in a principled way that leads to globally desirable outcomes even though every participating agent only considers its own good and may act insincerely.  The course covers relevant results in AI, game theory, market mechanisms, voting, auctions, coalition formation, and contracting.  Effects of different computational limitations of the agents are discussed.  Prerequisite: CS 102G, CS 201, CS 241, or permission of the instructor. Credit 3 units.

 CS 517T. Mathematics of Algorithm Analysis
Mathematical tools and techniques used in analyzing algorithms and data structures. Topics covered include general combinatorics, generating functions, recurrence relations, rook polynomials, and convergence of sequences. The course will emphasize the development of these tools and their application to the analysis of algorithms and data structures. Prerequisite:  CS 201 and Math 233 or its equivalent. Credit 3 units.
 

CS 518T. Heuristic Search and Constraint Processing
The course has three main parts and covers the main topics of heuristic search and constraint processing.  The first part focuses on single-agent heuristic search problems and algorithms.  The second part deals with adversary game playing problems, strategies and algorithms.  The third part considers constraint problems and constraint processing techniques.  The course will cover basic and advanced search techniques as well as their performance analysis.  It will also provide ample examples of real-world problems and applications.  The students will have opportunity to write programs to solve some selected search problems.  Prerequisites: CS 241 and CS 511A. Credit 3 units.

CS 519A. Computer Visioin
This course studies the theory and practice of extracting information from images and video.  Topics will include the classical concepts of the geometry of image and video capture, creation of image and video mosaics, and techniques for creating descriptions of 3D objects and scenes.  The course will also include an overview of current vision research topics, including video textures, non-Lambertian surface modelling, and multi-camera and catadioptic imaging systems.  The course includes a final project, in which individual or small groups of students will define an image analysis task and implement and test it on real image data.  Prerequisites: CS 241 and linear algebra. Credit 3 units.

 CS 521M. Computer Systems Organization
An exploration of the central issues in computer architecture: instruction set design, addressing and register set design, control unit design, microprogramming, memory hierarchies (cache and main memories, mass storage, virtual memory), pipelining, bus organization, RISC (Reduced Instruction Set Computers), and CISC (Complex Instruction Set Computers). Architecture modeling and simulation using VHDL. Prerequisites: CS 306S and 260M. Credit 3 units.

CS 523S. Operating Systems.
Review of the standard operating system concepts: process and storage management, file systems, and input/output.  Overview of distributed operating systems.  Interprocess communication models (message passing, remote procedure call, distributed object computing, and shared memory); process management and synchronization; naming; distributed and networked file system; deadlock detection and avoidance.  Case studies of distributed operating systems and communication middleware, such as MACH, Amoeba, Solaris, Windows NT, CORBA, and others. Prerequisite: CS 422S and significant C++ programming experience. Credit 3 units.

CS 524S. Advanced Topics in Networking
Advanced topics in networking, especially relevant to the future of the Internet.  Topics include: techniques for high performance networking, fair queuing and resource allocation protocols, scalable routing protocols that encompass mobility and multicast including IPv6, the MBONE, and Mobile IP, techniques for reliable multicast, and techniques for fault-tolerance, security and accounting.  Prerequisites: CS 423 or CS 533 or permission of instructor. Credit 3 units.

CS 527A. Machine Learning
The field of machine learning is concerned with the question of how to construct computer programs that automatically improve with experience.  Recently, many successful machine learning applications have been developed, ranging from data-mining programs that learn to detect fraudulent credit card transactions, to information-filtering systems that learn users' reading preferences, to autonomous vehicles that learn to drive.  There have also been important advances in the theory and algorithms that form the foundation of this field.  This course will provide a broad introduction to the field of machine learning. Credit 3 units.

CS 530A. Information Systems and Database Design
A study of data models and the database management systems that support these data models. The design theory for databases is developed and various tools are utilized to apply the theory. General query languages are studied and techniques for query optimization are investigated. Integrity and security requirements are studied in the context of concurrent operations on a database, where the database may be distributed over one or more locations. The unique requirements for engineering design databases, image databases, and long transaction systems are analyzed.  Prerequisite: CS 201 and CS 241. Credit 3 units.

CS 531S. Theory of Compiling and Language Translation
Algorithms and intermediate representations for automatic program analysis are examined, with an emphasis on practical methods and efficient engineering of program optimization and transformations. The course includes a thorough treatment of monotone data flow frameworks:  a mathematical model in which most optimization problems can be specified and solved. The course primarily covers optimizations that are applicable to any target architecture; however, optimizations specific to parallel, distributed, and storage-hierarchical systems are also discussed. Prerequisite: CS 431S or 455S. Credit 3 units.

CS 533S. Protocols for Computer Networks
The course is concerned with the design, specification, performance analysis, and implementation of protocols used in existing and emerging computer networks. Local and wide area network access protocols, such as Carrier Sense Multiple Access/Collision Detect (CSMA/CD), token access, X.25, and Q.93B.  Internetworking with Internet Protocol (IP). Frame-relay and Switched Multimegabit Data Service (SMDS) as proposed internetworking solutions.  Transport protocols such as User Datagram Protocol (UDP), Transmission Control Protocol (TCP), and TP4. Proposed high speed transport protocols such as eXpress Transport Protocol (XTP), Netblt, and Versatile Message Transport Protocol (VMTP). Host-network interfacing. Hardware and software protocol implementation models. Prerequisite: CS 422S or permission of the instructor. Credit 3 units.

CS 535M. Acceleration of Algorithms in Reconfigurable Logic
As the Internet continues to be used for more applications, computer networks will perform more functions.  To implement these new functions at full speed, much of the data processing operations will be implemented in hardware.  This class explores the techniques of migrating networking algorithms from software to hardware.  Machine problems will be implemented that cover processing and queueing data in Field Programmable Gate Arrays (FGPAs). Prerequisites: Experience with hardware design (CS/CoE/EE 462M or equivalent) and experience with computer networks (CS423S, CS533S, or equivalent). Credit 3 units.

CS 536M. Reconfigurable System on Chip Design
Complete computing and networking systems can be implemented within a single integrated circuit.  Such a system consists of multiple application modules interconnected by common infrastructure components.  This class will explore the challenges to design and test of modules and components for System-on-Chip (SoC).  The course will focus on techniques to design components on the system reusable.  Exercises will be given to synthesize and simulate the components using modern Computer Aided Design (CAD) tools.  Resulting systems will be prototyped in reprogrammable hardware. Prerequisites: Experience with hardware design (CS/CoE/EE 462M or equivalent) and experience with computer networks (CS423S, CS533S, or equivalent). Credit 3 units.

CS 459T Advanced Algorithms
Same as E61 CS 441T.
Provides a broad coverage of fundamental algorithm design techniques with the focus on developing efficient algorithms for solving combinatorial and optimization problems.  In particular, greedy algorithms and dynamic programming are studied.  Also linear programming and basic duality are briefly covered. Along with having the ability to develop an efficient algorithm to a problem, it is important to determine when a problem is hard and thus unlikely to have any efficient solution.  The topic of NP-completeness and reducibility meets this goal.  For problems that have no efficient algorithms, we then study approximation algorithms.  Other topic covered generally include: median finding, adversary lower bound technique, parallel computation, randomized algorithms, and an introduction to cryptography.  Prerequisites: CS 201 and CS 241. Credit 3 units.

CS 540T. Formal Concepts in Computer Science
An introduction to the mathematical, logical, and linguistic concepts that underlie the formal aspects of computer science. An overview of naive set theory (relations, orderings, Peano's postulates, cardinality, Cantor's theorem), logic (axiomatic systems, proof theory, model theory) and abstract algebra (semigroups, morphisms). Prerequisite: permission of instructor. Credit 3 units.

CS 541T. Algorithms and Programs
This course is concerned with the design and analysis of efficient algorithms, focusing principally on algorithms for combinatorial optimization problems. A key element in the course is the role of data structures in algorithm design and the use of amortized complexity analysis to determine how data structures affect performance. The course is organized around a set of core problems and algorithms, including the classical network optimization algorithms, as well as newer and more efficient algorithms. This core is supplemented by algorithms selected from the recent technical literature.  Prerequisite: CS 241. Credit 3 units.

CS 543T. Computational Molecular Biology
Same as L41 Biol 5497.

CS 545S. Modular Programming
Modular programming and object-oriented programming (OOP) in Java.  Java is compared with other modular programming languages such as C++, Smalltalk and Oberon.  Programming paradigms such as OOP, dataflow and concurrent programming are compared.  Through the final project, students learn how to apply the principles of modular programming in constructing medium sized software. Prerequisite: CS455S . Credit 3 units.

CS 547T. Algorithms for Computational Biology
Same as L41 Biol 5474.
This course will focus on how to sequence and analyze a genome, emphasizing computational and algorithmic issues.  After taking this course, you should be able to parachute into a genome informatics group, understand what's going on, and do something useful on your first day.  Topics covered include: the essential biology, the essential probability theory, base calling and quality clipping, genome assembly (including aspects of sequence alignment), repeat masking, predicting protein-coding genes (including Hidden Markov Models and comparative genomics approaches), predicting gene function by comparing to proteins of known function, basic RNA gene finding, and advanced topics in sequence alignment.  This course will include a combination of paper-and pencil homework assignments and programming labs.  Prerequisites: CS 241 or CS 514N or Bio 5495. Credit 3 units.

CS 549A. Neural Networks - Foundations
Introduction to neural computation. Fundamental concepts behind various models of neural networks. Back-Propagation, Hopfield Nets, and Boltzmann machines models will be covered in detail. We will study neural networks as intelligent digital systems with fine-grained parallelism. Potentials and limitations of neural networks will be covered. Prerequisites: mathematical maturity; CS 241, CS 514N, or permission of instructor. Credit 3 units.

CS 550A. Mobile Robotics
An introduction to the design and implementation of intelligent mobile robot systems.  This course will cover the fundamental elements of mobile robot systems from a computational standpoint.  Issues such as software control architectures, sensor interpretation, map building and navigation will be covered, drawing from current research in the field.  Students will also design and build a small mobile robot and program it to perform simple tasks in real-world environments.  Prerequisites: CS 101G, and SSM 326A, Math 320 or permission of instructor.

CS 551A. Robotic Manipulators
The programming and control of robot manipulators and robot manufacturing systems. Introduction to system organizations, kinematic models, mathematics of world models. Sensors and sensor interactions. Programming techniques, with examples from current robot system languages. Model based and task oriented specification of actions. Laboratory work with real or simulated robot systems.  Prerequisite: Engineering math (SSM 317 or equivalent) and programming competence, or permission of instructor. Credit 3 units.

CS 552A. Advanced Computer Graphics
In this course you will be introduced to current research in graphics. Topics include: surface modeling (subdivision surfaces, splines, implicit surfaces), animation (physically-based, human figure), rendering (image-based, volume, point-based, non-photorealistic) and mesh simplification. Class work includes two small individual projects and a large, small-group project implementing current and new research.  Prerequisites: CS 201 and 453A. Credit 3 units.

CS 553S. Advanced Mobile Robotics
This course covers advanced topics from the theory and practice of mobile robotics.  Students will read, present and discuss papers from the current research literature.  There will be a substantial small group programming project.  Students will select one of the papers presented in class and implement its core ideas on one of the department's research robot platforms.  Prerequisites: CS550A and strong programming skills (preferably in C++). Credit 3 units.

CS 554A. Digital Image Processing
An introduction to the use of computers in the processing of digital images. Topics to be discussed include: acquisition of digital images, hardware and software for the display of digital images, the role of visual psychophysics in image processing, transform analysis and filtering, image restoration and reconstruction, and pattern recognition. Frequent laboratory exercises will be used to implement processing algorithms and build intuition in evaluating image quality. Prerequisites: CS 241 and SSM 317. Credit 3 units.

CS 557M. Computer Systems Analysis
Same as E65 EE 557A.
Introduction to the basic tools of computer and communications systems analysis and evaluation. Deterministic and stochastic modeling concepts are presented. Queueing theory and discrete event (DES) simulation methods are studied with application to a variety of examples drawn from the computer and communications performance evaluation literature. A standard DES language is used in modeling and simulation studies. Topics of current interest such as computer input/output models, mass memory, bus models, and communications network models are discussed. A modeling project is typically required. Prerequisites: CS 101G or CS136G, and 260M or their respective equivalents.

CS 561T. Graphs and Networks
Graphs, properties of graphs, and algorithms for extracting information about graphs are studied. Graphs studied include: simple graphs, directed and undirected graphs, tree, planar graphs, bipartite graphs, Euler and Hamiltonian graphs; networks and flow. Algorithms studied include: shortest path, minimal spanning trees, min cut/max flow, and depth first and breadth first search. Concepts studied include: connectivity, edge and vertex colorings, chromatic number, dual graphs, isomorphisms, cut edges and vertices, and the use of graphs for solving problems. Prerequisite: CS 201. Credit 3 units.

CS 562S. Advanced Multi-Paradigm Software Development
Intensive focus on advanced design and implementation of distributed object computing (DOC) software.  Topics covered include reuse of design patterns and software architectures, and developing representative applications using object-oriented frameworks, C++, and CORBA.  Design and implementation based on design patterns and frameworks are central themes to enable the construction of reusable, extensible, efficient, and maintainable DOC software.  Prerequisites: CS342S or graduate standing and familiarity with C++ and CS422S or CS523S. Credit 3 units.

CS 563T. Concurrent Algorithms: Shared Data
Concurrency presents programmers with unprecedented complexity further exacerbated by our limited ability to reason about concurrent computations. Yet, concurrent algorithms are central to the development of software executing on modern multiprocessors or across computer networks.  This course reviews several important classes of concurrent algorithms and presents a formal method for specifying, reasoning about, verifying, and deriving concurrent algorithms.  The selected algorithms are judged to have made significant contributions to our understanding of concurrency. Rigorous treatment of the design and programming process is emphasized. Students entering this course must be familiar with predicate calculus and sequential algorithms.  Upon completion of this course students will be able to reason completely formally about small concurrent programs and to apply systematically and correctly their formal skills to larger problems. Prerequisites: CS 201 and CS 241. Credit 3 units.

CS 564T. Concurrent Algorithms: Message Passing
Distributed algorithms are the protocols by which computers in a distributed system cooperate towards the solution of a problem. Such algorithms must cope with unpredictable communication delays and failures of network components.   The first half of the course will cover the theory of message passing distributed algorithms. We will cover proof techniques, key concepts, useful building blocks, and impossibility results.  The second half of the course will use this conceptual foundation to understand and design algorithms for real systems.  Examples from real systems will be used as case studies. Upon completion of this course, students will have a deeper insight into both distributed algorithms and distributed systems; they should be able to translate this insight into designing real world solutions to problems in distributed computing. Prerequisite: CS 201 and CS 441/539T, or mathematical maturity. Credit 3 units. CS 567I. Seminar in Image Science and Engineering
Same as E65 EE 567I. CS 568. Practicum in Imaging Science and Engineering
Same as E75 EE 568.

CS 569S. Mobile Computing
Internet and wireless communication are two technologies that share the common goal of providing ubiquitous access to distant resources.  Their impact on the social fabric is immediately observable today.  This course is concerned with methods and principles for the development of systems whose components exhibit some form of mobility across networks or within some physical space and require some knowledge about the domain within which the movement takes place.  The course material will cluster around several dominant themes:  the delivery of connectivity to mobile nodes, languages that provide facilities for code migration, computational models that include the notion of locality, and design methods that support the development of new kinds of network applications.  Since much of the work on mobility has its roots in the networking tradition the class will include topics concerned with communication protocols, application support software, the unique characteristics of the wireless communication medium, security, location aware applications, algorithms for implementing basic system services.  Language-related issues will be concerned with constructs, abstractions and software architectures that facilitate the movement of code mostly across existing wired networks.  New models of concurrency and proof techniques will be discussed in an attempt to better understand fundamental differences between distributed computing across a fixed graph structure and new paradigms in which components have a location attribute and may travel across a logical or physical space.  Prerequisites: senior or graduate standing Credit 3 units.

CS 576S. Distributed System Design: Models and Languages
The goal of the course is to familiarize students with basic concepts, associated models, and current trends in distributed computing.  The design of concurrent and distributed systems is an area which is still in its formative stage.  A multitude of models, languages, and methodologies have been put forth by both researchers and practitioners but no dominant approach has emerged so far.  The course starts with a review of a broad range of models of concurrent computation and communication including: shared variables, data flow, object-oriented systems, indeterminate applicative systems, models using synchronous message exchanges, and shared data space.  The objective of the survey is to identify fundamental issues and alternate treatments of these issues both from a theoretical and a practical perspective.  The second part of the course focuses on specialized areas of growing import to the field.  They include well-established ones such as real-time processing and security as well as newly emerging concerns such as mobile computing and multimedia. Prerequisite: CS 201 and CS 241S. Credit 3 units.

CS 577M. Design and Analysis of Switching Systems I
Same as E65 EE 577M.
Switching systems are central components in large communication systems. This course is concerned with the design of practical switching systems and analysis of their performance and complexity. The focus is on switching technology for the Internet, including IP routers and ATM switching systems. The course surveys a variety of architectural alternatives and compares them on the basis of performance and complexity. It also covers engineering considerations in classical space divsion and time division switching systems.   Prerequisites: CS 241 and 260M. Credit 3 units.

CS 579M. Parallel Architectures and Algorithms
Same as E65 EE 579.
A number of contemporary parallel computer architectures are reviewed and compared.  The problems of process synchronization and load balancing in parallel systems are studied. Several selected applications problems are investigated and parallel algorithms for their solution are considered.  Selected parallel algorithms will be implemented in both a shared memory and distributed memory parallel programming environment.  Prerequisites: graduate standing and knowledge of the C programming language.

CS 582T. Computational Learning Theory
Building machines that learn from experience is an important research goal of artificial intelligence.  The area of computational learning theory strives to define formal mathematical models of machine learning that enable rigorous analysis of the performance and efficiency of learning algorithms.  In this course we study the most prominent learning models used in computational learning theory. Within these models we will study the commonly used algorithm design and analysis techniques.  The primary goal of the field is to determine what is efficiently learnable and under what circumstances. For some problems we present learning algorithms that are efficient in their use of both time and data.  Contrasting these positive results, for some problems we present hardness results indicating that no efficient learning algorithm exists. Prerequisites: CS 441T and basic probability background. Credit 3 units.

CS 585S. Software Project Management
An introduction to the issues and basic methods used in managing software development projects. The course will include factors affecting software projects, life-cycle models, project scheduling, size and staffing, progress tracking, software metrics, managing people, and crisis management.  The course will include lectures, hands-on training in selected project management tools, and case studies. In addition, each student will plan and manage a simulated software project. The course is designed to familiarize software engineers and computer scientists to the issues and problems involved in managing software projects. Prerequisite: CS 456S, significant industrial software development or permission of instructor. Credit 3 units.

CS 592A. Digital Representation of Signals
Same as E65 EE 592.
 

CS 593A. Signaling and Control in Communication Networks
Same as E65 EE 593A.

CS 595. Networking and Communications Design Project I
Same as E65 EE 595.
This course is for students who are enrolled in the networking and communications masters program.  Students in this program are expected to complete an individual or small group (up to three students) design project under the supervision of a faculty sponsor.  Students undertaking a project are required to first prepare a short project proposal (3-5 pages) and give a short presentation (30 minutes) to which all students and faculty in the networking and communications program are invited. In the design phase of the project, students carry out a detailed design, identify key implementation decisions and develop a plan for proceeding through the implementation phase, including identification of major steps and assignment of responsibilities to team members.  The design phase ends in a design report and a presentation on the design and implementation plan.  In the final phase of the project, students implement their design, demonstrate the resulting system, evaluate it, document their results in a final report (20-30 pages) and give a final presentation.  Students should plan to complete the first phase at least five months before their intended graduate date and the second phase at least two months before their intended graduation.  Students can register for CS/EE 596 only after completing the first phase and having a faculty sponsor agree to supervise their project. Prerequisite: permission of the program director. Credit 3 units.

CS 596. Networking and Communications Design Project II
Same as E65 EE 596.
This course is for students who have completed the first phase of a design project in CS 595 and have a faculty sponsor who has agreed to supervise their project. In the final phase of the project, students implement their design, demonstrate the resulting system, evaluate it, document their results in a final report (20-30 pages) and give a final presentation.  Students should plan to complete this phase at least two months before their intended graduation. Prerequisites: CS 595 and permission of the program director. Credit 3 units.

CS 598. Master's Project
Students electing the project option for their master's degree perform their project work under this course. Prerequisite: permission of adviser.  Credit variable, maximum 6 units.

CS 599. Masters Research
Prerequisite: permission of adviser.  Credit variable, maximum 6 units.

CS 600. Independent Study
  Credit variable, maximum 9 units.

CS 6701-6706. Research Seminar on Algorithms and Computational Complexity
This seminar is intended for students interested in research in algorithm design and analysis. In each semester a different area of focus is selected.   Recent papers from FOCS, STOC, SODA and other theory conferences and journals are presented. Credit 1 unit.

CS 6721-6726. Research Seminar on Visual Programming
This seminar investigates the possibilities and limitations of visual icon-driven programming languages.  Specific topics include end-user programming, user-definable user interface, object dataflow, and visual database query languages for the internet. Credit 1 unit.

CS 6731-6736. Research Seminar on Distributed System Design
This seminar seeks to examine both fundamental and emerging concepts in concurrency and distribution through the study of seminal papers and recent research results.  Broad topics of interest include models of concurrent computation, mobile computing, programming languages, algorithms, parallel architectures, programming environments, and visualization.  Each semester the seminar emphasizes different themes which reflect the current research interests of the participants or newly emerging concerns in the field of distributed computing. Credit 1 unit.

CS 6741-6746. Research Seminar on Artificial Intelligence
This seminar is intended for students interested in conducting research in the field of artificial intelligence. Each semester is devoted to an in-depth study of one topic, primarily by detailed reading of current research papers. Credit 1 unit.

CS 6781-6786. Research Seminar on Programming Languages
In this seminar we examine topics in the design, translation, and support of programming languages.  The seminar emphasizes modern approaches and emerging technologies, using case studies, research papers, and conference activity.  Students are expected to study, analyze, and present research papers to the seminar class. Credit 1 unit.

CS 6791-6796. Research Seminar on Multimedia Networking
In this research seminar we study some of the techniques that are used in the performance evaluation of telecommunication networks. The objectives of this research seminar are achieved through selective readings from the literature of stochastic processes and broadband telecommunication networks. The participants learn fundamental concepts from the theory of Markov processes, Markov chains, renewal theory and Markov renewal theory. The above topics and related knowledge are utilized in the study of basic papers from the literature of broadband networks. Credit 1 unit.

CS 6801-6806. Research Seminar in Computational Molecular Biology
Same as L41 Biol 5496.
This journal club covers literature on the use of computational techniques to advance biological understanding with an emphasis on genome analysis and functional genomics.  Speakers give a brief background to introduce the topic and then focus on one-two papers from the current literature.  Presentations are given by students, faculty, and post-doctorates. Students receive 1 unit of credit for regular participation and for making a presentation. Credit 1 unit.

CS 6811-6816. Research Seminar on Reconfigurable Hardware
In this seminar, we will review current conference and journal papers related to the design of reconfigurable hardware systems. In particular, we will choose papers that focus on topics related to reconfiguration techniques for systems with Field Programmable Gate Arrays (FPGAs), techniques of migrating algorithms from software to hardware, and study applications for FPGAs in computer networks. Credit 1 unit.

CS 6871-6876. Research Seminar on Software Systems
Operating systems research has recently seen renewed interest in several areas.  This seminar explores some of these new and interesting research areas, with a specific focus on issues related various quality of service topics important for distributed systems.  Particular attention is paid to the implications of how these new ideas will affect our research.  The seminar will cover several noteworthy research operating systems and distributed frameworks which support both the specification and enforcement of resource guarantees and adaptive behavior. Credit 1 unit.

CS 690. Doctoral Research
  Credit variable, maximum 9 units.