Computer Science
Baskin School of Engineering
(831) 459-2158
http://www.soe.ucsc.edu
Lower-Division Courses
2. Computer Literacy.
Introduction to how computers work and how to use them. Topics covered include network information systems, text editors, formatting, file and directory system, spreadsheets and databases. Computers as symbol manipulation devices. Introduction to programming concepts and computer languages. Impact of computers on society. Designed for students with little or no experience using computers. Preference is given to students who have not taken other computer engineering or computer science courses. Students cannot receive credit for this course and Computer Engineering 3. (General Education Code(s): PE-T, IN.) The Staff, R. Levinson, N. Polyzotis
5C. Introduction to Programming in C/C++.
Students learn programming and documentation skills as well as algorithmic problem-solving and programming methodologies. Introduces computers, compilers, and editors. Students write small to medium-sized programs. No prior programming experience required, but a mathematics background at the pre-calculus level is assumed. This course and courses 5J and 5P cover similar concepts, but use different programming languages. This course is recommended for students that have a specific desire or need to learn C/C++; others are encouraged to consider taking course 5P or 5J which use languages that provide a gentler introduction to programming. (General Education Code(s): MF, IN.) I. Pohl, C. McDowell, D. Long, S. Brandt
5J. Introduction to Programming in Java. F,W
Introduces programming in Java for students who have no prior programming experience. Students learn programming and documentation skills, as well as algorithmic problem-solving, and programming methodologies. Introduces computers, compilers, and editors. Students write small to medium-sized programs. This course and courses 5C and 5P cover similar concepts, but use different programming languages. Because 5J followed by course 11 is a two-quarter alternative to the accelerated course 12A/L, engineering majors and students planning on continuing the programming sequence are encouraged to take 5J rather than 5C or 5P. Students may not receive credit for 5J taken concurrently or subsequently to course 12A. (General Education Code(s): MF, IN.) S. Brandt, D. Helmbold, C. McDowell
5P. Introduction to Programming in Python. S
Introduces programming in Python, a high-level programming language used in the physical and social sciences and for Internet scripting. Students learn programming and documentation skills, as well as algorithmic problem-solving, coding, and debugging methodologies. Students write programs to solve sample problems drawn from a wide range of disciplines, primarily in the sciences. No prior programming experience is required, but a mathematics background at the pre-calculus level is assumed. This course and courses 5C and 5J cover similar concepts, but use different programming languages. (General Education Code(s): MF, IN.) D. Long, E. Miller
10. Introduction to Computer Science. F,W,S
An overview of the theory, foundations, and practice of computer science with emphasis on what computers can and cannot do, now and in the future. Topics include algorithms and data, correctness and efficiency of algorithms, hardware, programming languages, limitations of computation, applications, and social issues. No programming skills are required as a prerequisite. Major concepts and open problems in computer science are presented without reliance on sophisticated mathematical tools. (General Education Code(s): MF, IN.) The Staff, P. Tantalo, C. Flanagan, M. Walker, R. Levinson, C. McDowell, S. Lodha
11. Intermediate Programming. S
Continuation of course 5J. Covers basic object-oriented programming, event-driven programming, graphical user interface (GUI) creation, recursion, two-dimensional arrays, and introduces programming in C and Java. The two-quarter sequence courses 5J and 11 cover in two quarters the same material as the accelerated introductory course and lab 12A/L cover in one quarter. Students cannot receive credit this course and course 12A. Prerequisite(s): course 5J, and Mathematics 3 or 11A or 19A or Applied Mathematics and Statistics 3 or Applied Mathematics and Statistics/Economics 11A or a score of 400 or higher on the mathematics placement examination (MPE). (General Education Code(s): MF.) C. McDowell
12A. Introduction to Programming (Accelerated). F,W
Accelerated introduction to programming. Students write medium-sized programs. Topics include: functions; conditionals and loops; classes; event-driven programming and graphic user interfaces (GUIs); recursion; and arrays. Students who have no or very limited programming experience should consider courses 5J and 11 which cover the same material in two quarters. Students may not receive credit for both this course and course 11. Some prior programming experience in a language such as C, C++, Java, or C# strongly recommended. Prerequisite(s): Mathematics 3 or 11A or 19A or Applied Mathematics and Statistics 3 or Applied Mathematics and Statistics/Economics 11A, or a score of 400 or higher on the mathematics placement examination (MPE). Concurrent enrollment in 12L required. (General Education Code(s): IN.) W. Mackey, N. Polyzotis, S. Brandt, D. Helmbold, C. Flanagan, A. Pang, C. McDowell, D. Long
12B. Introduction to Data Structures. F,W,S
Teaches students to implement common data structures and the algorithms associated with each data structure, through progressively difficult exercises. Topics include big "O" notation; pointers, recursion (induction), and dynamic allocation; linked lists and list processing; stacks, queues, binary trees and binary search trees; simple sorting techniques and simple search techniques. Students will gain a working knowledge of the elements of the Java and C programming languages. Prior experience with Unix is assumed. Prerequisite(s): course 11 or 12A or Computer Engineering 13. Concurrent enrollment in course 12M required. (General Education Code(s): MF, IN.) P. Tantalo, W. Mackey, I. Pohl
12L. Computer Programming Laboratory (2 credits). F,W,S
Laboratory sequence complementing topics taught in course 12A by providing training and exposure to several software development tools and practices not covered in course 12A. In addition, the lab provides an initial exposure to a second programming language to reinforce concepts from course 12A. Concurrent enrollment in course 12A is required. W. Mackey, N. Polyzotis, S. Brandt, D. Helmbold, C. Flanagan, A. Pang, C. McDowell, D. Long
12M. Data Structures Laboratory (2 credits). F,W,S
Complements course 12B, gaining additional competence with a number of important software development tools, languages, and techniques. Included are advanced Unix features and utilities such as grep, find, diff, the shell, and pipes; C programs utilizing I/O, arrays, pointers, and structures; a scripting language to perform simple text and file manipulation; and the make utility. Concurrent enrollment in course 12B required. P. Tantalo, W. Mackey, I. Pohl
13H. Introduction to Programming and Data Structures (Honors).
Provides an accelerated introduction to programming and data structures. Includes a review of basic programming, including loop and conditional control structures, procedures and parameter passing, and arrays. Course goes on to cover same material as course 12B. Students cannot receive credit for this course and course 12A or 12B. Prerequisite(s): interview only; students must have completed a high school or college level programming course in Java, C, or C++. A short oral examination given to ascertain programming level. Concurrent enrollment in course 13L required. (General Education Code(s): IN.) D. Long, S. Brandt
13L. Introduction to Programming and Data Structures Laboratory (2 credits).
Provides accelerated introduction to practical aspects of programming and data structures. Covers three areas: 1) common programming tools, including Unix commands, compilers and linkers, editors, debuggers, and Makefiles; 2) basic programming techniques, including design, testing, and debugging; and 3) C programming, focusing on the major differences between C and Java. Previous or concurrent enrollment in course 13H required. Prerequisite(s): interview only; students must have completed a high school or college level programming course in Java, C, or C++. A short oral examination given to ascertain programming level. D. Long, S. Brandt
17. Social Networks. W,S
Introduction to social networks and game theory. Topics include the structure of social networks; the world wide web; the flow of information and behavior through networks; and the principles behind modern web search and search-ad placement. Prerequisite(s): Mathematics 3 or 11A; or Applied Mathematics and Statistics 2 or 3 or 11A or 15A; or Economics 11A; or score on math placement exam of 31 or higher. (General Education Code(s): SR.) B. Ten Cate, P. Kolaitis
20. Game Design Experience. W
Introduction to computer game development. Topics covered include: animating sprites; use of game development frameworks; collision detection; game audio; scrolling game worlds; basic artificial intelligence for games; and basic 3-D graphics. Also covers basic object-oriented design and software design patterns. Course 80K recommended. Prerequisite(s): course 12B. (General Education Code(s): PR-E, IN.) E. Whitehead, A. Jhala, M. Mateas
25. Introduction to Computer Graphics: 3D Modeling. F,W
Introduces theory and techniques of 3D computer graphics. Topics include: capabilities of modern graphics hardware; 3D coordinate spaces; modeling with polygons; NURBS and subdivision surfaces; applying textures and materials; lighting; and simple effects. Students develop proficiency in 3D modeling via lectures and assignments focused on the use of a 3D modeling tool. (General Education Code(s): PR-C.) The Staff, C. Yonge, E. Whitehead
26. Introduction to Computer Graphics: 3D Animation.
Introduces theories and techniques of 3D computer animation. Topics include: character animation; rigging; simulation of cloth, liquids, and fire; motion capture; rendering; and editing animated scenes. Students develop proficiency in 3D animation via lectures and assignments focused on the use of a 3D animation tool and use of motion-capture software. Prerequisite(s): course 25. (General Education Code(s): PR-C.) C. Yonge
60M. Scientific Computation with Matlab and Maple.
Basic concepts from calculus visualized using Matlab and Maple; plotting data and functions, integration, differentiation, limits; solving systems of equation; linear regression; and example applications from science and engineering. Prerequisite(s): Mathematics 19B, or 20B, or by consent of instructor. M. Warmuth
80B. Systems and Simulation.
An introduction to systems analysis as an approach to understanding and solving complex problems. The use of simulation as an aid in this problem solving. Examples are taken from ecology, economics, physics, computer science, and other fields. Intended as a generally accessible undergraduate course in which students can develop and explore computer simulation models matched to their individual interests. (General Education Code(s): T2-Natural Sciences, Q.) The Staff
80G. Introduction to Unix.
Introduction to computing, the Internet, and the World Wide Web through the language of the Unix operating system. Oriented to the beginner, the course presupposes no previous acquaintance with any particular sort of computer. It covers the basic concepts of text editing and formatting, writing Web pages in basic HTML, and promotes a rigorous understanding of Unix commands and shell scripts. Views communication with a computer as a matter of learning a few simple though powerful languages. (General Education Code(s): T2-Natural Sciences.) The Staff
80J. Technology Targeted at Social Issues.
Introduces the idea that engineering can be a means for addressing social issues. Case studies and guest speakers. Issues might include: economic development, privacy, activism, safe drinking water, inexpensive shelters, sustainable energy, education, and waste disposal. (General Education Code(s): PE-T, T7-Natural Sciences or Social Sciences.) J. Davis, S. Lodha
80K. Foundations of Interactive Game Design. S
Surveys history, technology, narrative, ethics, and design of interactive computer games. Work in teams to develop novel game-design storyboards. Intended as a generally accessible undergraduate course in which students can explore the interplay of narrative, graphics, rule systems, and artificial intelligence in the creation of interactive games. Programming experience not required. (General Education Code(s): IM, T2-Natural Sciences.) N. Wardrip-Fruin, E. Whitehead
80S. From Software Innovation to Social Entrepreneurship.
Emerging software innovations with emphasis on social software. Web 2.0 companies and services. Software that has social impact in a global context. Entrepreneurial plan including social, economic, and innovation value. Final group project on innovative software design and entrepreneurship plan. (General Education Code(s): PE-T, T7-Natural Sciences or Social Sciences, E.) S. Lodha
80V. Creating Virtual Worlds on the Web.
Project-oriented course about creating and publishing interactive 3D content on the web. Focuses on the creation of static and dynamic objects, such as characters, terrain, accessories, and works of art. Also covers inclusion of animation and sound effects with these objects. The objects created can be used in a stand-alone setting (e.g., a 3D document) or incorporated into existing virtual worlds (e.g., as part of a level design in a computer game or assets in massively multiplayer online games). Uses 3D authoring tools (pending availability of resources) like VRML, Second Life, Alice, and/or Acrobat 3D. (Formerly VRML 3D Worlds on the Web.) (General Education Code(s): PR-C, T2-Natural Sciences.) A. Pang
94. Group Tutorial. F,W,S
Provides a means for a small group of students to study a particular topic in consultation with a faculty sponsor. Students submit petition to sponsoring agency. May be repeated for credit. The Staff
94F. Group Tutorial (2 credits). F,W,S
Provides a means for a small group of students to study a particular topic in consultation with a faculty sponsor. Students submit petition to sponsoring agency. May be repeated for credit. The Staff
99. Tutorial. F,W,S
Students submit petition to sponsoring agency. May be repeated for credit. The Staff
99F. Tutorial (2 credits). F,W,S
Students submit petition to sponsoring agency. May be repeated for credit. The Staff
Upper-Division Courses
101. Algorithms and Abstract Data Types. F,W,S
Studies basic algorithms and their relationships to common abstract data types. Covers the notions of abstract data types and the distinction between an abstract data type and an implementation of that data type. The complexity analysis of common algorithms using asymptotic (big "O") notation is emphasized. Topics include sorting and searching techniques, basic graph algorithms, and algorithm design techniques. Abstract data types covered include priority queues, dictionaries, disjoint sets, heaps, balanced trees, and hashing. Familiarity with C, Java, and Unix is assumed. Prerequisite(s): course 12B or 13H; CMPE 16 or 16H; MATH 19B; and one course from the following: MATH 21, 22, 23A, or AMS 10. P. Tantalo, D. Helmbold, A. Van Gelder, M. Warmuth
102. Introduction to Analysis of Algorithms. S
Methods for the systematic construction and mathematical analysis of algorithms. Order notation, the RAM model of computation, lower bounds, and recurrence relations are covered. The algorithm design techniques include divide-and-conquer, branch and bound, and dynamic programming. Applications to combinatorial, graph, string, and geometric algorithms. Prerequisite(s): course 101. M. Warmuth, A. Van Gelder, D. Achlioptas, D. Helmbold, S. Lodha
104A. Fundamentals of Compiler Design I. F
An introduction to the basic techniques used in compiler design. Topics include compiler structure, symbol tables, regular expressions and languages, finite automata, lexical analysis, context-free languages, LL(1), recursive descent, LALR(1), and LR(1) parsing; and attribute grammars as a model of syntax-directed translation. Students use compiler building tools to construct a working compiler. Prerequisite(s): course 101 and Computer Engineering 12 and 12L. W. Mackey
104B. Fundamentals of Compiler Design II.
Advanced study of compiler implementation. Topics include compiler structure back end, run-time environments, storage management, garbage collection, register allocation, code generation, basic blocks, control flow, data flow, local and global optimization, interpretation, and machine-code generation. Students may not receive credit for this course and course 204. Taught in conjunction with course 204. Prerequisite(s): course 104A. W. Mackey
105. Systems Programming.
Covers fundamentals of systems programming including standard tools, shell programming, file I/O, files and directories, system data files and information, Unix processes, process control, synchronization, signals, event-driven programming, terminal I/O, daemons, interprocess communication, basic network programming, and basic user-interface programming. Prerequisite(s): course 101 and Computer Engineering 12 and 12L. Enrollment restricted to School of Engineering majors. E. Miller, D. Long, S. Brandt
109. Advanced Programming. W,S
An introduction to object-oriented techniques of software development including data abstraction, inheritance, polymorphism, and object-oriented design. Extensive practice using a computer to solve problems, including construction of graphical user interfaces and a multithreaded client/server applications. Prerequisite(s): course 12B/M or 13H. I. Pohl, C. McDowell, W. Mackey
111. Introduction to Operating Systems. S
Fundamental principles of operating systems: process synchronization, deadlocks, memory management, resource allocation, scheduling, storage systems, and study of several operating systems. A major programming project will be required. Prerequisite(s): course 101, and Computer Engineering 110 or Computer Engineering 112. E. Miller, D. Long, S. Brandt, W. Mackey
112. Comparative Programming Languages. W
Covers several programming languages and compares styles, philosophy, and design principles. Principles underlying declarative, functional, and object-oriented programming styles are studied. Students write programs emphasizing each of these techniques. Prerequisite(s): course 101 or 109. W. Mackey, M. Abadi, W. Tan, C. McDowell, C. Flanagan, A. Van Gelder, D. Long
113. Parallel and Concurrent Programming.
Introduction to parallel and concurrent programming. Topics include: types of parallel computers and programming platforms; design, implementation, and optimization of programs for parallel and multicore processors; basic and advanced programming techniques; performance analysis and load balancing; and selected parallel algorithms. (Also offered as Computer Engineering 113. Students cannot receive credit for both courses.) Prerequisite(s): Computer Engineering 12 and 12L and Computer Science 101. Computer Engineering 110 or 112 recommended. J. Renau Ardevol, E. Miller
115. Software Methodology. F
Emphasizes the characteristics of well-engineered software systems. Topics include requirements analysis and specification, design, programming, verification and validation, maintenance, and project management. Practical and research methods are studied. Imparts an understanding of the steps used to effectively develop computer software. Prerequisite(s): satisfaction of the Entry Level Writing and Composition requirements and course 101. Enrollment restricted to computer science, computer engineering, and technology and information management majors. E. Whitehead, L. Werner, C. Flanagan
116. Software Design Project. W
Students in teams specify, design, construct, test, and document a complete software system in a specialized application domain. Class time is spent in technical discussions and ongoing design reviews. A formal presentation and demonstration of each project is required. An organizational meeting will be held during the preceding quarter. Projects may be drawn from industry and campus research groups. Prerequisite(s): course 115. E. Whitehead, L. Werner, L. De Alfaro
117. Software Design Project II. S
Continuation of course 116. Students work in teams to develop, test, document, and deploy a substantial software project. Teams give a formal presentation and demonstration of each project. Prerequisite(s): course 116. E. Whitehead, L. Werner, L. De Alfaro
119. Software for Society.
Provides experience with applying computing to social issues. Case studies on multiple issues. For example: privacy, copyright, voting, education, poverty, energy, activism. Team project in which students develop software to address a pre-identified need of a global or local non-profit. Prerequisite(s): course 101. (General Education Code(s): PE-T.) J. Davis
121. Mobile Applications. W
Introduces programming and application development for mobile devices. Covers the SDK and main programming platforms available on mobile devices, methodologies for developing native applications, division of computation between the mobile platform and servers, and mobile-to-server communications. Introduces platforms based on JavaScript and HTML5 for the development of applications that are portable across platforms. Students develop components of applications, leading to fully functional applications by the end of the course. Course based on emulators and SDK tools, so ownership of a cellphone/tablet is not required for the course. Prerequisite(s): courses 12B and 12M. L. De Alfaro, E. Whitehead
122. Computer Security.
Introduction to computer security (including selected topics in network security). Access control. Security in programming languages. Basic cryptography. Security protocols. Prerequisite(s): course 111 or permission of instructor. Enrollment restricted to School of Engineering majors. M. Abadi, E. Miller
128. Distributed Systems: File Sharing, Online Gaming, and More.
Covers topics in distributed computing including communication, naming, synchronization, consistency and replication, fault tolerance, and security. Examples drawn from peer-to-peer systems, online gaming, the World Wide Web; other systems also used to illustrate approaches to these topics. Students implement simple distributed systems over the course of the quarter. Prerequisite(s): course 101 or Computer Engineering 150. Course 111 or 105 recommended. E. Miller, D. Long, S. Brandt
129. Data Storage Systems.
Covers all aspects of storage systems technology from magnetic media up through system software, including principles of magnetic recording, hard drive technology and evolution, performance measurement, file systems, storage networking, disk arrays, network-attached storage, and alternative storage technologies. Prerequisite(s): course 101, 111, and Physics 5A or 6A. E. Miller, D. Long, S. Brandt
130. Computational Models. F
Various representations for regular languages, context-free grammars, normal forms, parsing, pushdown automata, pumping lemmas, Turing machines, the Church-Turing thesis. Prerequisite(s): course 101. M. Warmuth, D. Helmbold, P. Kolaitis, R. Levinson
132. Computability and Computational Complexity. W
Turing machines, general phase-structure grammars, the Chomsky hierarchy, recursive functions, diagonalization, the Halting problem, computability and unsolvability, computational complexity, time and space bounds, NP-completeness with emphasis on reductions between problems from various areas. Prerequisite(s): course 130. M. Warmuth, D. Helmbold, P. Kolaitis, A. Van Gelder
132W. Computability and Computational Complexity (2 credits). W
Disciplinary Communication (DC) course to be taken concurrently with course 132. Students satisfy the DC requirement by writing a survey paper on a topic related to computability and computational complexity. Possible topics include: overview of a different model of computation (e.g., quantum computing); overview of a major complexity class; a critical analysis of the Church-Turing thesis. Prerequisite(s): course 130, or permission of instructor; satisfaction of the Entry Level Writing and Composition requirements.Concurrent enrollment in course 132 required. Enrollment limited to 14. M. Warmuth, D. Helmbold, P. Kolaitis, A. Van Gelder
140. Artificial Intelligence. W
Introduction to the contemporary concepts and techniques of artificial intelligence, including any or all of: machine perception and inference, machine learning, optimization problems, computational methods and models of search, game playing and theorem proving. Emphasis may be on any formal method of perceiving, learning, reasoning, and problem solving which proves to be effective. This includes both symbolic and neural network approaches to artificial intelligence. Issues discussed include symbolic versus nonsymbolic methods, local versus global methods, hierarchical organization and control, and brain modeling versus engineering approaches. Lisp or Prolog may be introduced. Involves one major project or regular programming assignments. Prerequisite(s): course 101. I. Pohl, M. Walker, R. Levinson
142. Machine Learning and Data Mining. F
Introduction to machine learning algorithms and their applications. Topics include classification learning, density estimation and Bayesian learning regression, and online learning. Provides introduction to standard learning methods such as neural networks, decision trees, boosting, and nearest neighbor techniques. Students may not receive credit for both this course and course 242. Prerequisite(s): course 101 and one of Applied Mathematics and Statistics 5, 7, 113, 131, or Computer Engineering 107. D. Helmbold, M. Warmuth
146. Game AI.
Course provides a comprehensive introduction to the use of artificial intelligence (AI) in computer games. Building on fundamental principles of AI, course explains how to create non-player characters (NPCs) with progressively more sophisticated capabilities. Prerequisite(s): course 101; familiarity with C++. Enrollment restricted to sophomores, juniors, seniors, and graduate students. I. Pohl, M. Mateas, J. Funge
148. Interactive Storytelling. W
Covers a range of design approaches and technologies including storytelling in games, interactive fiction, interactive drama, and artificial intelligence-based story generation. Through a mixture of readings, assignments, and project work, students explore the theoretical positions, debates, and technical and design issues arising from these approaches. Students may not receive credit for this course and course 248. Prerequisite(s): course 101. Enrollment restricted to juniors and seniors. M. Mateas
160. Introduction to Computer Graphics. F
Introduces techniques of modeling, transformation, and rendering for computer-generated imagery. Topics: 2D/3D primitives, projections, matrix composition, and shading algorithms. Programming assignments and a major project are required. Students cannot receive credit for both this course and course 260. Prerequisite(s): course 101 and Mathematics 21 or Applied Mathematics and Statistics 10. Concurrent enrollment in course 160L required. A. Pang, J. Davis, S. Lodha
160L. Introduction to Computer Graphics Laboratory (2 credits). F
Complements course 160, gaining additional competence with a number of important software development tools, graphics libraries, and graphical user interfaces. Included are OpenGL program, utilizing rubberbanding, picking, trackballing, display lists, double buffering, lighting, shading, materials and textures; and FLTK program, utilizing sliders, buttons, and dialog boxes. Concurrent enrollment in course 160 required. A. Pang, J. Davis, S. Lodha
161. Introduction to Data Visualization.
Concepts and methods for data analysis, information and scientific visualization, and effective communication of technical data. Topics include: mathematical foundations; scalar, vector, and tensor field visualization; multivariate visualization; and tree and graph visualizations. Applications are drawn from social-network analysis; environmental and space science; and medical imaging. Evaluation based on examinations, programming exercises, and a project. (Formerly Visualization and Computer Animation.) Prerequisite(s): course 160 or equivalent. Concurrent enrollment in course 161L required. S. Lodha, A. Pang
161L. Data Visualization Laboratory (2 credits).
Complements course 161. Students gain additional competence with a number of important software development tools and techniques. Included are Paraview, Visualization Toolkit (VTK), and Insight Toolkit (ITK). Students get hands-on experience with designing transfer functions, isosurfacing, direct volume rendering, vector-field visualization techniques, as well as methods for dealing with non-spatial data. (Formerly Visualization and Computer Animation Laboratory.) Concurrent enrollment in course 161 required. S. Lodha, A. Pang
162. Advanced Computer Graphics and Animation. S
Covers concepts and methods for modeling and rendering static and dynamic scenes Topics include: mathematical foundations (e.g., splines and numerical integration; global illumination models; texture mapping; morphing; physically based animation; behavioral animations; and procedural animations. Evaluation based on examinations, programming exercises, and a project. Prerequisite(s): course 160 or equivalent. Concurrent enrollment in course 162L required. A. Pang, J. Davis, S. Lodha
162L. Advanced Computer Graphics and Animation Laboratory (2 credits). S
Complements course 162. Students gain additional competence in a hands-on computational laboratory setting. Representative examples include topics, such as interactive curve and surface design; shaders for advanced effects; crowd and behavioral animation; experiments with particle systems; facial animation; and motion and planning. Prerequisite(s): concurrent enrollment in course 162 is required. A. Pang, J. Davis, S. Lodha
164. Game Engines. S
Covers the graphic elements in computer games. Topics include modifying, optimizing, adding components, and building a game engine. Course evaluation based on exams and several programming projects, including a game built using the student's game engine. Prerequisite(s): courses 160 and 160L. Concurrent enrollment in course 164L required. A. Jhala, A. Pang
164L. Game Engines Lab (2 credits). S
Provides hands-on experience in using, designing, and building game engines. Students also explore different special effects, such as particle systems, spring systems, and game physics. Concurrent enrollment in course 164 required. A. Jhala, A. Pang
166A. Game Theory and Applications I. F
Introduces modern game theory, including applications in social science, biology, and engineering. Topics include extensive form, strategic form, mixed strategies, incomplete information, repeated games, evolutionary games, and simulation techniques. (Also offered as Economics 166A. Students cannot receive credit for both courses.) Prerequisite(s): Applied Math and Statistics 5 or 7 or Economics 113; and Economics 11B, Applied Math and Statistics 11B, or Mathematics 11B or 19B. Enrollment restricted to juniors and seniors. Enrollment limited to 100. The Staff
166B. Game Theory and Applications II. W
Explores research frontiers in game theory, emphasizing applications in social science, biology, and engineering. Each interdisciplinary team develops a topic, and presents it to the class in oral and written reports and demonstrations. Students must have shown a strong performance in course 166A or equivalent. Students cannot receive credit for this course and Economics 272, Computer Science 272, or Biology: Ecology and Evolutionary 274. (Also offered as Economics 166B. Students cannot receive credit for both courses.) Prerequisite(s): course 166A or Economics 166A; satisfaction of the Entry Level Writing and Composition requirements. Enrollment restricted to juniors and seniors. Enrollment limited to 40. (General Education Code(s): W.) The Staff
170. Game Design Studio I. F
First of a three-course capstone sequence for the computer game design program. Students work in teams to develop a comprehensive game design for a substantial computer game, including detailed storyline, level design, artistic approach, implementation technologies, and art-asset pipeline. Emphasis placed on creating novel, artistic game design concepts. Includes design reviews and formal presentations. Companion lectures cover advanced topics in game design, game programming, and software project management. Students are billed a materials fee. Prerequisite(s): satisfaction of the Entry Level Writing and Composition requirements. Courses 20 and 80K and 101 and 109, and any two of: 102,104A,104B,105,111,112,115,116,122,128,129,130,132,140,142,146,148,160/L,161/L, 164/L,166A,180,181,183; Computer Engineering 110,112,113,118/L,131,150/L; Applied Mathematics and Statistics 131,147. The Staff, N. Wardrip-Fruin, M. Mateas, E. Whitehead
171. Game Design Studio II. W
Second of a three-course capstone sequence for the computer game design program. Students work in teams on the software design, implementation, and testing of the computer game designed in course 170. Includes design reviews, progress reviews, and formal presentations. Companion lectures cover topics in software engineering, including design, testing, and project management. Game design and game programming also covered. Students are billed a materials fee. Prerequisite(s): course 170, and satisfaction of the Entry Level Writing and Composition requirements. E. Whitehead, N. Wardrip-Fruin, M. Mateas
172. Game Design Studio III. S
Third of a three-course capstone sequence for the computer game design program. Students work in teams on the software design, implementation and testing of the computer game designed in courses 170 and 171. Includes progress reviews and formal presentations. Companion lectures cover topics in software engineering, including user and software testing, release engineering and project management; also covered are game design and game programming. Students are billed a materials fee. Prerequisite(s): satisfaction of the Entry Level Writing and Composition requirements and course 171. E. Whitehead, N. Wardrip-Fruin, M. Mateas
179. Game Design Practicum. F,S
Provides the opportunity to practice the creation of novel computer games. Students learn a new game-making technology, then create three games using this technology. Prerequisite(s): courses 20 and 80K. May be repeated for credit. (General Education Code(s): PR-C.) The Staff, E. Whitehead, M. Walker, N. Wardrip-Fruin, A. Jhala, M. Mateas
180. Database Systems I. F
Introduction to the concepts, approaches, tools, and methodology of database design. Covers the entity-relationship model, the relational model, relational algebra, relational calculus, commercial languages (such as SQL and QBE), functional dependencies, normal forms, and design theory. Other topics may include knowledge-bases, constraint databases, and alternative database models. Prerequisite(s): course 101. W. Tan, P. Kolaitis, N. Polyzotis
180W. Database Systems (2 credits). F
Disciplinary Communication (DC) course to be taken concurrently with course 180. Students satisfy the DC requirement by producing a database design document, a document with comments on the source code for complex queries, and a literature survey or systems survey. Prerequisite(s): course 101, or permission of instructor; satisfaction of the Entry Level Writing and Composition requirements. Concurrent enrollment in course 180 required. Enrollment limited to 15. W. Tan, P. Kolaitis, N. Polyzotis
181. Database Systems II. S
Introduction to the architecture and implementation of database systems. Topics covered include data storage, tree and hash indexes, storage management, query evaluation and optimization, transaction management, concurrency control, recovery, and XML data management. Prerequisite(s): course 180. N. Polyzotis, W. Tan
182. Introduction to Database Management Systems. S
Concepts, approaches, tools, and methodology of database design. Topics include the entity-relationship model; the relational data model; normal forms; commercial languages such as SQL (SQL constraints, SQL triggers, and update languages); query-by-example (QBE); XML data model, and XML query language (XQuery); as well as relational database-management support for XML and object-relational features in database-management systems. Involves a database -application development project. Prerequisite(s): course 12B. Course intended for non-majors; computer science majors should enroll in course 180. N. Polyzotis, W. Tan
183. Hypermedia and the Web. F
An introduction to the construction of hypermedia systems and large-scale web applications. Topics covered include pre-web hypertext systems, hypermedia data models, namespaces, system architecture of the web, design of large linked information spaces, design and development of database-backed web applications, web site load testing, and web collaboration technologies. Students work in teams over the term to develop a significant web application. Prerequisite(s): courses 12B and 12M. L. De Alfaro, E. Whitehead
191. Computer Science and Technology Seminar (2 credits).
Weekly talks by industry experts, university researchers, field practitioners, and video presentations provide an in-depth exposure to a specific or a broad area of computer science and technology. Topics include emerging ideas, opportunities, challenges, and future of the industry. May be repeated for credit. The Staff
192. Supervised Student Teaching/Tutoring. F,W,S
Students hold tutoring hours, run a lab, or lead discussion section in conjunction with a regularly offered course and under close supervision by the course's instructor. Weekly meetings with a regular faculty member to discuss teaching techniques, pedagogy, sensitivity to students' needs, maintaining a comfortable learning environment, and strategies for handling difficult situations. Students submit a report on their teaching experience. Enrollment by permission of instructor and restricted to sophomores, juniors, and seniors. D. Helmbold
192F. Supervised Student Teaching/Tutoring (2 credits). F,W,S
Students hold tutoring hours, run a lab, or lead discussion section in conjunction with a regularly offered course and under close supervision by the course's instructor. Weekly meetings with a regular faculty member to discuss teaching techniques, pedagogy, sensitivity to students' needs, maintaining a comfortable learning environment, and strategies for handling difficult situations. Students submit a report on their teaching experience. Enrollment by permission of instructor and restricted to sophomores, juniors, and seniors. D. Helmbold
193. Field Study. F,W,S
Provides for individual programs of study with specific academic objectives carried out under the direction of a member of the Computer Science Department and using resources not normally available on campus. Credit is based on the presentation of evidence of achieving the objectives, usually a term paper or project. Cannot normally be repeated for credit. Students submit petition to sponsoring agency. The Staff
193F. Field Study (2 credits). F,W,S
Provides for individual programs of study with specific academic objectives carried out under the direction of a faculty member of the Computer Science Department and a willing sponsor at the field site. Uses resources not normally available on campus. Credit is based on the presentation of evidence of achieving the objectives by submitting a written and oral presentation. Cannot normally be repeated for credit. Intended for students majoring in computer science. Students submit petition to sponsoring agency. The Staff
194. Group Tutorial. F,W,S
A program of independent study arranged between a group of students and a faculty member. Students submit petition to sponsoring agency. May be repeated for credit. The Staff
194F. Group Tutorial (2 credits). F,W,S
A program of independent study arranged between a group of students and a faculty member. Intended for students majoring in computer science. Students submit petition to sponsoring agency. May be repeated for credit. The Staff
195. Senior Thesis Research. F,W,S
Students submit petition to sponsoring agency. Prerequisite(s): satisfaction of the Entry Level Writing and Composition requirements. The Staff
195F. Senior Thesis Research (2 credits). F,W,S
Intended for majors. Students submit petition to sponsoring agency. The Staff
198. Individual Study or Research. F,W,S
Students submit petition to sponsoring agency. May be repeated for credit. The Staff
198F. Individual Study or Research (2 credits). F,W,S
Intended for majors. Students submit petition to sponsoring agency. May be repeated for credit. The Staff
199. Tutorial. F,W,S
For fourth-year students majoring in computer science. Students submit petition to sponsoring agency. May be repeated for credit. The Staff
199F. Tutorial (2 credits). F,W,S
For fourth-year students majoring in computer science. Students submit petition to sponsoring agency. May be repeated for credit. The Staff
Graduate Courses
200. Research and Teaching in Computer Science and Engineering (3 credits). F
Basic teaching techniques for teaching assistants, including responsibilities and rights of teaching assistants, resource materials, computer security, leading discussion or lab sessions, presentation techniques, maintaining class records, electronic handling of homework, and grading. The course examines research and professional training, including use of the library and online databases, technical typesetting, writing journal and conference papers, publishing in computer science and computer engineering, giving talks in seminars and conferences, and ethical issues in science and engineering. Required for all teaching assistants. Enrollment restricted to graduate students. M. Warmuth, The Staff
201. Analysis of Algorithms. F
Rigorous analysis of the time and space requirements of important algorithms, including worst case, average case, and amortized analysis. Techniques include order-notation, recurrence relations, information-theoretic lower bounds, adversary arguments. Analysis of the key data structures: trees, hash tables, balanced tree schemes, priority queues, Fibonacci and binomial heaps. Algorithmic paradigms such as divide and conquer, dynamic programming, union-find with path compression, augmenting paths. Selected advanced algorithms. Introduction to NP-completeness. Enrollment restricted to graduate students; undergraduate students may enroll in this course if they have completed either course 102 or Computer Engineering 177 and have the consent of the instructor. A. Van Gelder, D. Achlioptas, D. Helmbold
203. Programming Languages. W
Covers current issues in programming languages. Language topics include object oriented, concurrent, functional, and logic programming, and other programmable applications such as symbolic manipulators and simulation. Enrollment restricted to graduate students; undergraduate students may enroll for this course if they have completed course 112 and have the consent of the instructor. C. Flanagan, C. McDowell, A. Van Gelder
204. Compiler Design.
Advanced study of compiler implementation. Topics include compiler structure back end, run-time environments, storage management, garbage collection, register allocation, code generation, basic blocks, control flow, data flow, local and global optimization, interpretation, machine code generation. Students may not receive credit for this course and course 104B. Taught in conjunction with 104B. Prerequisite(s): course 104A or equivalent. Enrollment restricted to graduate students. Offered in alternate academic years. W. Mackey
210. Computational Models and Complexity.
Finite automata and regular expressions, universal models of computation, computability and unsolvability, relations between complexity classes, hierarchy theorems, reductions, complete problems for the major complexity classes (L, NL, P, NP, PSPACE). Other topics may include complexity of counting and enumeration problems, complexity of approximation, randomized complexity classes. Prerequisite(s): course 201. M. Warmuth, D. Helmbold, P. Kolaitis
211. Combinatorial Algorithms.
Fundamental combinatorial algorithms, graph algorithms, flow problems, matching problems, linear programming, integer programming, NP-completeness, approximation algorithms for optimization problems. Prerequisite(s): course 201. Offered in alternate academic years. A. Van Gelder, D. Achlioptas, P. Kolaitis
217. Logic in Computer Science. W
The applications and uses of formal systems to computer science. Covers the syntax and semantics of propositional logic and first-order logic, normal forms, soundness and completeness theorems, Herbrand's theorem, unification and resolution, foundations of logic programming, automated theorem proving. Other topics may include deductive databases, database query languages, nonmonotonic reasoning. Enrollment restricted to graduate students. Offered in alternate academic years. P. Kolaitis, A. Van Gelder
221. Advanced Operating Systems.
A detailed study of the issues involved in operating systems design and implementation. Readings cover current research topics and systems of historical significance. Topics include (but are not restricted to) process and memory management, protection, security, synchronization, performance evaluation, file systems, distributed systems. Enrollment restricted to graduate students; undergraduates by interview only. E. Miller, D. Long, S. Brandt
223. Advanced Computer Security. F
Overview of research topics in computer and network security. Topics may include cryptographic operations, security properties and policies, authentication and access control, attacks on computer systems and defenses against them, security in programming languages, and network protocols for security. Enrollment restricted to graduate students or consent of instructor. E. Miller, D. Long, M. Abadi
229. Storage Systems. F
Topics include storage devices, storage architectures, local file systems, high-performance file systems, and next-generation storage devices and architectures; covers issues of performance, reliability, scalability, robustness, and security. Enrollment restricted to graduate students. E. Miller, C. Maltzahn, D. Long, S. Brandt
232. Distributed Systems. *
Overview of research topics in distributed computer systems. Topics may include communication paradigms, process management, naming, synchronization and coordination, consistency and replication, fault tolerance, and security. Examples include distributed operating systems, distributed file and object systems, distributed document systems, and peer-to-peer systems. Enrollment restricted to graduate students. D. Long, E. Miller
240. Artificial Intelligence. S
Prepares students for doing research in artificial intelligence. Major topics covered are search and heuristics, knowledge representation, planning, deduction and inference, reinforcement learning, associative pattern retrieval, and adaptive search. Discussion includes current research issues in AI problem-solving methods. Individualized projects. Enrollment limited to 30. I. Pohl, M. Walker, R. Levinson
241. Knowledge Engineering.
Introduction to the acquisition, representation, and application of knowledge in expert systems. Topics include production systems, backward and forward chaining, dependency-directed backtracking, reasoning with uncertainty, certainty factors, fuzzy systems, knowledge representation (rules, frames, and semantic nets), inference engines, and metaknowledge. Discussion includes current research issues in adaptive expert systems. Involves one major project. Undergraduates may enroll in this course if they have completed course 140. Offered in alternate academic years. R. Levinson
242. Machine Learning. F
Introduction to machine learning algorithms. Covers learning models from fields of statistical decision theory and pattern recognition, artificial intelligence, and theoretical computer science. Topics include classification learning and the Probably Approximately Correct (PAC) learning framework, density estimation and Bayesian learning, EM, regression, and online learning. Provides an introduction to standard learning methods such as neural networks, decision trees, boosting, nearest neighbor, and support vector machines. Requirements include one major experimental learning project or theoretical paper. Students may not receive credit for both this course and course 142. Enrollment restricted to graduate students. Enrollment limited to 30. D. Helmbold, M. Warmuth
244. Artificial Intelligence in Games.
Artificial intelligence has long used game-playing as a metric for progress. Key algorithms such as alpha-beta and HPA search studied. Computer algorithms for backgammon, poker, and chess examined. There will be individualized projects. Prerequisite(s): course 201; and course 211 or 240 or 242. Enrollment limited to 20. I. Pohl, A. Jhala, M. Mateas
245. Computational Models of Discourse and Dialogue. *
Focuses on classic and current theories and research topics in the computational modeling of discourse and dialogue, with applications to human-computer dialogue interactions; dialogue interaction in computer games and interactive story systems; and processing of human-to-human conversational and dialogue-like language such as e-mails. Topics vary depending on the current research of the instructor(s) and the interests of the students. Students read theoretical and technical papers from journals and conference proceedings and present class lectures. A research project is required. (Also offered as Psychology 245. Students cannot receive credit for both courses.) Enrollment restricted to graduate students. Undergraduates may enroll with permission of instructor. May be repeated for credit. M. Walker
247. AI: Problem Solving and Intelligent Search. F,W,S
Surveys topics in contemporary deductive artificial intelligence (AI). Coursework involves weekly readings and a project. Prerequisite(s): courses 201 and 240. Enrollment restricted to graduate students. I. Pohl
248. Interactive Storytelling. W
Covers wide range of practices including hypertext, interactive fiction, embedded narratives in games, interactive drama, and artificial intelligence-based story generation. Through a mixture of readings, assignments, and project work, explores the theoretical positions, debates, and technical and design issues arising from these different approaches. Students may not receive credit for this course and course 148. (Formerly Interactive Narrative.) Enrollment restricted to graduate students. Enrollment limited to 20. M. Mateas
250. Introduction to Information Theory. F
An introduction to information theory including topics such as entropy, relative entropy, mutual information, asymptotic equipartition property, channel capacity, differential entropy, rate distortion theory, and universal source coding. (Also offered as Electrical Engineering 253. Students cannot receive credit for both courses.) Prerequisite(s): Computer Engineering 107, or Applied Mathematics and Statistics 131 or equivalent course, or permission of instructor. H. Sadjadpour
253. Advanced Programming Languages.
Covers issues in the design, implementation, analysis, and specification of programming languages. Topics include formal semantics (including operational, axiomatic, and denotational semantics), advanced type systems, program analysis (including abstract interpretation and model checking), specification, and verification. Prerequisite(s): course 203 or equivalent. C. Flanagan
260. Computer Graphics.
Introduces current research and techniques of modeling, 2D/3D transformation, matrix composition, shading algorithms, and rendering to obtain computer-generated imagery. Programming assignments and major project required. Students cannot receive credit for both this course and course 160. Enrollment restricted to graduate students; undergraduates by interview only. Enrollment limited to 20. A. Pang, J. Davis, S. Lodha
261. Advanced Visualization.
Covers advanced topics in visualization, e.g., tensor-field visualization, uncertainty visualization, information visualization. Topics vary with differing offerings of the course. Course includes lectures, exam, research paper reading/presentation, and projects. Final project is expected to be at a sufficiently advanced level for submission to a conference. Students work individually or in pairs. Enrollment by permission of instructor. Enrollment restricted to graduate students. A. Pang
262. Computer Animation.
An in-depth treatment of computer animation, including its origins in conventional animation, 2-D animation, inbetweening, motion control, morphing, graphical motion editors, animation languages, motion blur, simulation of articulated body motion, realtime animation, and special-purpose animation hardware. Enrollment restricted to graduate students. Enrollment limited to 15. J. Davis, A. Pang
272. Evolutionary Game Theory. W
Reviews static equilibrium concepts, games of incomplete information, and the traditional theory of dynamic games in discrete time. Develops recent evolutionary game models, including replicator and best reply dynamics, and applications to economics, computer science, and biology. Prerequisite(s): upper-division math courses in probability theory are strongly recommended. Cannot receive credit for this course and Economics 166B or Computer Science 166B. (Also offered as Biology:Ecology & Evolutionary 274. Students cannot receive credit for both courses.) M. Warmuth, B. Sinervo, D. Friedman
277. Principles of Database Systems.
Advanced course on principles of database systems. Main topics include overview of the relational data model and relational query languages; recursive queries, datalog, and fixed-points; query processing and optimization; database design, dependencies, normal forms, and the chase procedure. Additional topics may include information integration, complex objects, semistructured data, and XML. (Formerly Database Systems I.) Prerequisite(s): course 180 (or equivalent) or consent of instructor. Enrollment restricted to graduate students. Enrollment limited to 20. Offered in alternate academic years. W. Tan, P. Kolaitis, N. Polyzotis
278. Design and Implementation of Database Systems. S
Advanced course in implementation techniques for database systems. For students who wish to do research in databases or to learn more about large-scale data processing. Topics include: indexing of complex data; techniques for high-volume concurrency control; query processing and optimization; database recovery; parallel database system architectures; database systems for streaming data; approximate query answering. Additional topics may include: self-managing database systems; advanced query optimization techniques; and query processing techniques for semi-structured data. (Formerly Database Systems II.) Prerequisite(s): course 181 (or equivalent) or consent of instructor. Enrollment restricted to graduate students. Enrollment limited to 20. N. Polyzotis
279. Software Reuse and Component-Based Software Engineering. *
Detailed study of interlocking business, organizational, and technical issues in large-scale software reuse and component-based software engineering. Topics include architecture, design for reuse, domain engineering, model-driven development, domain-specific kits, components, frameworks, software agents, generators, problem-oriented languages, library design, reuse tools, patterns, and aspects. Assumes prior exposure to software engineering topics. Prerequisite(s): computer engineering 276 or consent of instructor. Enrollment restricted to graduate students. Enrollment limited to 20. C. McDowell
280A. Seminar in Computer Science Research (2 credits). F,W,S
Weekly seminar covering topics of current research in computer science. Enrollment by permission of instructor. May be repeated for credit. The Staff
280D. Seminar in Database Systems (2 credits). F,W,S
Covers advanced research topics from the recent literature in database systems and related fields. Involves presentations from UCSC students and faculty, and guest talks from researchers in industry and other academic institutions. Enrollment by permission of instructor. Enrollment limited to 30. May be repeated for credit. W. Tan, P. Kolaitis, N. Polyzotis
280G. Seminar on Software Engineering (2 credits).
Weekly seminar covering topics of current research in software engineering. Prerequisite(s): permission of instructor. Enrollment restricted to graduate students. Enrollment limited to 30. May be repeated for credit. N. Whitehead, C. McDowell, C. Flanagan
280H. Seminar in Human Computation Systems (2 credits).
Covers advanced topics and current research in the general area of human computation. Material is drawn from several disciplines that involve or deal with human computation, including computer vision, human-computer interaction, databases, and machine learning. The course comprises presentations from faculty, enrolled students, and external visitors. Enrollment restricted to graduate students. May be repeated for credit. J. Davis, N. Polyzotis
280J. Seminar on Computer Graphics (2 credits).
Weekly seminar covering topics of current research in computer graphics. Enrollment restricted to graduate students and by permission of instructor. Enrollment limited to 30. May be repeated for credit. J. Davis
280S. Seminar on Computer Systems (2 credits). F,W,S
Weekly seminar series covering topics of current research in computer systems. Enrollment by permission of instructor. Enrollment limited to 30. May be repeated for credit. E. Miller, C. Maltzahn, D. Long, S. Brandt
280W. Seminar in Digital Media (2 credits).
Covers advanced topics and current research in digital media—the interdisciplinary field at the intersection of computer science, media authoring, and models of interpretation from the humanities and social sciences. Focuses on student presentations and seminar participation. Enrollment restricted to graduate students. May be repeated for credit. N. Wardrip-Fruin
280X. Expressive AI (2 credits). F,W,S
Weekly seminar covering topics of current research in artificial intelligence applied to interactive art and entertainment, including computer games. Enrollment restricted to graduate students. Enrollment limited to 30. May be repeated for credit. N. Wardrip-Fruin, M. Mateas
280Z. Seminar in Natural Language Processing and Dialogue (2 credits). F,W,S
Covers advanced topics and current research in natural language processing. Focuses on student presentations and seminar participation. Enrollment restricted to graduate students. May be repeated for credit. M. Walker
290A. Topics in Algorithms and Complexity Theory: Probabilistic Algorithms and Average Case Analysis. W
Graduate seminar in algorithms and complexity theory on topics from recently published research journal articles and conference proceedings. Topics vary from year to year depending on the current research of the instructor(s) and interests of students. Students read technical papers from relevant journals and conference proceedings and present class lectures. Guest lectures may supplement the student presentations. A research project and/or paper may be required. Enrollment restricted to graduate students. Enrollment limited to 15. Offered in alternate academic years. May be repeated for credit. D. Achlioptas
290B. Advanced Topics in Computer Graphics.
A graduate seminar in computer graphics on topics from recently published research journal articles and conference proceedings. Topics vary from year to year depending on interests of students. Primary areas of interest are likely to be scientific visualization, modeling, rendering, scattered data techniques, wavelets, and color and vision models. Students read technical papers and present class lectures. Guest lecturers supplement the student presentations. A research project is required. Enrollment limited to 15. May be repeated for credit. A. Pang, J. Davis, S. Lodha
290C. Advanced Topics in Machine Learning. S
In-depth study of current research topics in machine learning. Topics vary from year to year but include multi-class learning with boosting and SUM algorithms, belief nets, independent component analysis, MCMC sampling, and advanced clustering methods. Students read and present research papers; theoretical homework in addition to a research project. Prerequisite(s): course 242. May be repeated for credit. D. Helmbold, M. Warmuth
290D. Neural Computation.
An introduction to the design and analysis of neural network algorithms. Concentrates on large artificial neural networks and their applications in pattern recognition, signal processing, and forecasting and control. Topics include Hopfield and Boltzmann machines, perceptions, multilayer feed forward nets, and multilayer recurrent networks. Enrollment restricted to graduate students. Offered in alternate academic years. May be repeated for credit. M. Warmuth
290E. Object-Oriented Programming Methodology.
Object-oriented programming methodology is the application of abstract-data types and polymorphism to coding solution. Topics geared to beginning thesis research in this field. Prerequisite(s): courses 201 and 203. Enrollment restricted to graduate students. Enrollment limited to 20. May be repeated for credit. C. McDowell, I. Pohl
290F. Applications of Combinatorics.
Combinatorial mathematics, including summation methods, working with binomial coefficients, combinatorial sequences (Fibonacci, Stirling, Eulerian, Harmonic, Bernoulli numbers), generating functions and their uses, Bernoulli processes, and other topics in discrete probability. Oriented toward problem solving, applications mainly to computer science, but also physics. Prerequisite(s): Computer Engineering 16 and Applied Mathematics and Statistics 10. Enrollment restricted to graduate students and upper-division undergraduates. Offered in alternate academic years. May be repeated for credit. I. Pohl
290G. Topics in Software Engineering.
Research seminar on current topics in software engineering. Topics vary from year to year depending on the current research of the instructor(s) and interests of students. Students read technical papers from relevant journals and conference proceedings. Synthesis and understanding of materials is demonstrated by a required research project. Prerequisite(s): Computer Engineering 276 recommended. Enrollment restricted to graduate students; undergraduates may enroll with permission of instructor. Enrollment limited to 35. May be repeated for credit. E. Whitehead, C. McDowell, C. Flanagan
290H. Topics in Database Systems. W
Focuses on current research topics in database systems. Different offerings cover different topics depending on current research of instructor(s) and the interests of students. Students read technical papers from journals and conference proceedings and present class lectures. A research project is required. Prerequisite(s): course 180 (or equivalent) or 277 or consent of instructor. Enrollment restricted to graduate students. Enrollment limited to 20. May be repeated for credit. W. Tan, P. Kolaitis, N. Polyzotis
290J. Playable Media. W
Focuses on media, such as computer games, that invite and structure play. Work includes building and critiquing a series of prototypes; studying major examples in the field; and discussing both theoretical and practice-oriented texts. (Also offered as Digital Arts and New Media 250D. Students cannot receive credit for both courses.) Enrollment restricted to graduate students. May be repeated for credit. N. Wardrip-Fruin, M. Mateas
290P. Topics in Computational Cinematography. F
Focuses on discussion of recent advances in visual storytelling in graphical environments. Major topics covered are: intelligent camera control, shot-compositions, lighting design, interactive storytelling, and computational techniques associated with these applications. Class consists of in-class discussions and student presentations of research papers and a final student project. Enrollment restricted to graduate students. A. Jhala
290S. Advanced Topics in Computer Systems. W
Focuses on current research topics in computer systems. Topics vary from year to year depending on the current research of the instructor(s) and the interests of the students. Students read technical papers from current journals and conference proceedings, and present class lectures. A research project is required. Prerequisite(s): course 221 recommended. Enrollment restricted to graduate students; qualified undergraduates may enroll with instructor's consent. May be repeated for credit. E. Miller, C. Maltzahn, D. Long, S. Brandt
290T. Topics in Computing for Society.
Current research topics on computer technology that is intentionally targeted to benefiting society. Topics vary year to year. Students read papers from current conferences and journals, and present class lectures. A research project is required. Enrollment restricted to graduate students. May be repeated for credit. J. Davis
290X. Cryptography and Computer Security. S
Research seminar on encryption and related technologies. Topics include theory of codes, random sequences and generators, public key cryptosystems, private key cyphers, key exchange protocols, quantum computing and cryptography. Major project required. Prerequisite: interview with instructor. Enrollment limited to 12. May be repeated for credit. The Staff
296. Masters Project (2 credits). F,W,S
Independent completion of a masters project under faculty supervision. Students submit petition to sponsoring agency. May be repeated for credit. The Staff
297. Independent Study or Research. F,W,S
Independent study or research under faculty supervision. Although this course may be repeated for credit, not every degree program will accept a repeated course towards degree requirements. Students submit petition to sponsoring agency. May be repeated for credit. The Staff
297F. Independent Study or Research (2 credits). F,W,S
Independent study or research under faculty supervision. Although this course may be repeated for credit, not every degree program will accept a repeated course toward degree requirements. Formerly offered as Directed Readings in Machine Learning. May be repeated for credit. The Staff
299. Thesis Research. F,W,S
Thesis research conducted under faculty supervision. Although the course may be repeated for credit, not every degree program will accept a repeated course towards degree requirements. Students submit petition to sponsoring agency. May be repeated for credit. The Staff