Computer Science

2018-19 General Catalog

Baskin School of Engineering
(831) 459-2158
http://www.soe.ucsc.edu

Faculty | Program Statement


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.) The Staff

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.) D. Long

5J. Introduction to Programming in Java. F,W,S
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, 12B, or Computer Engineering 13. (General Education Code(s): MF.) The Staff, D. Bailey, F. Nawab, D. Helmbold, P. Tantalo

5P. Introduction to Programming in Python. F,W,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. Students may not receive credit for course 5P after receiving credit for course 11, 12A, or Computer Engineering 13. Students may not enroll in or receive credit for course 5P after receiving credit with a 'C' or better in course 11, 12A, or Computer Engineering 13. (General Education Code(s): MF.) The Staff, P. Tantalo, P. Alvaro, D. Long, E. Miller

10. Introduction to Computer Science. F
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. Students cannot receive credit for this course after completing course 12B. (General Education Code(s): MF.) The Staff, M. Walker, D. Achlioptas, P. Tantalo

11. Intermediate Programming. F,W,S
Continuation of course 5J. Covers basic object-oriented programming, event-driven programming, graphical user interface (GUI) creation, recursion, two-dimensional arrays. 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.) The Staff, N. Norouzi, P. Tantalo

12A. Introduction to Programming (Accelerated). F,W,S
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. The Staff, D. Bailey, W. Mackey, N. Norouzi, C. Flanagan, A. Pang, D. Helmbold, 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 is required. (General Education Code(s): MF.) The Staff, P. Tantalo, S. Comandur, D. Long, W. Mackey

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. Prerequisite(s): Concurrent enrollment in course 12A is required. The Staff, D. Bailey, W. Mackey, D. Helmbold, C. Flanagan, A. Pang, 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 is required. The Staff, P. Tantalo, S. Comandur, D. Long, W. Mackey

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 the same material as course 12B. Students cannot receive credit for this course and course 12A or 12B. Prerequisite(s): Students must have completed a high school or college-level programming course in Java, C, or C++. An entrance examination is given to ascertain programming level; enrollment is contingent on passing this examination. Concurrent enrollment in course 13L is required. D. Long

13L. Introduction to Programming and Data Structures Laboratory (2 credits). *
Provides an accelerated introduction to the 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 is required. Prerequisite(s): Students must have completed a high school or college-level programming course in Java, C, or C++. An entrance examination is given to ascertain programming level; enrollment is contingent on passing this examination. Concurrent enrollment in course 13H is required. D. Long

17. Social Networks. *
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 6 or 11A or 15A; or Economics 11A; or score on math placement exam of 31 or higher. (General Education Code(s): SR.) P. Kolaitis, L. Getoor, D. Achlioptas

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. 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. 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.) J. Davis, S. Lodha

80L. Social Data Analytics and Visualization. *
Course examines: social data analytics--veracity, consistency, uncertainty, volume; statistical computation--misuse, bias, dispersion, correlation, regressions, differential scales, normal distributions, factor and cluster analysis, extrapolation, inference, simple programming; visual representations--communication, critique and design of infographics; applications--environment, energy, economics, education, empowerment. (General Education Code(s): SR.) S. Lodha

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.) 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.) 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 11B or 19B or 20B; and one course from the following: MATH 21, 22, 23A, AMS 10, or AMS 131. The Staff, P. Tantalo, S. Comandur, A. Van Gelder, D. Helmbold, M. Warmuth

102. Introduction to Analysis of Algorithms. F,W,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. The Staff, M. Warmuth, A. Van Gelder, A. Guha Thakurta, D. Helmbold, D. Achlioptas, S. Lodha

104A. Fundamentals of Compiler Design I. F,S
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 is restricted to School of Engineering majors. The Staff, D. Long, E. Miller

107. Open Source Programming. W
Presents an opportunity to participate in Linux Kernel development--one of the preeminent open source projects. Through community involvement, students accelerate comprehension of computer science fundamentals and display their understanding and experience relevant to other programming projects. Prerequisite(s): course 101 and Computer Engineering 12 and 12L. Enrollment restricted to School of Engineering majors. C. Maltzahn, The Staff

109. Advanced Programming. F,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. W. Mackey, The Staff

111. Introduction to Operating Systems. F,W,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. The Staff, E. Miller, F. Nawab, D. Long, P. Alvaro, W. Mackey

