Upper-Division

CSE 100 Logic Design

Boolean algebra, logic minimization, finite-state machine design, sequential circuits, common logic elements, programmable logic devices, and an introduction to system level design. The electrical behavior of circuits including three state outputs, propagation delay, logic levels, and fanout.

Credits

5

Requirements

Prerequisite(s): CSE 12; previous or concurrent enrollment in CSE 100L is required.

CSE 100L Logic Design Laboratory

Laboratory sequence illustrating topics covered in course 100. Two 2-hour laboratory sessions per week. Weekly laboratory assignments which require the use of the oscilloscopes, TTL circuits, computer-aided design and simulation tools, and programmable logic.

Credits

2

Requirements

Prerequisite(s): CSE 12; previous or concurrent enrollment in CSE 100 is required.

CSE 101 Introduction to Data Structures and Algorithms

Introduction to abstract data types and basics of algorithms. Linked lists, stacks, queues, hash tables, trees, heaps, and graphs will be covered. Students will also be taught how to derive big-Oh analysis of simple algorithms. All assignments will be in C/C++. (Formerly Computer Science 101 Algorithms and Abstract Data Types.)

Credits

5

Requirements

Prerequisite(s): CSE 12 or BME 160; CSE 13E or ECE 13 or CSE 13S; and CSE 16; and CSE 30; and MATH 11B or MATH 19B or MATH 20B or AM 11B or ECON 11B.

CSE 101M Mathematical Thinking for Computer Science

Introduction to problem-solving and proof techniques for computer science: modeling CS problems using mathematical concepts; solving problems and inventing mathematical arguments; writing rigorous, understandable proofs using LaTeX. Applications in all CS areas with focus on analyzing algorithms, programs, and protocols.

Credits

5

Requirements

Prerequisite(s): CSE 101.

CSE 101P Introduction to Data Structures and Algorithms in Python

Introduction to abstract data types and basics of algorithms. Linked lists, stacks, queues, hash tables, trees, heaps, and graphs are covered. Students taught how to derive big-Oh analysis of simple algorithms. All assignments are in Python. Note that CSE 101P assumes Python experience, students trained in a different language should self-study Python to prepare for CSE 101P. See CSE 20 Testout Exam for resources and further information. Students cannot receive credit for this course and CSE 101. Students intending to complete the Computer Science B.S. should enroll in course CSE 101.

Credits

5

Requirements

Prerequisite(s): CSE 16; and CSE 20 or CSE 20 Test Out; and CSE 30; and MATH 11B or MATH 19B or MATH 20B or AM 11B. Enrollment is restricted to computer science and biolmolecular engineering and bioinformatics majors.

CSE 102 Introduction to Analysis of Algorithms

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. (Formerly Computer Science 102.)

Credits

5

Requirements

Prerequisite(s): CSE 101.

CSE 103 Computational Models

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. (Formerly CMPS 130.)

Credits

5

Requirements

Prerequisite(s): CSE 101.

CSE 104 Computability and Computational Complexity

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. (Formerly CMPS 132.)

Credits

5

Requirements

Prerequisite(s): CSE 103.

CSE 105 Modern Algorithmic Toolbox

Undergraduate course on the modern algorithmic toolbox, meant for undergraduate students with a strong mathematical background. Students need familiarity with discrete math, analysis of algorithms, basic analysis, probability theory, and graph theory. Class is aimed at students who want to learn more about the central ideas and algorithmic techniques that are used in modern data science applications. Class focuses on the theoretical underpinnings of these algorithms as well as their practical applications and implementation details.

Credits

5

Requirements

Prerequisite(s): CSE 102 or equivalent or instructor consent. Students need a solid background in analysis of algorithms, discrete math, probability theory, graph theory, and overall mathematical maturity.

CSE 106 Applied Graph Theory and Algorithms

Basic concepts and algorithms are reviewed including trees, Eulerian and Hamiltonian graphs, and graph transversal. Algorithms are explored to solve problems in connectivity, routing, matching, and embedding of graphs. Graph theory and algorithms are developed around applications in computer engineering. (Formerly Computer Engineering 177.)

