Lower Division

ECS 088: Ethics of Technology

Subject
ECS 088
Title
Ethics of Technology
Status
Active
Units
4.0
Effective Term
2024 Fall Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Foundations of normative ethics for technology, its relationships to moral philosophy and to the law. Technologies and their impacts on the environment and society. Justice, meritocracy, and computer science and engineering. Ethical issues with AI and machine learning. Not open for credit to students who have taken ECS 188. GE: SE, SS.
Credit Limitation
Not open for credit to students who have taken ECS 188.
Enrollment Restrictions
Pass One restricted to Computer Science and Computer Science Engineering majors only.
Expanded Course Description

Summary of Course Content:

  1. Preliminaries
    1. Course description
    2. How to read and write as an ethicist in computer science
  2. A primer on normative ethics
    1. The virtue of Aristotle’s ethics
    2. Pleasures and pains: Utilitarianism.
    3. Kant’s categorical imperatives: deontology.
  3. What is technology?
    1. A primer on epistemology.
    2. Technological inventions that have changed the world.
    3. Technological traps.
  4. Surveillance and privacy
    1. The right to privacy
    2. Informed, and uninformed consent
    3. Censorship and freedom of speech
  5. Machine learning, AI, and society
    1. Algorithmic justice
    2. Clarifying AI alignment: can we encode human values?
    3. The counterfeit human.
  6. Technologies and the environment
    1. Human’s relation to nature
    2. Do technologies embed environmental values?
    3. Ecological disasters and their management. 

Illustrative Reading:
A reader assembled for the class that includes work from: Neil Postman, Michael Sandel, Peter Singer, Deborah Johnson, Phil Rogaway, Timnit Gebru, James Boyle, Daniel Quinn, EM Forster, Ursula Le Guin, the ACM. 

Potential Course Overlap:
The course overlaps with ECS 188 (Ethics in an Age of Technology); however, this course is designed to be an introduction to ethics in computing. The course overlaps with ENG 190 (Professional Responsibilities of Engineers) in that it also covers ethical issues; however, ENG 190 does not primarily focus on computing, and ENG 190 also covers contracts, patents and law. The course has overlap with STS 101 (Data & Society) in its coverage of impacts of biases in data but does not cover topics like reading, exploring, manipulating, or visualizing data sets as is done in STS 101. There is overlap with ENG 001 (Introduction to Engineering) but ENG 001 covers all of engineering, not just Computer Science and Engineering. The course overlaps with PHI 024 (Introduction to Ethics) in its coverage of moral theories such as Utilitarianism, Rights-Based Ethics, etc., but PHI 024 covers the material in far greater depth and without singular focus on a computing context. 

Course Category

ECS 011: Artificial Intelligence for All

Subject
ECS 011
Title
Artificial Intelligence for All
Status
Active
Units
4.0
Effective Term
2024 Fall Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Comprehensive introduction to artificial intelligence (AI) and its multifaceted applications. Foundational understanding of modern AI to enable effective communication about its functions, recognition of its applications, and awareness of its core principles. Ethical and societal implications of AI. No credit for students that have taken ECS 111, ECS 170, ECS 171, EEC 174AY, EEC 174BY, EEC 179, or BIM 155. GE: SE, SL.
Credit Limitation
No credit for students that have taken ECS 111, ECS 170, ECS 171, EEC 174AY, EEC 174BY, EEC 179, or BIM 155.
Expanded Course Description