112. Comparative Programming Languages. F,W,S
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, D. Long, O. Arden, A. Van Gelder, C. Flanagan

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. Introduction to Software Engineering. 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. (Formerly Software Methodology.) Prerequisite(s): satisfaction of the Entry Level Writing and Composition requirements and course 101. The Staff, J. Whitehead, N. Norouzi, L. Werner, R. Jullig, 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. (General Education Code(s): PR-E.) J. Whitehead, R. Jullig, 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. The Staff, J. Whitehead, R. Jullig, L. Werner, L. De Alfaro

119. Software for Society. W
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, S. Lodha

121. Mobile Applications. F,S
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. The Staff, N. Norouzi, L. De Alfaro

122. Computer Security. W,S
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. E. Miller, O. Arden, (F) The Staff

128. Distributed Systems: File Sharing, Online Gaming, and More. F,W
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. The Staff, P. Alvaro, D. Long, E. Miller

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,W,S
Various representations for regular languages, context-free grammars, normal forms, simple parsing, pumping lemmas, Turing machines, the Church-Turing thesis, intractable problems, the P-NP question. Prerequisite(s): course 101. D. Bailey, P. Tantalo, M. Warmuth, S. Comandur, P. Kolaitis, D. Helmbold, A. Van Gelder

132. Computability and Computational Complexity. S
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. D. Bailey, 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: an overview of a different model of computation (e.g., quantum computing); an overview of a major complexity class; a critical analysis of the Church-Turing thesis. Prerequisite(s): course 130; satisfaction of the Entry Level Writing and Composition requirements.Concurrent enrollment in course 132 required. Enrollment by permission of instructor. Enrollment limited to 15. D. Bailey, M. Warmuth, D. Helmbold, P. Kolaitis, A. Van Gelder

140. Artificial Intelligence. W,S
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. The Staff, L. Getoor, M. Walker

142. Machine Learning. 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. Prerequisite(s): course 101, Mathematics 23A, and Applied Mathematics and Statistics 131 or Computer Engineering 107. M. Warmuth, S. Chaturvedi, D. Helmbold

143. Introduction to Natural Language Processing. W
Introduces the theory and practice of natural language processing (NLP)-- the creation of computer programs that can understand, generate, and learn natural language. Introduces the three major subfields of NLP: syntax (the structure of a sentence); semantics (the explicit meaning of a single sentence); and pragmatics (the implicit meaning of a sentence when it is used in a specific discourse). Projects focus on the techniques useful for a particular application area, alternating in different years. Project application areas include information extraction, narrative understanding, sentiment analysis, dialogue systems, and question answering. Prerequisite(s): courses 5P and 101. M. Walker, The Staff

144. Applied Machine Learning. W
Provides a practical and project-oriented introduction to machine learning, with an emphasis on neural networks and deep learning. Starts with a discussion of the foundational pieces of statistical inference, then introduces the basic elements of machine learning: loss functions and gradient descent. Using these, presents logistic regression, or one-layer networks, and then moves on to more complex models: deep neural networks, convolutional networks for image recognition, and recurrent networks and LSTM for temporal and sequence data. Also covers the basics of dataset preparation and visualization and the performance characterization of the models created. Includes weekly homework and a final project that can be done in groups. Prerequisite(s): course 101. Enrollment is restricted to juniors and seniors. (General Education Code(s): SR.) N. Norouzi, L. De Alfaro

153. Functional Programming. *
An in-depth study of the functional style of programming and functional abstraction, including the study of applicative functors and monads, and monadic parsers. Prerequisite(s): course 101 or 109. Enrollment is restricted to junior and senior computer science majors. Enrollment limited to 75. C. Flanagan

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 major project required. Students cannot receive credit for both this course and course 260 in quarters when they are offered concurrently. Mastery of materials in the prerequisite courses will be verified with a quiz or assignment during the first two weeks of the course. Prerequisite(s): course 101 and Mathematics 21 or Applied Mathematics and Statistics 10. Concurrent enrollment in course 160L is required. J. Davis, A. Pang

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. Topics include OpenGL, WebGL, rubberbanding, picking, sliders, buttons, dialog, event handling, double buffering, lighting, shading, materials, and textures. The topic list may be updated to reflect technological changes. Concurrent enrollment in course 160 is required. J. Davis, A. Pang

161. Introduction to Data Visualization. W
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. Prerequisite(s): course 160 or equivalent. Concurrent enrollment in course 161L is required. S. Lodha, A. Pang

