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
CS 400. Independent Work
CS 401. System Administration
CS 402. Mathematical Tools for Computer Science
CS 421M. Communications Theory and Systems
CS 422S Operating Systems Organization
CS 423S. Introduction to
Computer Networks CS 427M. Embedded
Computing
CS
431S Translation of Computer Languages
CS 441T Advanced Algorithms
CS
453A Computer Graphics
CS
455S Programming Systems and Languages
CS
456S Software Engineering Workshop
CS 462M. Digital Computers III: Computation Structures
CS 465A. Numerical Methods
CS 467A. Management Information Systems I
CS 468A. Management Information Systems II
CS 493-494. Senior Project
CS 499. Undergraduate Honors Thesis
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
CS 502A. Data Security
CS 504N.
Programming Concepts and Practice
CS 506T. Introduction to
Computational Geometry
CS 507T.
Introduction to Formal Languages and Automata
CS 511A.
Artificial Intelligence I
CS 513A.
Applied Knowledge Engineering
CS 514N.
Fundamentals of Computer Science
CS 515A. Natural Language Processing
CS
516A. Multiagent Systems
CS 517T. Mathematics of Algorithm Analysis
CS
518T. Heuristic Search and Constraint Processing
CS
519A. Computer Visioin
CS
521M. Computer Systems Organization
CS
523S. Operating Systems.
CS
524S. Advanced Topics in Networking
CS
527A. Machine Learning
CS
530A. Information Systems and Database Design
CS
531S. Theory of Compiling and Language Translation
CS
533S. Protocols for Computer Networks
CS
535M. Acceleration of Algorithms in Reconfigurable Logic
CS
536M. Reconfigurable System on Chip Design
CS 459T Advanced Algorithms
CS
540T. Formal Concepts in Computer Science
CS
541T. Algorithms and Programs
CS 543T. Computational Molecular Biology
CS
545S. Modular Programming
CS
547T. Algorithms for Computational Biology
CS 549A. Neural Networks -
Foundations
CS 550A. Mobile
Robotics CS
551A. Robotic Manipulators
CS
552A. Advanced Computer Graphics
CS
553S. Advanced Mobile Robotics
CS
554A. Digital Image Processing
CS 557M. Computer Systems
Analysis
CS
561T. Graphs and Networks
CS
562S. Advanced Multi-Paradigm Software Development
CS 563T. Concurrent Algorithms: Shared Data
CS 564T. Concurrent Algorithms:
Message Passing
CS 569S. Mobile Computing
CS 576S. Distributed System Design: Models and Languages
CS 577M. Design and Analysis of Switching Systems I
CS 579M. Parallel Architectures and Algorithms
CS 582T. Computational Learning Theory
CS 585S. Software Project Management
CS 592A. Digital Representation
of Signals
CS 593A. Signaling and Control in
Communication Networks
CS 595. Networking and Communications Design Project I
CS 596. Networking and
Communications Design Project II
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Same as L41 Biol
5497.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Same as E65 EE 592.
Same as E65 EE 593A.
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.
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.