Upper Division

ECS 154A: Computer Architecture

Subject
ECS 154A
Title
Computer Architecture
Status
Active
Units
4.0
Effective Term
2017 Winter Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Introduction to digital design. Interfacing of devices for I/O, memory and memory management. Input/output programming, via wait loops, hardware interrupts and calls to operating system services. Hardware support for operating systems software. Only 1 unit of credit allowed for students who have taken EEC 170. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 050 or EEC 070
Credit Limitation
Only 1 unit of credit allowed for students who have taken EEC 170.
Enrollment Restrictions
Open to Computer Science and Computer Science Engineering Majors only.
Expanded Course Description

Summary of Course Content

  1. Combinational and Sequential Digital Design Boolean algebra, gates. Commonly used MSI circuits such as multiplexers and decoders. Simple arithmetic circuits. Latches and flip-flops. Finite state machine design. Use of simple digital design simulation software to aid in hierarchical system development.
  2. Interrupts and Interconnection hardware Hardware interrupts. Synchronous and asynchronous buses. Bus arbitration.
  3. Memory Types of memory. Decoding of system-level to chip-level addresses. Caches and the memory hierarchy.
  4. Hardware for Support of Operating Systems Hardware support to optimize resource usage, and to implement the abstraction of a separate machine for each user. Design and use of memory-management hardware, either within-CPU or via separate MMU, to support efficient and convenient OS memory allocation.

Illustrative Reading

  • David Patterson and John Hennessy. Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann, 2011. • Stephen Brown, Fundamentals of Digital Logic Custom, McGraw-Hill, 2000.

Potential Course Overlap
None

Final Exam
Yes Final Exam

Justification for No Final Exam
final exam

Course Category

ECS 153A: Computer & Information Security & Privacy I

Subject
ECS 153A
Title
Computer & Information Security & Privacy I
Status
Active
Units
4.0
Effective Term
2025 Fall Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Basic confidentiality, integrity, authentication, availability, and privacy principles; encryption; security and privacy in software design; security in a networked society; laws and policies; security and privacy policies; basic models; introduction to assurance; real-world applications; business models and their effect on people; phishing and other social engineering attacks. GE: SE.
Prerequisites
ECS 150; (ECS 152A or EEC 173A strongly recommended)
Credit Limitation
Only 2 units for student who have taken ECS 113
Enrollment Restrictions
Pass One open to Computer Science and Computer Science Engineering Majors only.
Expanded Course Description

Summary of Course Content:

  1. What are security and privacy; why they are important; what happens when they fail
  2. Security policies, privacy policies; basics of policy modeling
  3. Encryption: symmetric (e.g., AES), asymmetric (e.g. RSA); how they are used; current issues
  4. Authentication: methods; passwords and attacking them; biometrics; multifactor authentication
  5. Access control: access control matrix, access control lists and capability lists; file protection; privileges and how they work
  6. Networks and security: organizing networks for security; Internet protocols; firewalls; wireless networks and their protections
  7. Malware: Trojan horses, computer viruses and worms; ransomware, adware, spyware
  8. Laws and such: overview of GDPR and CCPA; Computer Fraud and Abuse Act; Intellectual property
  9. Environment: business models; computer use in government,; financial institutions