Credits

5

Requirements

Prerequisite(s): CSE 101.

CSE 107 Probability and Statistics for Engineers

Introduction to fundamental tools of stochastic analysis. Probability, conditional probability; Bayes Theorem; random variables and transforms; independence; Bernnoulli trials. Statistics, inference from limited data; outcomes of repeated experiments; applications to design; assessment of relative frequency and probability; law of large numbers; precision of measurements. Elements of stochastic processes, Poisson processes; Markov chains. Students cannot receive credit for this course and Applied Mathematics and Statistics 131. (Formerly Computer Engineering 107.)

Credits

5

Requirements

Prerequisite(s): CSE 16; and AM 30 or MATH 22 or MATH 23A.

General Education Code

SR

CSE 108 Algorithmic Foundations of Cryptography

Focuses on some of the foundational aspects of modern cryptography, namely, private and public key cryptography, digital signatures, pseudorandom generators and functions, message authentication codes, hash functions, and random oracles. Course also connects the formal concepts with some real-world applications, like RA, SSL, and bitcoin, exposing students to general concepts of probability theory, number theory, and rigorous proofs. (Formerly Computer Science 118.)

Credits

5

Requirements

Prerequisite(s): CSE 101. Enrollment restricted to computer engineering and computer science majors.

CSE 110A Fundamentals of Compiler Design I

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. (Formerly Computer Science 104A.)

Credits

5

Requirements

Prerequisite(s): CSE 12 and CSE 101.

CSE 110B 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 CSE 211. Taught in conjunction with CSE 211. (Formerly Computer Science 104B.)

Credits

5

Requirements

Prerequisite(s): CSE 110A.

CSE 111 Advanced Programming

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.

Credits

5

Requirements

Prerequisite(s): CSE 15 and CSE 15L; or CSE 13S and CMPM 35; or CSE 13E and CMPM 35; or ECE 13 and CMPM 35; or CSE 101.

CSE 112 Comparative Programming Languages

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. (Formerly Computer Science 112.)

Credits

5

Requirements

Prerequisite(s): CSE 101.

CSE 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.

Credits

5

Requirements

Prerequisite(s): CSE 12 and CSE 101. CSE 120 recommended.

CSE 114A Foundations of Programming Languages

Problem solving emphasizing recursion, data abstraction, and higher-order functions. Introduction to types and type checking, modular programming, and reasoning about program correctness. (Formerly CSE 116, Introduction to Functional Programming.)

Credits

5

Requirements

Prerequisite(s): CSE 101.

CSE 114B 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. (Formerly CSE 114.)

Credits

5

Requirements

Prerequisite(s): CSE 114A. Enrollment is restricted to junior and senior computer science majors.

CSE 115A Introduction to Software Engineering

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 Computer Science 115.)

Credits

5

Requirements

Prerequisite(s): satisfaction of the Entry Level Writing and Composition requirements and CSE 101 and CSE 130.

CSE 115B Software Design Project

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. (Formerly Computer Science 116.)

Credits

5

Requirements

Prerequisite(s): CSE 115A.

General Education Code

PR-E

CSE 115C Software Design Project II

Continuation of CSE 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. (Formerly Computer Science 117.)

Credits

5

Requirements

Prerequisite(s): CSE 115B.

CSE 115D Software Design Project - Accelerated

Accelerated version of CSE 115B and CSE 115C. Students work in teams to develop, test, document and deploy a substantial software project. Each team gives a formal presentation and demonstration of their project. Students cannot receive credit for both CSE 115D and any part of the 115B-115C sequence.

Credits

5

Requirements

Prerequisite(s): CSE 115A.

General Education Code

PR-E

CSE 117 Open Source Programming

Teaches the principles of open source software development. By participating in diverse projects, students experience the process of developing software in a distributed, community-centric environment. Students learn about the tools, processes, and soft skills that are essential in this context.

Credits

5

Requirements

Prerequisite(s): CSE 101; and CSE 102 or CSE 111 or CSE 115A. Enrollment restricted to School of Engineering majors.

CSE 118 Mobile Applications