161L. Data Visualization Laboratory (2 credits). W
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. Concurrent enrollment in course 161 is required. S. Lodha, A. Pang

162. Advanced Computer Graphics and Animation. *
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 is required. J. Davis, A. Pang

162L. Advanced Computer Graphics and Animation Laboratory (2 credits). *
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. J. Davis, A. Pang

165. Data Programming for Visualization. *
Presents the basics of open-source programming tools to perform data analysis and create interactive visualizations and maps for the web, data integrity and scraping, statistical computation, simple and novel visualizations, and geomapping. The examples are drawn from social science, public policy, and data journalism. Prerequisite(s): course 101. S. Lodha

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 Technology & Info Management 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 is restricted to juniors and seniors. Enrollment limited to 100. J. Musacchio

166B. Game Theory and Applications II.
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 is restricted to juniors and seniors. Enrollment limited to 40. The Staff

168. Introduction to Augmented Reality and Virtual Reality (7 credits). F,S
Covers the concepts and methods needed to develop augmented reality (AR) and virtual reality (VR) applications. Topics include 3D modeling, graphics rendering, image compositing, occlusion handling, sensors, computer vision and image analysis, toolkits for AR, different display options, dynamics, interaction, and navigation. Prerequisite(s): course 160/L. Some knowledge of mobile platforms (e.g., CMPS 121 or CMPE 161) is helpful, but not required. Enrollment is by instructor permission. Enrollment is restricted to juniors and seniors. Enrollment limited to 30. J. Davis, A. Pang

180. Database Systems I. F,W
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. The Staff, S. Finkelstein, P. Kolaitis

180W. Database Systems (2 credits). *
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 is required. Enrollment limited to 15. P. Kolaitis

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. S. Finkelstein, The Staff

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. S. Finkelstein, The Staff

183. Web Applications. F,S
The World-Wde Web is one of the main mechanisms by which computer applications are delivered to users. This course introduces the design of Web applications. Students learn the main technologies involved, and build web applications as part of homework assignments and group class projects.(Formerly Hypermedia and the Web.) Prerequisite(s): courses 12B and 12M. (General Education Code(s): PR-E.) The Staff, R. Jullig, L. De Alfaro, J. Whitehead

184. Data Wrangling and Web Scraping. S
Python basics; data extraction from CSV, JSON, XML, Excel, PDF, encoded text files; data cleaning, finding duplicates, missing data, fuzzy matching; data exploration, joining, aggregating, separating, correlation, clustering; web scraping, APIs, scraping data from social media, open data network. Prerequisite(s): course 101. Enrollment limited to 50. S. Lodha

185. Technical Writing and Communication in Computer Science. F,S
Writing and communication by computer science professionals to a technical audience. Geared toward students planning to pursue an advanced degree in computer science. Assignments include: cover letter and resume for job application, statement of purpose for graduate school application, algorithm description and analysis, user documentation, proposal preparation, critical analysis of published papers, survey of the literature, term paper, and oral presentations. Prerequisite(s): course 101, one additional upper-division Computer Science course, and satisfaction of the Entry Level Writing and Composition requirements. Enrollment is restricted to computer science majors, or by permission of the instructor. May be repeated for credit. P. Kolaitis, The Staff

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, M. Walker, J. Davis, S. Lodha

192. Supervised Student Teaching/Tutoring. *
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). *
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 is restricted to graduate students. The Staff, A. Pang, K. Obraczka

201. Analysis of Algorithms. F,W
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 is 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. The Staff, P. Tantalo, D. Achlioptas, D. Helmbold, A. Van Gelder

203. Programming Languages. S
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 is restricted to graduate students; undergraduate students may enroll for this course if they have completed course 112 and have the consent of the instructor. The Staff, A. Van Gelder, C. Flanagan

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 is restricted to graduate students. 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, S. Comandur, D. Helmbold, P. Kolaitis

211. Combinatorial Algorithms. W
Fundamental combinatorial algorithms, graph algorithms, flow problems, matching problems, linear programming, integer programming, NP-completeness, approximation algorithms for optimization problems. Prerequisite(s): course 201. A. Van Gelder, D. Achlioptas, P. Kolaitis

217. Logic in Computer Science. F
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 is restricted to graduate students. P. Kolaitis, A. Van Gelder