Summary of Course Content:

  • Introduction to AI
    • What is AI?
    • The power of AI and how is AI is transforming our everyday life
    • AI and Creativity
    • Emerging applications of AI in Natural Language Processing, Healthcare, CyberSecurity, Business, Self-Driving Vehicles
  • A Brief History of AI
    • Birth of AI (1940-1950)
    • Rule-Based Systems (1960)
    • Rise of Machine Learning
    • Deep Learning Revolution (2010 – now)
  • AI Paradigms
    • Symbolic Systems
    • Connectionism
    • Embodied AI
    • Search and Heuristics
    • Task-based vs. Generalization-based AI
  • Generative AI systems
    • ChatGPT
    • DALL-E (or another image model)
    • CodeLlama
    • Babble
    • Generative Adversarial Network
    • MuseNet
    • Demos of cutting-edge AI systems - what they are good at and some common failure modes
    • Intended to give students tools that will be useful now and in the near term
  • AI and Data Science
    • AI needs data
    • Understanding Data and Knowledge Discovery in the context of AI and Data Science
    • Different types of data (Structured, Unstructured, Semi-structured)
    • Example of simple data analysis
  • Public Policy Integration
    • Guest speakers from policy-making backgrounds can be invited to provide insights into how AI findings in natural sciences shape regulations and guidelines.
  • AI Concepts and Terminology
    • AI’s Learning Process
    • Cognitive Computing, Terminology and Related Concepts
    • Traditional Machine Learning Algorithms
    • Evaluation Criteria
    • Reinforcement Learning
    • Neural Networks
    • Deep Learning
    • Transfer Learning
    • Generative Models
    • Adversarial Models
  • AI in Practice
    • Using Black Box Models in Modern AI
    • Understanding Black-Box ML Models
    • Understanding Data to Train and Test Models
    • An Example of Training a Prediction Model
    • Supervised Learning
    • Unsupervised Learning
    • Evaluating  Models, Cost Functions and Metrics
  • AI Benefits
    • Safer technologies
    • More desirable work
    • Boosted creativity and personal agency
    • Accelerated scientific development
  • AI Risks and Ethical Considerations
    • The importance of data in AI.
    • Examples of biases and ethical issues in modern AI
    • AI and Data Privacy
    • Risks of strong artificial intelligence
    • AI Ethics and Regulations
  • The Future with AI
    • The Evolution and Future of AI
    • What will our Society look like when AI is everywhere?
    • The AI Ladder - The Journey for adopting AI successfully
    • Artificial General Intelligence (AGI)

Illustrative Reading:

  • Brian Christian, “The Alignment Problem: Machine Learning and Human Values,” W. W. Norton & Company; 1st edition (October 6, 2020), ISBN 978-0393635829
  • Melanie Mitchell, “Artificial Intelligence: A Guide for Thinking Humans,” Farrar, Straus and Giroux; First Edition (October 15, 2019), ISBN 978-0374257835
  • Stuart Russel, “Human Compatible: Artificial Intelligence and the Problem of Control,” Viking (October 8, 2019), ISBN 978-0525558613
  • Max Tegmark, “Life 3.0: Being Human in the Age of Artificial Intelligence,” PENGUIN UK (July 18, 2018), ISBN 978-0141981802
  • Tom Chivers, “The AI Does Not Hate You,” Orion Publishing Group (June 13, 2019), ISBN 978-1474608787
  • Other articles and self-reading material

GE3
Science & Engineering
Scientific Literacy

Potential Course Overlap:
Course overlaps ECS 111 and ECS 170 in the coverage of AI basics; however, both ECS 111 and ECS 170 cover in much greater detail the application and/or implementation of AI. Course overlaps with ECS 171, EEC 174AY, EEC 174BY, EEC 179, and BIM 155 in the coverage of ML basics; however, the other courses cover in much greater detail the application and/or implementation of ML. Students completing this course will have a foundational understanding of AI/ML, but will not be yet equipped to apply its use or implement it as students that have completed any of the mentioned overlap courses.

Course Category

ECS 017: Data, Logic, & Computing

Subject
ECS 017
Title
Data, Logic, & Computing
Status
Active
Units
4.0
Effective Term
2021 Fall Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Display, processing, and representation of information and data on a computer. Understanding and analyzing the digital representations of numbers, images, and sounds. Basic computer operations and their logic. Introduction to discrete mathematics in computer science, including propositional logic, proofs by induction, recursions, and counting. Introduction to algorithms. Uses of computers and their influence on society. Not open for credit to students who have completed course ECS 020 or MAT108. GE: SE, QL.
Prerequisites
MAT 016A { can be concurrent } or MAT 017A { can be concurrent } or MAT 021A { can be concurrent }
Credit Limitation
Not open for credit to students who have completed course ECS 020 or MAT108.
Enrollment Restrictions
Pass one open to Data Science majors only.
Expanded Course Description

Summary of Course Content:

  1. Introduction and Course Overview
  2. Going Digital: Representing different types of information in a computer
    1. Representations of numbers: from integers and real numbers to binary formats
    2. Analog vs digital signal. Sampling and discretization
    3. Representing music, pictures, and movies in a computer
    4. Computer hardware: processors, interfaces, storage
    5. Basic principles of computer operations
  3. The logic behind computing
    1. Propositional and first order logic
    2. Basic set theory
    3. Methods of proof. Induction and recursion. Inductive definitions.
    4. Combinatorics and counting. Permutations, combinations. The Pigeonhole principle.
  4. Introduction to Algorithms by examples
    1. Program design
    2. Algorithms: correctness and complexity
    3. Basic algorithms: sorting and searching
  5. Ethical issues: computer and society
    1. Data collection and privacy
    2. Data forgery and deep fakes