Introduces the tools and techniques required to develop the sophisticated interactive mobile applications we use daily on our Android and iOS devices. Native (specific to Android or iOS devices) and cross-platform (designed to work on both Android and iOS) development is undertaken with deployment to device emulators and, optionally, personal devices. Ownership of an Android or iOS device is not required and confers no advantage. (Formerly CMPS 121.)

Credits

5

Requirements

Prerequisite(s): CSE 101. Enrollment is restricted to juniors and seniors.

CSE 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. (Formerly Computer Science 119.)

Credits

5

Requirements

Prerequisite(s): CSE 101.

General Education Code

PE-T

CSE 120 Computer Architecture

Introduction to computer architecture including examples of current approaches and the effect of technology and software. Computer performance evaluation, basic combinatorial and sequential digital components, different instruction set architectures with a focus on the MIPS ISA and RISC paradigm. Evolution of CPU microarchitecture from single-cycle to multi-cycle pipelines, with overview of super-scalar, multiple-issue and VLIW. Memory system, cache, virtual memory and relationship between memory and performance. Evolution of PC system architecture. May include advanced topics, such as parallel processing, MIMD, and SIMD.

Credits

5

Requirements

Prerequisite(s): CSE 12; and CSE 13E, or CSE 13S, or ECE 13, or CSE 15 and CSE 15L. CSE 16 recommended.

CSE 121 Embedded System Design

The design and use of microprocessor-based embedded systems. Covers microprocessor and microcontroller architecture, programming techniques, bus and memory organization, DMA, timing issues, interrupts, peripheral devices, serial and parallel communication, and interfacing to analog and digital systems. (Formerly Microprocessor System Design, and formerly offered as two courses, CMPE 121 and CMPE 121L.)

Credits

7

Requirements

Prerequisite(s): CSE 12, CSE 100, CSE 100L; and CSE 13E or CSE 13S or ECE 13 or CSE 15 and CSE 15L; and ECE 101, ECE 101L, PHYS 5C and PHYS 5N.

CSE 122 Introduction to VLSI Digital System Design

Introduces very large scale integrated (VLSI) custom integrated circuits. Topics include: semiconductor manufacturing, logic families, field-effect transistors (FETs), interconnect models, simulation, and circuits. Introduces the design flow from logic design to layout with a focus on high performance and low power. Students cannot receive credit for this course and CSE 222A. (Formerly Computer Engineering 122.)

Credits

5

Requirements

Prerequisite(s): CSE 100, CSE 100L, ECE 101, and ECE 101L.

CSE 123A Engineering Design Project I

First of a two-course sequence that is the culmination of the engineering program. Students apply knowledge and skills gained in elective track to complete a major design project. Students complete research, specification, planning, and procurement for a substantial project. Includes technical discussions, design reviews, and formal presentations; engineering design cycle, engineering teams, and professional practices. Formal technical specification of the approved project is presented to faculty.

Credits

5

Requirements

Prerequisite(s): CSE 121; previous or concurrent enrollment in CSE 185E.

General Education Code

PR-E

CSE 123B Engineering Design Project II

Second of two-course sequence in engineering system design. Students fully implement and test system designed and specified in CSE 123A. Formal written report, oral presentation, and demonstration of successful project to review panel of engineering faculty required.

Credits

7

Requirements

Prerequisite(s): CSE 123A, and CSE 185E or CSE 185S.

CSE 125 Logic Design with Verilog

Verilog digital logic design with emphasis on ASIC and FPGA design. Students design and verify large-scale systems. Assignments and project use the Verilog Hardware Description Language with emphasis on verification and high-frequency ASIC/FPGA targets. May be taught in conjunction with CSE 225. Students cannot receive credit for both courses.

Credits

7

Requirements

Prerequisite(s): CSE 100 and CSE 100L and CSE 120.

CSE 129A Capstone Project I

First of a three-course sequence in which students apply knowledge and skills gained in elective track to complete a major design project. In this first course, students complete the specification and planning for a substantial project. Topics covered: engineering design cycle, engineering teams, and professional practices. (Formerly Computer Engineering 129A.)

Credits