218. Foundations of Data Science. S
Examines the mathematical and algorithmic foundations of data science including high dimensional data, probabilistic inequalities, dimensionality reduction, correlation detection, streaming algorithms, and clustering. Prerequisite(s): course 201. Enrollment is restricted to graduate students. D. Achlioptas, The Staff

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 is restricted to graduate students; undergraduates by interview only. D. Long, E. Miller

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 is restricted to graduate students or consent of instructor. E. Miller, O. Arden, D. Long

229. Storage Systems. S
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 is restricted to graduate students. E. Miller, C. Maltzahn, D. Long

232. Distributed Systems. S
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 is restricted to graduate students. E. Miller, P. Alvaro, C. Maltzahn, D. Long

236. Understanding Cryptography. *
Cryptography has become ubiquitous, from light bulbs to atomic weapons. This course provides both a comprehensive introduction to applied cryptography and an additional focus on the human issues caused by bad implementations, bad processes, and broken algorithms. Knowledge of C Programming, Linux, and Virtual machines is required. (Also offered as Computer Engineering 236. Students cannot receive credit for both courses.) Prerequisite(s): course 201. Enrollment is restricted to graduate students. D. Long

240. Artificial Intelligence. W
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. The Staff, N. Norouzi, M. Walker

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. The Staff

242. Machine Learning. F,S
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 is restricted to graduate students. V. Swaminathan, N. Norouzi, D. Helmbold, M. Warmuth

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 Computational Media 245. Students cannot receive credit for both courses.) Enrollment is 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. *
Surveys topics in contemporary deductive artificial intelligence (AI). Coursework involves weekly readings and a project. Prerequisite(s): courses 201 and 240. Enrollment is restricted to graduate students. The Staff

250. Introduction to Information Theory. S
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, The Staff

253. Advanced Programming Languages. W
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. F
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 is restricted to graduate students; undergraduates by interview only. Enrollment limited to 20. J. Davis, A. Pang

261. Advanced Visualization. W
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 is 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, real-time animation, and special-purpose animation hardware. Enrollment is restricted to graduate students. Enrollment limited to 15. J. Davis, A. Pang

263. Data Driven Discovery and Visualization. *
Explores high-quality interdisciplinary research using socio-economic data and software available on the Internet, and data curation, computation, and visualization to strengthen scientific inquiry to bear on large-scale societal problems. Applications include inequality, poverty, water, energy, environment, health, education, and democracy. Enrollment restricted to graduate students. Enrollment by instructor consent. Enrollment limited to 25. S. Lodha

266A. Data Visualization and Statistical Programming in R (3 credits). F
Introduces students to data visualization and statistical programming techniques using the R language. Covers the basics of the language, descriptive statistics, visual analytics, and applied linear regression. Enrollment is by permission of the instructor. (Also offered as Applied Math and Statistics 266A. Students cannot receive credit for both courses.) Enrollment limited to 30. The Staff, A. Rodriguez, S. Lodha

266B. Advanced Statistical Programming in R (3 credits). *
Teaches students already familiar with the R language advanced tools such as interactive graphics, interfacing with low-level languages, package construction, debugging, profiling, and parallel computation. (Also offered as Applied Math and Statistics 266B. Students cannot receive credit for both courses.) Prerequisite(s): Applied Mathematics and Statistics 266A or Computer Science 266A. Enrollment limited to 30. A. Rodriguez, S. Lodha

266C. Introduction to Data Wrangling (3 credits). *
Introduces students to concepts and tools associated with data collection, curation, manipulation, and cleaning including an introduction to relational databases and SQL, regular expressions, API usage, and web scraping using Python. (Also offered as Applied Math and Statistics 266C. Students cannot receive credit for both courses.) Prerequisite(s): Applied Mathematics and Statistics 266A or Computer Science 266A. Enrollment limited to 30. A. Rodriguez, S. Lodha

272. Evolutionary Game Theory. *
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.) The Staff, B. Sinervo, D. Friedman, M. Warmuth

276. Software Engineering. *
Introduction to the general principles of software engineering. Covers current and classical topics from both practical and theoretical viewpoints. Topics include software evolution, project management, software inspections, design methods, requirements analysis and specification, software testing, maintenance, software implementation, human interfaces, and software engineering experimentation. (Formerly Computer Engineering 276.) Enrollment is restricted to graduate students; undergraduates may enroll in this course if they have completed Computer Science 115. The Staff, L. De Alfaro, J. Whitehead

277. Principles of Database Systems. W
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 201 or equivalent or consent of instructor. Enrollment is restricted to graduate students. Enrollment limited to 20. The Staff, N. Norouzi, S. Finkelstein, P. Kolaitis