Illustrative Reading
NIST Special Publication 800-12: An Introduction to Comp[uter Security: the NIST Handbook, 1995
M. Bishop, Computer Security: Art and Science, Second Edition, Addison-Wesley Professional, 2018
R. Anderson, Security Engineering, John Wiley & Sons. 2020
C. Pfleeger, S. L. Pfleeger, L. Coles-Kemp, Security in Computing, Sixth Edition, 2023
Selected readings from the research literature

Potential Course Overlap
The content of this course overlaps ECS 113, but is intended for majors. This course has more technical depth, and focuses more on principles and technology. This course focuses on the big picture: what are security, privacy, and assurance; how do they fit into cyberspace and the "real world"; how do laws and social policies and customs affect all this; privacy and security policies in the "real world" and why they are that way, and applying that to networks in general and the Internet in particular. This is aimed at *all* CS students, not just folks interested in working in cybersecurity.

Course Category

ECS 152C: Advanced Topics in Computer Networks

Subject
ECS 152C
Title
Advanced Topics in Computer Networks
Status
Active
Units
4.0
Effective Term
2014 Fall Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Advanced topics in computer networks, wireless networks, multimedia networking, traffic analysis and modeling, network design and management, network simulation and performance analysis, and design projects in communication networks. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
EEC 173A or ECS 152A
Cross Listing(s)
Same course as EEC 173B.
Expanded Course Description

Summary of Course Content

  1. Wireless Networks
    1. Wireless LANs
    2. Cellular networks
    3. Ad hoc and sensor networks
    4. Routing and transport layer protocols
    5. Standards LTE and IEEE 802.11
  2. Multimedia Networking
    1. Protocols
    2. Adaptive streaming
    3. Multicasting
    4. Video standards, quality and adaptations
  3. Network and Traffic Models
    1. Poisson, self-similarity, heavy-tailed distributions
    2. Properties of large networks
  4. Network measurement, design, and management
    1. Control plane vs. data forwarding plane
    2. Simple Network Management Protocol (SNMP)
    3. Capacity planning and provisioning
    4. Load balancing
  5. Simulation and Performance Analysis
    1. Queuing models
    2. Discrete-event simulator
    3. Traffic traces Computer Usage: The class requires extensive use of UNIX workstations. Laboratory Projects: The course contains a series of design projects with 2-3 students per team. The projects are designed to reinforce certain concepts and to familiarize the students with network measurement/management tools and simulators. Example projects include: (1) Design active and passive network measurement tools; (2) Traffic analysis based on packets captured from the network and/or publicly available traffic traces; (3) Configuration of PC-based or commercial routers; (4) Designing protocols for and programming wireless sensor nodes; (5) Design new wireless protocols and evaluate their performance via network simulators.

Illustrative Reading
• J. Kurose and K. Ross, Computer Networking: A Top-Down Approach Featuring the Internet, 6th Edition, Pearson/Addison Wesley, 2012. • J. Richard Burke, Network Management: Concepts and Practice: A Hands-on Approach, Prentice Hall, 2004 • Instructor’s notes, research papers, lab manuals, and online references.

Potential Course Overlap
This is a follow-up course with emphasis on advanced topics not covered in ECS152A/EEC173A or ECS152B such as wireless sensor networks, network simulation, performance analysis, and traffic modeling. In addition, it has an extensive lab component, which involves Internet measurement, simulations or prototyping.

Course Category

ECS 152B: Computer Networks

Subject
ECS 152B
Title
Computer Networks
Status
Active
Units
4.0
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
TCP/IP protocol suite, computer networking applications, client-server and peer-to-peer architectures, application-layer protocols, transport-layer protocols, transport-layer interfaces, sockets, network programming, remote procedure calls, and network management. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 150; (ECS 152A or EEC 173A)
Enrollment Restrictions
Pass One open to Computer Science and Computer Science Engineering Majors only.
Expanded Course Description

Summary of Course Content

  1. Preliminaries
    1. TCP/IP protocol suite
    2. Client-Server architecture
    3. Peer-to-Peer architecture
    4. Inter-Process Communications (IPC)
  2. Networking Applications and Protocols
    1. File Transfer Protocol (FTP)
    2. Hypertext Transfer Protocol (HTTP)
    3. Telnet / Remote Login
    4. Domain Name System (DNS)
    5. Remote Procedure Calls (RPC)
  3. Transport Layer Protocols
    1. User Datagram Protocol (UDP)
    2. Transmission Control Protocol (TCP)
  4. Transport Layer Interfaces
    1. Socket API
    2. Socket related system calls
    3. I/O Multiplexing
  5. Other Topics
    1. Security
    2. Network management
    3. Design and performance issues Computer usage: Students will have access to the workstations in the Computer Science Department's Instructional Facility. Laboratory Projects: Through a number of assignments/projects (approximately 4-5 over a 10-week period), students will gain hands-on experience by designing and analyzing network and transport layer protocols and computer networking applications.


Illustrative Reading

  • W. R. Stevens, TCP/IP Illustrated, Volume1: The Protocols, Addison-Wesley Professional; 2 edition 2011.
  • J. Kurose and K. Ross, Computer Networking: A Top-Down Approach Featuring the Internet, 6th Edition, Pearson/Addison Wesley, 2012.
  • D. E. Comer, Internetworking with TCP/IP, Vol. I: Principles, Protocols, and Architecture, 5th edition, 2006.
  • D. E. Comer and D. L. Stevens, Internetworking with TCP/IP, Vol. II: Design, Implementation, and Internals, Third Edition, Prentice-Hall, 2009.

Potential Course Overlap
Comparison of this course with other existing courses does not indicate any overlap.

Course Category

ECS 152A: Computer Networks

Subject
ECS 152A
Title
Computer Networks
Status
Active
Units
4.0
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Overview of computer networks, TCP/IP protocol suite, computer-networking applications and protocols, transport-layer protocols, network architectures, Internet Protocol (IP), routing, link-layer protocols, local area and wireless networks, medium access control, physical aspects of data transmission, and network-performance analysis. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
(ECS 032B or ECS 036C); (ECS 132 or EEC 161 or MAT 135A or STA 131A or STA 100 or STA 032 or STA 35B)
Credit Limitation
Only 2 units of credit for students who have taken ECS 157.
Enrollment Restrictions
Pass One open to Computer Science and Computer Science Engineering Majors only.
Cross Listing(s)
Same course as EEC 173A.
Expanded Course Description

Summary of Course Content

  1. Introduction
    1. Terminology
    2. TCP/IP protocol suite c. Layered architecture , protocols, and standards
  2. Networking Applications and Protocols
    1. Distributed applications
    2. Application layer protocols
    3. Introduction to network programming
  3. Transport Layer Protocols
    1. Transport layer services
    2. Reliable transport protocols
    3. Introduction to TCP and UDP
  4. Network Layer Protocols
    1. Packet switching
    2. Circuit switching
    3. Virtual circuit vs. datagram
    4. Statistical multiplexing
    5. Routing
  5. Link Layer Protocols
    1. Flow control
    2. Error detection and control
  6. Broadcast Communication Networks
    1. Local Area Networks (LANs)
    2. Medium Access Control (MAC) protocols
      1. Channel Partitioning: FDMA, TDMA, CDMA
      2. Random Access: ALOHA, CSMA/CD
      3. Controlled Access: Token ring/bus
    3. LAN technologies and topologies
    4. Wireless networks
  7. Physical Layer Aspects of Data Transmission
    1. Signals, spectral analysis, bandwidth
    2. Transmission impairments
    3. Data encoding/decoding
    4. Communication Techniques
  8. Network Performance Analysis
    1. Simple queuing models and simulation analysis
    2. Network measurement tools
    3. Analysis of protocols The course contains a series of design projects with 2-3 students per team. The projects are designed to reinforce certain concepts and to familiarize the students with network measurement tools and simulators and their use in protocol analysis. Example projects include: (1) designing a simulation model to compare performance of different medium access control protocols; (2) monitoring and analyzing network data collected using active/passive network measurement tools or a LAN analyzer; (3) design measurement experiments to analyze a particular performance metric or network anomaly; (4) introductory assignment to configure PC-based or commercial routers; (5) implement a simple client-server application.

Illustrative Reading
Leon-Garcia and Widjaja, Communication Networks, McGrawHill, 2000, or
W. Stallings, Data and Computer Communications, Sixth Edition, NJ: Prentice-Hall, 1999, or

Tanenbaum, Computer Networks, Englewoods Cliffs, NJ: Prentice Hall, 2002


Potential Course Overlap
There is some overlap with course 157, but the audience is different. Course 157 is for non-majors and this course is designed for majors. There is some overlap with the introductory material of ECS 252A and EEC 273, Computer Networks, taught at a graduate level.

Course Category

ECS 150: Operating Systems & System Programming

Subject
ECS 150
Title
Operating Systems & System Programming
Status
Active
Units
4.0
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Basic concepts of operating systems and system programming. Processes and interprocess communication/synchronization; virtual memory, program loading and linking; file and I/O subsystems; utility programs. Study of a real operating system. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
(ECS 034 or ECS 036C or ECS 060); (ECS 154A or EEC 170); Expected knowledge/skills in C programming on UNIX systems
Enrollment Restrictions
Pass One open to Computer Science Engineering, and Computer Engineering Majors only.
Pass Two open to Computer Science Majors.
Expanded Course Description

Summary of Course Content
I. Overview

  • Purposes and Types of Operating Systems
  • Concepts of Layered OS Design, Process-Oriented Structure and Virtual Machines
  • Interactions with Computer Architecture

II. Process Management

  • Need for Concurrency and Threading
  • Concept of Virtual Machine
  • Process Synchronization Mechanisms and Deadlock
  • Process/Thread Scheduling with the consideration of Multicore architecture
  • Program Loading, Linking and Memory Management
  • Introduction to Computer Security

III. I/O and File Systems

  • Layered I/O System Software
  • Terminal I/O
  • Disk I/O
  • File Structures
  • File system reliability and integrity check

IV. Systems Programming

  • System-Dependent Software Design and Development
  • Operating System Software, especially for Process Control, Memory Management, Input/Output and File Management
  • UNIX System Calls


Illustrative Reading
M. McKusick and G. Nevile-Neil, Design and Implementation of the FreeBSD Operating System, Addison-Wesley, 2004.

Potential Course Overlap
None

Course Category

ECS 145: Scripting Languages & Their Applications

Subject
ECS 145
Title
Scripting Languages & Their Applications
Status
Active
Units
4.0
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Goals and philosophy of scripting languages, with Python and R as prime examples. Applications include networking, data analysis and display, and graphical user interfaces (GUIs). GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 034 or ECS 036C or ECS 060; or Consent of Instructor.
Enrollment Restrictions
Pass One open to Computer Science and Computer Science Engineering Majors only.
Expanded Course Description

Summary of Course Content
The intended audience consists of both majors and nonmajors.

I. Basic Python and R programming, especially the object-oriented features.

II. Issues of design philosophy, especially in terms of lack of strong typing.

III. Comparisons between the two languages, in terms of power, clarity, degree of object-orientation, etc.

IV. Parallel processing.

V. Performance issues, such as overcoming interpreted nature of execution.

Illustrative Reading
Instructor's notes

Potential Course Overlap
The programming language R is used to some degree in course 132, but with a different and much narrower emphasis than in this course. Network programming is covered in detail in course 152B, whereas in this course the focus is as an application of Python and R, covered in far less detail than in course 152B.

Course Category

ECS 142: Compilers

Subject
ECS 142
Title
Compilers
Status
Active
Units
4.0
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Principles and techniques of lexical analysis, parsing, semantic analysis, code generation, and code optimization. Implementation of compilers. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 140A; ECS 120; ECS 122A recommended.
Enrollment Restrictions
Pass One open to Computer Science and Computer Science Engineering Majors only.
Expanded Course Description

Summary of Course Content
The lecture topics include the following, not necessarily listed in chronological order:

I. Introduction

  • Interpreters and compilers
  • Phases of a compiler
  • Symbol tables

II. Lexical Analysis

  • Role of lexical analyzers
  • Regular expressions
  • DFAs and NFAs
  • Lexical-analyzer generators

III. Syntax Analysis

  • Context-free grammars
  • Top-down parsing
  • Bottom-up parsing, including LR(1), SLR(1), and LALR(1)
  • Error recovery

IV. Semantic Analysis

  • Syntax-directed definitions
  • Attributed grammar
  • Type checking

V. Run-time Environments

  • Storage organization
  • Activation records

VI. Code Generation

  • Intermediate code generation
  • Code-generation algorithms

VII. Code Optimization

  • Local optimizations
  • Global optimizations

Illustrative Reading
A. Aho, M. Lam, R. Sethi, and J. Ullman, Compilers: Principles, Techniques, and Tools (2nd Edition), Prentice Hall, 2006. ISBN 0-321-48681-1.

Potential Course Overlap
None

Course Category

ECS 140B: Programming Languages

Subject
ECS 140B
Title
Programming Languages
Status
Active
Units
4.0
Effective Term
2016 Fall Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Continuation of programming language principles. Further study of programming language paradigms such as functional and logic; additional programming language paradigms such as concurrent (parallel); key implementation issues for those paradigms; and programming language semantics. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 140A
Enrollment Restrictions
Pass One open to Computer Science and Computer Science Engineering Majors only.
Expanded Course Description

Summary of Course Content
Lectures focus on several programming language paradigms. Lectures discuss commonalities and differences among the different languages, their features, their semantics, and their implementations. Students learn about a variety of different programming languages and about their relative strengths and weaknesses. Students gain experience designing and writing programs in a selected set of languages. Exact topics covered and order will depend on the instructor and what materials have recently been covered in ECS 140A. Some sample topics are:

  1. Language Implementation Schemes
    • Compilers
    • Interpreters
    • Tradeoffs
  2. Icon Programming Language
    • Basics, structures, generators, string scanning, goal-directed evaluation
    • Basic implementation techniques
  3. JR Concurrent Programming Language
    • Basics: operations, capabilities
    • Concurrent aspects: processes, semaphores, asynchronous message passing, remote procedure call, rendezvous
    • Representative parallel and distributed applications
    • Basic implementation techniques
  4. Formal Semantics
    • Lambda Calculus (notation, reductions, typed lambda calculus)
    • Attribute grammars, algebraic semantics, operational semantics, denotational semantics, axiomatic semantics

Illustrative Reading
R. Olsson and A. Keen, JR Programming Language: Concurrent Programming in an Extended Java. Kluwer, 2004.

Potential Course Overlap
None

Course Category

ECS 140A: Programming Languages

Subject
ECS 140A
Title
Programming Languages
Status
Active
Units
4.0
Effective Term
2019 Fall Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Syntactic definition of programming languages. Introduction to programming language features including variables, data types, data abstraction, object-orientedness, scoping, parameter disciplines, exception handling. Non-imperative programming languages. Comparative study of several high-level programming languages. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 050; (ECS 34 or ECS 036C); ECS 020; ECS 150 recommended
Enrollment Restrictions
Open to Computer Science and Computer Science & Engineering Majors only.
Expanded Course Description

Summary of Course Content

  1. Overview and History
  2. Syntax and Parsing a. BNF, syntax diagrams, parse trees, simple parsing technique
  3. Variables and Expressions
    • Declarations, attributes, aliases, binding
    • Side effects, precedence, order of evaluation
  4. Control Structures
    • Alternation, iteration, generators
  5. Data Types and Type-Checking
    • Polymorphism and overloading, conversion and coercion
    • Static vs. dynamic type-checking
  6. Modularization and Objects
    • Separation of specification and implementation
    • Generics and instantiation
    • Inheritance
    • Dynamic binding and its implementation
  7. Data Abstraction
    • Mutability, adequacy, categorization of operations
    • Abstract specification
  8. Scope and Extent
    • Block structure, visibility and holes, contour model
    • Dynamic vs. static scope
    • Run-time stack and heap implementation
  9. Parameter Passing
    • Parameter transmission methods, procedural parameters
  10. Exception Handling
    • Notions of raising, handling, and propagating
  11. Non-Imperative Programming Paradigms
    • Functional programming languages
    • Logic programming languages
  12. Additional Language Paradigms
    • Concurrent, dataflow, constraint

Illustrative Reading
K. Louden, Programming Languages: Principles and Practice, Thompson, 2nd edition, 2003

Potential Course Overlap
There is no significant overlap with other courses.

Course Category