2

Requirements

Prerequisite(s): previous or concurrent enrollment in courses CSE 121 and CSE 121L. Enrollment is restricted to bioengineering, biomolecular engineering and bioinformatics, computer engineering, and robotics engineering majors.

CSE 129B Capstone Project II

Second of a three-course sequence in which students apply knowledge and skills gained in elective track to complete a major design project. In this second course, students complete the research and procurement for a substantial project and a preliminary implementation. Prerequisite(s): CSE 121, CSE 121L, and CSE 129A. Previous or concurrent enrollment in CSE 185. Enrollment by permission of instructor.

Credits

5

General Education Code

PR-E

CSE 129C Capstone Project III

Third of a three-course sequence in which students apply knowledge and skills gained in elective track to complete a major design project. In this third course, students work in teams to complete the project specified and advanced in the first two courses. A formal written report, oral presentation, and demonstration of the successful project to a review panel of engineering faculty is required. Prerequisite(s): CSE 129B and CSE 185. Enrollment by permission of instructor.

Credits

5

CSE 130 Principles of Computer Systems Design

Covers the principles governing computer-systems design and complexity; familiarity with memory, storage, and networking; concurrency and synchronization; layering (abstraction and modularity); naming; client-server and virtualized system models; and performance. Requires significant programming projects demonstrating mastery of these concepts.

Credits

5

Requirements

Prerequisite(s): CSE 12; and CSE 101, or CSE 15 and CSE 15L; and knowledge of C programming language.

CSE 132 Computer Security

Introduction to computer security (including selected topics in network security). Access control. Security in programming languages. Basic cryptography. Security protocols. (Formerly CMPS 122.)

Credits

5

Requirements

Prerequisite(s): CSE 130 or CSE 131 or permission of instructor. Enrollment restricted to School of Engineering majors.

CSE 134 Embedded Operating Systems

Detailed exploration of the internal design of an embedded operating systems kernel. Covers kernel structure and organization, device drivers, I/O systems, file systems, memory management, and security. Students complete significant programming projects that extend or modify existing operating systems. (Formerly Computer Engineering 114.)

Credits

5

Requirements

Prerequisite(s): CSE 120 and CSE 130.

CSE 138 Distributed Systems

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. (Formerly CMPS 128, Distributed Systems: File Sharing, Online Gaming, and More.)

Credits

5

Requirements

Prerequisite(s): CSE 130 or CSE 131.

CSE 140 Artificial Intelligence

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.

Credits

5

Requirements

Prerequisite(s): CSE 101; and CSE 40 or STAT 132.

CSE 142 Machine Learning

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.

Credits

5

Requirements

Prerequisite(s): CSE 40 or STAT 132; and CSE 101; and AM 30, or MATH 22, or MATH 23A; and STAT 131 or CSE 107.

CSE 143 Introduction to Natural Language Processing

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. (Formerly CMPS 143.)

Credits

5

Requirements

Prerequisite(s): CSE 101, and CSE 107 or STAT 131; and CSE 40. Python competence equivalent to CSE 30 is highly recommended.

CSE 144 Applied Machine Learning: Deep Learning

Provides a practical and project-oriented introduction to deep learning techniques. Starts with a review of basic elements of machine learning: training and testing, loss function, gradient descent, linear regression, and logistic regression. Moves on to common deep learning models: feedforward networks, convolutional networks for image recognition, recurrent networks and LSTM for temporal and sequential data, attention models and transformers. Some practical concepts for deep learning, including how to find model parameters, how to train large scale models, techniques for regularization and avoid overfitting, are also covered. A very basic introduction to more complex techniques such as deep reinforcement learning, neural symbolic models and diffusion models is provided in week 9. Selected student teams present their course projects in the last week. (Formerly offered as Applied Machine Learning.)

Credits

5

Requirements

Prerequisite(s): CSE 40 or STAT 132; and CSE 101. Enrollment is restricted to juniors and seniors.

CSE 145 Introduction to Data Mining

Covers the techniques, algorithms, and applications of data mining, including data preprocessing, data exploration, classification, clustering, mining text, and sequential and social data. (Formerly TIM 145.)