Illustrative Reading:

  • S. S. Epp, Discrete Mathematics with Applications, 5th edition, Cengage Learning, 2019.
  • K. Rosen, Discrete Mathematics and Its Applications, 7th edition, McGraw-Hill, 2011.
  • M. Lipson, Schaum’s Outline of Discrete Mathematics, revised 3rd edition, 2009.
  • Selected review papers and technical papers and class notes will be used.

Potential Course Overlap:
The course overlaps with ECS 20 (Discrete Mathematics for Computer Science) but this course does not include asymptotic notation, combinatorics, discrete probability, graphs, or trees. The course overlaps with MAT 108 (Introduction to Abstract Math) but this course does not include topics like cardinal numbers. ECS 17 includes topics on ethical issues related to computer uses which neither ECS 20 nor MAT 108 cover. ECS 17 is a fundamental, preparatory course for Data Science majors.

Course Category

ECS 032C: Implementation of Data Structures in C

Subject
ECS 032C
Title
Implementation of Data Structures in C
Status
Active
Units
4.0
Effective Term
2020 Fall Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Programming in the C language. Use of basic UNIX tools. Writing good programs of increased complexity and efficiency. Implementation of data structures in C. Not open for credit to students who have completed course ECS 036C. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 032B C- or better
Credit Limitation
Not open for credit to students who have completed ECS 036B, ECS 036C, ECS 040, ECS 060..
Enrollment Restrictions
Not open to Computer Science and Computer Science & Engineering majors
Expanded Course Description

Summary of Course Content

  1. Programming in C
    1. Basic syntax and difference of C and other languages such as Python.
    2. Data types: scalar, single and multidimensional arrays, character strings, structs.
    3. Use of system files such as library and “include” files.
    4. Use of I/O including the use of file manipulation and command line arguments.
    5. Pointers and dynamic memory allocation.
    6. Functions: declaration and calls, & and * operators, parameters, function call stacks.
    7. Modular programming: programs composed of multiple C files and headers, overview of the compilation/linking sequence
  2. The UNIX Environment
    1. First-level understanding of the nature of UNIX processes and job control.
    2. UNIX hierarchical file system.
    3. UNIX utilities (e.g. find, grep, sort, uniq, head, etc.).
  3. Software Engineering & Tools
    1. Version Control (e.g. git).
    2. Program development and use of the UNIX “make” program to organize them.
    3. Software debugging techniques.
    4. Other Tools (e.g. IDEs, ssh clients, linters, etc.).
  4. Implementation of Data Structures
    1. Singly-and doubly-linked lists.
    2. Stacks and queues.
    3. Trees (e.g. binary, AVL, Red-Black etc.).

Illustrative Reading
J. Hanley and E. Koffman, Problem Solving and Program Design in C, 8th edition, Pearson, 2015.
W. Shotts, The Linux Command Line 2nd Edition, No Starch Press, 2019.

GE3
Science & Engineering

Overlap
The course overlaps with ECS 36A and ECS 34 in the coverage of UNIX but does not include shell scripting. The course overlaps with ECS 34 and ECS 36B in the coverage of version control and ECS 36B in the implementation of some data structures; however, ECS 34 and ECS 36B cover the implementations in C++. The course overlaps with ECS 36C in the implementation of some more advanced data structures but ECS 36C implementations are in C++.

Course Category

ECS 098F: Student Facilitated Course

Subject
ECS 098F
Title
Student Facilitated Course
Status
Active
Units
1.0 - 4.0
Effective Term
2016 Winter Quarter
Learning Activities
Variable - 1.0 to 4.0 hours
Description
Student facilitated course intended primarily for lower division students.
Prerequisites
Consent of Instructor.
Expanded Course Description

Summary of Course Content
Student facilitated course intended for undergraduate students, under the supervision of a faculty mentor. Course content and structure vary.

Illustrative Reading
Varies by topic

Potential Course Overlap
None

Course Category

ECS 098: Directed Group Study

Subject
ECS 098
Title
Directed Group Study
Status
Active
Units
1.0 - 5.0
Effective Term
1997 Winter Quarter
Learning Activities
Variable
Prerequisites
Lower division standing; project approval prior to period of internship
Credit Limitation
Pass/No Pass grading only
Course Category

ECS 092: Internship in Computer Science