278. Design and Implementation of Database Systems. F
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 is restricted to graduate students. Enrollment limited to 20. The Staff, S. Finkelstein, P. Alvaro, P. Kolaitis

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 is restricted to graduate students. Enrollment limited to 20. The Staff

280A. Seminar in Computer Science Research (2 credits). *
Weekly seminar covering topics of current research in computer science. Enrollment by permission of instructor. May be repeated for credit. M. Walker, 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. P. Alvaro

280G. Seminar on Software Engineering (2 credits). *
Weekly seminar covering topics of current research in software engineering. Prerequisite(s): permission of instructor. Enrollment is restricted to graduate students. Enrollment limited to 30. May be repeated for credit. L. De Alfaro, 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 is restricted to graduate students. May be repeated for credit. J. Davis

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

280L. Seminar on Logic in Computer Science (2 credits). F,W,S
Covers advanced research topics from the recent literature in the uses of logic in computer science with particular emphasis on the applications of logic to the representation and the management of data. Involves presentations from UCSC students and faculty, and guest talks from researchers in other academic institutions or industrial research labs. Enrollment is by permission of the instructor. Enrollment is restricted to graduate students. Enrollment limited to 15. May be repeated for credit. P. Kolaitis

280M. Seminar on Machine Learning (2 credits). F,W,S
Weekly seminar covering topics of current interest in machine learning. Enrollment is by permission of the instructor. Enrollment is restricted to graduate students. May be repeated for credit. M. Warmuth, D. Helmbold, N. Norouzi, L. Getoor, S. Vishwanathan, D. Achlioptas

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

280Z. Seminar in Natural Language Processing and Dialogue (2 credits). W
Covers advanced topics and current research in natural language processing. Focuses on student presentations and seminar participation. Enrollment is restricted to graduate students. Enrollment is by permission of the instructor. Enrollment limited to 15. May be repeated for credit. M. Walker

290A. Topics in Algorithms and Complexity Theory: Probabilistic Algorithms and Average Case Analysis. F
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 is restricted to graduate students. Enrollment limited to 15. May be repeated for credit. S. Comandur, 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. *
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. L. Getoor, D. Helmbold

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 is restricted to graduate students. 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 is restricted to graduate students. Enrollment limited to 20. May be repeated for credit. The Staff

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 is restricted to graduate students and upper-division undergraduates. May be repeated for credit. The Staff

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 is restricted to graduate students; undergraduates may enroll with permission of instructor. Enrollment limited to 35. May be repeated for credit. J. Whitehead, L. De Alfaro, C. Flanagan

290H. Topics in Database Systems. *
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 is restricted to graduate students. Enrollment limited to 20. May be repeated for credit. P. Kolaitis

290L. Topics in Crowdsourcing and Collaboration. *
Explores the foundations of crowdsourcing and computer-mediated collaboration. Covers the algorithmic and statistical foundations of crowdsourcing, introducing and analyzing algorithms, and experimenting with concrete systems. Also, provides an introduction to computational systems for mediating user interaction and collaboration. Enrollment is restricted to graduate students. L. De Alfaro

290P. Data Privacy Via Machine Learning, and Back. *
Helps students achieve both expository knowledge and expertise in the field of data privacy. Focuses on fundamental techniques used in designing privacy-preserving, machine-learning systems in both academia and in the industry. Students are expected to read and understand recent research papers in the topic. Prerequisite(s): courses 201 and 242 or equivalent. Enrollment is restricted to graduate students. May be repeated for credit. A. Guha Thakurta

290Q. Topics in Programming Languages. *
Current research topics on computer programming languages. Topics vary year to year. Students read papers from current conferences and journals, and present class lectures. A research project is required. Prerequisite(s): course 203. Enrollment is restricted to graduate students. May be repeated for credit. C. Flanagan

290S. Advanced Topics in Computer Systems. *
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 is restricted to graduate students; qualified undergraduates may enroll with instructor's consent. May be repeated for credit. The Staff, E. Miller, P. Alvaro, C. Maltzahn, D. Long

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 is restricted to graduate students. May be repeated for credit. J. Davis

290X. Cryptography and Computer Security. *
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 toward degree requirements. Students submit petition to sponsoring agency. May be repeated for credit. The Staff

* Not offered in 2018-19

[Return to top]

Revised: 07/15/18