Credits

5

Requirements

Prerequisite(s): CSE 15 and CSE 15L or CSE 30 or CSE 13S; and AM 30 or MATH 22 or MATH 23A; and STAT 5 or CSE 107 or STAT 131; and AM 10 or MATH 21; and CSE 16 or ECON 113. Enrollment restricted to juniors and seniors. Graduate students by permission of instructor.

CSE 146 Ethics and Algorithms

Provides an introduction to data-driven and algorithmic decision making, and ethical frameworks for evaluating automated systems. Emphasis on algorithmic literacy, critical analysis, and fundamental limitations of automated decision making. Covers concepts including predictive and causal modeling. Discusses bias, fairness, interpretability, privacy, and accountability. Finally, discusses notions of autonomy and algorithmic auditing.

Credits

5

Requirements

Prerequisite(s): CSE 101; and CSE 107 or STAT 131; and CSE 40. CSE 142 and CSE 140 are recommended.

CSE 150 Introduction to Computer Networks

Addresses issues arising in organizing communications among autonomous computers. Network models and conceptual layers; Internet-working; characteristics of transmission media; switching techniques (packet switching, circuit switching, cell switching); medium access control (MAC) protocols and local area networks; error-control strategies and link-level protocols; routing algorithms for bridges and routers; congestion control mechanisms; transport protocols; application of concepts to practical wireless and wireline networks and standard protocol architectures. Lab component provides students with hands-on experience in computer networks. Students who have completed CSE 80N can take this course for credit.

Credits

7

Requirements

Prerequisite(s): CSE 16 and CSE 12; and CSE 30, or CSE 15 and CSE 15L.

CSE 151 Advanced Computer Networks

Provides an in-depth coverage of fundamental topics introduced in course 150 including routing, transport, and internetworking. Also introduces advanced concepts not covered in CSE 150 including wireless, application-layer services, security, etc. (Formerly Computer Engineering 151.)

Credits

5

Requirements

Prerequisite(s): CSE 150. Concurrent enrollment in CSE 151L is required.

CSE 151L Advanced Computer Networks Laboratory

Laboratory illustrating the concepts covered in CSE 151: provides students with hands-on experience in computer networks. (Formerly Computer Engineering 151L.)

Credits

2

Requirements

Prerequisite(s): CSE 150. Concurrent enrollment in CSE 151 is required.

CSE 152 Principles of Computer Communication

Course focuses on the design and analysis of protocols for computer communication. Topics include: the safety, liveliness, and performance of communication protocols for medium access control (MAC); link control; routing and switching; multicasting; and end-to-end transport. Students cannot receive credit for this course and CSE 250B.

Credits

5

Requirements

Prerequisite(s): CSE 107, CSE 150, and CSE 150L.

CSE 156 Network Programming

Methods and tools used for network programming. Topics include: operating system (OS) support for network protocols; inter-process communication (IPC) facilities, such as pipes, sockets, and remote procedure call (RPC); design of client and server sides of network applications; network security; and programming projects. (Formerly Computer Engineering 156.)

Credits

5

Requirements

,Prerequisites: CSE 150 and CSE 101. Concurrent enrollment in course CSE 156L is required.

CSE 156L Network Programming Laboratory

Laboratory sequence illustrating concepts taught in CSE 156. Students learn use of network programming tools and methods via programming exercises. (Formerly Computer Engineering 156L.)

Credits

2

Requirements

Prerequisites: CSE 150 and CSE 101. Concurrent enrollment in CSE 156 is required.

CSE 157 Internet of Things

Introduces the key concepts and techniques in the design of Internet of Things (IoT). Topics include dominant architectures and protocols for IoT, wireless infrastructure for IoT, hardware and software development methodologies, embedded software design for IoT, cloud software for IoT, and network and system security. Students work in teams on a project to design, prototype, and test a complete IoT system.

Credits

7

Requirements

Prerequisite(s): CSE 121 and CSE 150.

CSE 160 Introduction to Computer Graphics

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 CSE 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. Lab component will help with 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. (Formerly Computer Science 160.)