Subject
ECS 092
Title
Internship in Computer Science
Status
Active
Units
1.0 - 5.0
Effective Term
1997 Winter Quarter
Learning Activities
Internship
Description
Supervised work experience in computer science. May be repeated for credit.
Prerequisites
Lower division standing; project approval prior to period of internship.
Credit Limitation
Pass/No Pass grading only. May be repeated for credit.
Course Category

ECS 089A-L: Special Topics in Computer Science: Computer Science Theory

Subject
ECS 089A-L
Title
Special Topics in Computer Science: Computer Science Theory
Status
Active
Units
1.0 - 5.0
Effective Term
1997 Winter Quarter
Learning Activities
Lecture
Laboratory
Lecture/Lab
Description
Special topics in Computer Science Theory. May be repeated for credit when topic differs. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
Consent of Instructor.
Credit Limitation
May be repeated for credit when topic differs.
Expanded Course Description

Summary of course contents

Illustrative Reading
Varies by course offering in the special topic areas

GE3
Science & Engineering

Overlap
None

Instructors
Staff

Course Category

ECS 050: Computer Organization & Machine-Dependent Programming

Subject
ECS 050
Title
Computer Organization & Machine-Dependent Programming
Status
Active
Units
4.0
Effective Term
2020 Spring Quarter
Learning Activities
Lecture - 3.0 hours
Discussion - 1.0 hours
Description
Comparative study of different hardware architectures via programming in the assembly languages of various machines. Role of system software in producing an abstract machine. Introduction to I/O devices and programming. Only 1 unit of credit allowed for students who have taken EEC 070. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 040 C- or better or ECS 034 C- or better or ECS 036B C- or better
Credit Limitation
Only 1 unit of credit allowed for students who have taken EEC 070.
Enrollment Restrictions
Pass One open to Computer Science and Computer Science & Engineering only.
Expanded Course Description

Summary of Course Contents

  1. Basic Memory Architecture
    Review of ECS 40 C-language material on bits, bytes and memory addresses. Linear versus segmented address forms.
  2. Introduction to Processor Architecture
    Introduction to instruction sets, addressing modes and register sets, and their variation from one machine to another. Comparison of at least one CISC architecture and at least one RISC architecture, via extensive assembly-language programming on each. Memory-mapped versus separate-address-space I/O. I/O devices. Hardware interrupts. I/O programming—wait-loop, interrupt-driven, and via calls to operating system services or keyboard, video and file access.
  3. The Role of System Software in Producing an Abstract Machine
    Distinction between the roles of hardware and software. The use of compilers and operating systems in providing abstractions and machine independence to the programmer. Compiler implementation of C/Pascal data types, and storage allocation of variables in memory. Role of the operating system in helping the programmer to create, store and execute his/her programs, and in managing system resources.
  4. Machine Capability and Speed
    Transportability/nontransportability of programs on different machines, and under different operating systems and compilers. Efficiency of compiled vs. hand-coded programs. Writing mixed C-language/assembly language programs for extra efficiency or for special capabilities. Tradeoffs between the speed of hardware implementation of a function and the flexibility of software implementation.

Goals
Students will (1) learn fundamental concepts of computer architecture; (2) learn fundamental concepts of software systems; (3) be able to write programs in assembly language for at least two different architectures .

Illustrative Reading

  • Norm Matloff, Below C Level: An Introduction to Computer Systems, 2012. Open-source book, available at http://heather.cs.ucdavis.edu/~matloff/50/PLN/CompSystsBook.pdf
  • Gerald Karam and John Bryant, Principles of Computer Systems, Prentice Hall, 1992

Engineering Design Statement
Students in the course write sophisticated, systems-level programs according to their own design. Many of the programs involve analysis of tradeoffs between efficient use of the hardware and ease of programming.

ABET Category Content
Engineering Science: 2 units
Engineering Design: 2 units

GE3
Science & Engineering

Overlap
Substantial overlap with EEC 70, but large student demand justifies the overlap in content.

Instructors
S. Davis, M. Farrens, and N. Matloff

Outcomes

1   an ability to apply knowledge of mathematics, science, computing, and engineering
2   an ability to design and conduct experiments, as well as to analyze and interpret data
3 X an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4   an ability to function on multi-disciplinary teams
5 X an ability to identify, formulate, and solve computer science and engineering problems  and define the computing requirements appropriate to their solutions
6   an understanding of professional, ethical, legal, security and social issues and responsibilities
7   an ability to communicate effectively with a range of audiences
8   the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context
9   a recognition of the need for, and an ability to engage in life-long learning
10 X knowledge of contemporary issues
11   an ability to use current techniques, skills, and tools necessary for computing and engineering practice
12   an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
13   an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity
Course Category