Undergraduate / Computer Science Major (BS/BA) / CS Core, Breadth, and Depth RequirementsCS Depth: Security
The courses below fulfill the Depth: Security requirement in computer science.
The compiler is the programmer's primary tool. Understanding the compiler is therefore critical for programmers, even if they never build one. Furthermore, many design techniques that emerged in the context of compilers are useful for a range of other application areas. This course introduces students to the essential elements of building a compiler: parsing, context-sensitive property checking, code linearization, register allocation, etc. To take this course, students are expected to already understand how programming languages behave, to a fairly detailed degree. The material in the course builds on that knowledge via a series of semantics preserving transformations that start with a fairly high-level programming language and culminate in machine code. This course satisfies the project requirement.
Data models and database design. Modeling the real world: structures, constraints, and operations. The entity relationship to data modeling (including network hierarchical and object-oriented), emphasis on the relational model. Use of existing database systems for the implementation of information systems. This course satisfies the project requirement.
A top-down exploration of networking using the 5-layer model and the TCP/IP stack. HTTP, FTP, DNS, BSD Sockets, concurrent servers, checksums, reliable transport with stop-and-wait, go-back-n, selective repeat, flow control, congestion control, TCP, unicast routing, multicast routing, router architecture, IP, IPv6, IP multicast, MAC protocols and LANs, Ethernet , wireless networks, and network security. Over the course of the quarter, students build web clients and servers, a fully compatible TCP/IP stack that can run them, and evaluate routing protocols in simulation. This course satisfies the project requirement.
A fundamental overview of operating systems. Topics covered include: Operating system structures, processes, process synchronization, deadlocks, CPU scheduling, memory management, file systems, secondary storage management. Requires substantial programming projects. Approved for Systems Breadth and Depth in the CS curriculum in McCormick and Weinberg This course satisfies the project requirement.
Basic principles behind distributed systems (collections of independent components that appear to users as a single coherent system) and main paradigms used to organize them. This course satisfies the project requirement
The past decade has seen an explosion in the concern for the security of information. This course introduces students to the basic principles and practices of computer and information security. Focus will be on the software, operating system and network security techniques with detailed analysis of real-world examples. Topics include cryptography, authentication, software and operating system security (e.g., buffer overflow), Internet vulnerability (DoS attacks, viruses/worms, etc.), intrusion detection systems, firewalls, VPN, Web and wireless security. Students with good performance in the class will be awarded researchship in the academic year and/or the summer. This course can help satisfy the project course requirement for undergraduates and satisfy the breadth requirement in computer systems for system Ph.D. students. This course satisfies the project requirement
This course will focus on remote computer penetration (hacking). The class will introduce basic theory for many different types of attacks; then we will actually carry them out in 'real-world' settings. The goal is to learn security by learning how to view your machine from a hacker's perspective. In addition, we encourage students to participate in the UCSB International Capture the Flag Competition. Capture the Flag is a network security exercise where the goal is to exploit other machines while defending your own. In fact, this course should prepare you for any one of many capture the flag competitions that take place year round.
This course will cover a broad range of topics related to networking problems in cloud computing, including network structure of Internet Data Centers, layer 2 data network fabric, lease management and partitioning, data placement for geo-distributed cloud services, energy efficient cloud design, flow scheduling, congestion control, i.e., the incast problem, and more.
This course will examine methods for APT detection by introducing various topics in the broad areas of intrusion detection, alert correlation, containment and recovery. Simultaneously, more foundational topics on information flow analysis and graph analytics will be covered.
This course will focus on Digital Forensics and Incident Response (Investigations). This class will introduce the basic theory of Digital Forensics and in the lab, we will actually apply the knowledge in practical scenarios. The goal is to learn how to investigate the digital artifacts left on hard drives, logs and other networking devices. The course shall prepare you to conduct data preservation and analysis on Windows, Linux and Macintosh platforms. Students will also get exposure to the Techniques, Tactics and Procedures (TTPs) of the prominent Threat Actors and will learn to conduct digital investigations with a sound process.
The Internet has evolved from a small, well controlled, and trusted network, into a gigantic, loosely controlled, and highly uncooperative infrastructure of astonishing scale and complexity. Not only that different hosts or networks have divergent functional or economical interests, but the Internet has become a “playground” for malicious denial-of-service attackers of all kinds. Moreover, its everyday operation is often poorly understood, and existing solutions to many of the classical challenges remain unsatisfactory. Hence, the design of Internet is far from complete, and it is certain that it will continue to change. This class is intended to help you understand how and why, by letting the Internet to become your “playground” for a quarter.
The bulk of the time in this class examining a virtual machine monitor (VMM) in depth, at the source code level. The course explains the hardware/software interface of a modern x86 computer in detail. A VMM is an operating system that is implemented directly on top of the hardware interface, and itself presents a hardware interface to higher-level software. Students will also acquire valuable kernel development skills. This course satisfies the project requirement
Advanced operating systems. Topics covered include: Approved for Systems Breadth and Depth in the CS curriculum in McCormick and Weinberg This course satisfies the project requirement.