Credits

7

Requirements

Prerequisite(s): CSE 101 and MATH 21 or AM 10.

CSE 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 CMPS 161.)

Credits

5

Requirements

Prerequisite(s): CSE 160 or equivalent. Concurrent enrollment in CSE 161L is required.

CSE 161L Data Visualization Laboratory

Complements CSE 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 CMPS 161L.)

Credits

2

Requirements

Concurrent enrollment in CSE 161 is required.

CSE 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. (Formerly CMPS 162.)

Credits

5

Requirements

Prerequisite(s): CSE 160 or equivalent. Concurrent enrollment in CSE 162L is required.

CSE 162L Advanced Computer Graphics and Animation Laboratory

Complements CSE 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. (Formerly CMPS 162L.)

Credits

2

Requirements

Prerequisite(s): concurrent enrollment in CSE 162 is required.

CSE 163 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. (Formerly CMPS 165.)

Credits

5

Requirements

Prerequisite(s): CSE 101.

CSE 164 Computer Vision

Introduces both the basic computer vision concepts and the advanced deep learning methods for computer vision. Topics include fundamentals of image formation, camera imaging geometry, early-/mid-/high-level vision, basics of machine learning and convolutional neural networks for vision.

Credits

5

Requirements

Prerequisite(s): CSE 144.

CSE 165 Human-Computer Interaction

Theory and hands-on practice to understand what makes user interfaces usable and accessible to diverse individuals. Covers human senses and memory and their design implications, requirement solicitation, user-centered design and prototyping techniques, and expert and user evaluations. Interdisciplinary course for social science and engineering majors. Students cannot receive credit for this course and CSE 265 or DANM 231. (Formerly Computer Engineering 131.)

Credits

5

Requirements

Prerequisite(s): CSE 15.

CSE 167 Mobile Sensing and Interaction

Provides hands-on knowledge and experience with modern mobile computing platforms for sensing and interactions tasks. Students learn how to create usable applications on a sensor-laden, mobile computing platform with adequate level of user interface.

Credits

5

Requirements

Prerequisite(s): CSE 13S; or CSE 13E or ECE 13; or CSE 15 and CSE 15L; and PHYS 5A or PHYS 6A; and AM 10 or MATH 21.

CSE 168 Introduction to Augmented Reality and Virtual Reality

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.

Credits

7

Requirements

Prerequisite(s): CSE 160. Some knowledge of mobile platforms (e.g., CSE 118 or CSE 167) is helpful, but not required.

CSE 180 Database Systems I

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. Students that have taken and passed CSE 182 may not take CSE 180 for credit. (Formerly CMPS 180.)

Credits

5

Requirements

Prerequisite(s): CSE 101.

CSE 181 Database Systems II

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.

Credits

5

Requirements

Prerequisite(s): CSE 180 and CSE 130.

CSE 182 Introduction to Database Management Systems

Concepts, approaches, tools, and methodology of database design and utilization. Topics include the relational data model; modeling relationships between entities; dependencies and normal forms; commercial data management languages such as SQL (defining SQL data, SQL queries and modifications, views, indexes, constraints, and triggers); transactions; stored procedures and functions; access to databases from a programming language (Python); relational algebra; query execution plans; and non-relational data models such as JSON and XML. Involves database application development projects. Students that have taken and passed CSE 180 cannot receive credit for CSE 182.

Credits

5

Requirements

Prerequisite(s): CSE 16 or BME 160; and CSE 30. Course restricted to juniors and seniors and intended for non-majors; computer science majors should enroll in CSE 180.

CSE 183 Web Applications

The World-Wide 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. Students cannot receive credit for this course and CSE 186.

Credits

5

Requirements

Prerequisite(s): CSE 15 and CSE 15L, or CMPM 35, or CSE 101.

General Education Code

PR-E

CSE 184 Data Wrangling and Web Scraping

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. (Formerly CMPS 184.)

Credits

5

Requirements

Prerequisite(s): CSE 101.

CSE 185E Technical Writing for Computer Science and Engineering

Writing by engineers and computer scientists to technical audiences. Writing exercises include: cover letter and resume for job application, tutorial writing, grant proposal, document specification, literature review, and a final technical report. Two oral presentations are also required, an in-class presentation and a poster presentation. Students also receive instruction in the use of UC library and journal database resources, and in the writing of a statement of purpose for graduate school application. Also offered as CSE 185S. (Formerly Computer Engineering 185, Technical Writing for Computer Engineers.)

Credits

5

Cross Listed Courses

Cross Listed Courses

CSE 185S

Requirements

Prerequisite(s): satisfaction of Entry Level Writing and Composition requirements; and CSE 12 or CSE 15 or CSE 30 or BME 160 or by permission of the instructor. Enrollment is restricted to computer engineering, bioengineering, bioinformatics, biomolecular engineering and bioinformatics, or network and digital technology majors.

CSE 186 Full Stack Web Development I

Examines current uses of the World Wide Web for delivery of the sophisticated interactive applications used daily. Web applications offer several advantages over traditional, locally installable binaries including heterogeneous deployment, instantaneous access, continuous updates, and the possibility of collaboration at scale. These full stack web applications are typically more complex than their traditional counterparts, requiring the seamless integrating of numerous related technologies if end users are to have a productive experience and the system is to remain robust, performant, and secure. Students cannot receive credit for this course and CSE 183.

Credits

5

Requirements

Prerequisite(s): CSE 15 and CSE 15L, or CSE 30, or CSE 101. Enrollment is restricted to juniors and seniors majoring in computer engineering, computer science, and computer game design.

CSE 187 Full Stack Web Development II

Continues the examination of current uses of the World Wide Web for delivery of the sophisticated interactive applications we use daily. Advanced development techniques are examined with continued emphasis on automated testing. A sizable team project is undertaken to introduce topics including, but not limited to, automated build pipelines, penetration testing, API versioning, and deployment at scale.

Credits

5

Requirements

Prerequisite(s): CSE 186. Enrollment is restricted to juniors and seniors.

General Education Code

PR-E

CSE 191 Computer Science and Technology Seminar

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. (Formerly CMPS 191.)

Credits

2

Repeatable for credit

Yes

CSE 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. (Formerly CMPS 192.)

Credits

5

CSE 192F 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. (Formerly CMPS 192F.)

Credits

2

CSE 193 Field Study

Provides for individual programs of study with specific academic objectives carried out under the direction of a faculty member of the Computer Engineering Department and a willing sponsor at the field site using 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. May not be repeated for credit. Students submit petition to sponsoring agency.

Credits

5

CSE 193F Field Study

Provides for individual programs of study with specific academic objectives carried out under the direction of a faculty member of the Computer Engineering Department and a willing sponsor at the field site using 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. May not be repeated for credit. Students submit petition to sponsoring agency.

Credits

2

CSE 194 Group Tutorial

A program of independent study arranged between a group of students and a faculty member. Students submit petition to sponsoring agency.

Credits

5

Repeatable for credit

Yes

CSE 194F Group Tutorial

A program of independent study arranged between a group of students and a faculty member. Students submit petition to sponsoring agency.

Credits

2

Repeatable for credit

Yes

CSE 195 Senior Thesis Research

Students submit petition to sponsoring agency. Prerequisite(s): satisfaction of the Entry Level Writing and Composition requirements. Computer Engineering majors, CSE 123A or CSE 129A.

Credits

5

CSE 195F Senior Thesis Research

Students submit petition to sponsoring agency. Consent of instructor required. Prerequisite: CSE 123A.

Credits

2

CSE 198 Individual Study or Research

Students submit petition to sponsoring agency.

Credits

5

Repeatable for credit

Yes

CSE 198F Individual Study or Research

Students submit petition to sponsoring agency.

Credits

2

Repeatable for credit

Yes

CSE 199 Tutorial

For fourth-year students majoring in computer engineering. Students submit petition to sponsoring agency.

Credits

5

Repeatable for credit

Yes

CSE 199F Tutorial

For fourth-year students majoring in computer engineering. Students submit petition to sponsoring agency.

Credits

2

Repeatable for credit

Yes