Stanford UniversityWebsiteAcademic Catalog
Computer ScienceDepartment Website
BS Degree in Computer Sciencesource 1source 2source 3
CS Courses
- Mathematical Foundations of ComputingCS 103 (3-5)theoryCS 103: Mathematical Foundations of Computing
What are the theoretical limits of computing power? What problems can be solved with computers? Which ones cannot? And how can we reason about the answers to these questions with mathematical certainty? This course explores the answers to these questions and serves as an introduction to discrete mathematics, computability theory, and complexity theory. At the completion of the course, students will feel comfortable writing mathematical proofs, reasoning about discrete structures, reading and writing statements in first-order logic, and working with mathematical models of computing devices. Throughout the course, students will gain exposure to some of the most exciting mathematical and philosophical ideas of the late nineteenth and twentieth centuries. Specific topics covered include formal mathematical proofwriting, propositional and first-order logic, set theory, binary relations, functions (injections, surjections, and bijections), cardinality, basic graph theory, the pigeonhole principle, mathematical induction, finite automata, regular expressions, the Myhill-Nerode theorem, context-free grammars, Turing machines, decidable and recognizable languages, self-reference and undecidability, verifiers, and the P versus NP question. Students with significant proofwriting experience are encouraged to instead take CS 154. Students interested in extra practice and support with the course are encouraged to concurrently enroll in CS 103A.
- Programming MethodologyCS 106A (3-5)introCS 106A: Programming Methodology
Introduction to the engineering of computer applications emphasizing modern software engineering principles: program design, decomposition, encapsulation, abstraction, and testing. Emphasis is on good programming style and the built-in facilities of respective languages. Uses the Python programming language. No prior programming experience required.
- Programming AbstractionsCS 106B (3-5)introCS 106B: Programming Abstractions
Abstraction and its relation to programming. Software engineering principles of data abstraction and modularity. Object-oriented programming, fundamental data structures (such as stacks, queues, sets) and data-directed design. Recursion and recursive data structures (linked lists, trees, graphs). Introduction to time and space complexity analysis. Uses the programming language C++ covering its basic facilities.
- Computer Organization and SystemsorCS 107 (3-5)sysCS 107: Computer Organization and Systems
Introduction to the fundamental concepts of computer systems. Explores how computer systems execute programs and manipulate data, working from the C programming language down to the microprocessor. Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, elements of code compilation, memory organization and management, and performance evaluation and optimization.
Computer Systems from the Ground UpCS 107E (3-5)sysCS 107E: Computer Systems from the Ground UpIntroduction to the fundamental concepts of computer systems through bare metal programming on the Raspberry Pi. Explores how five concepts come together in computer systems: hardware, architecture, assembly code, the C language, and software development tools. Students do all programming with a Raspberry Pi kit and several add-ons (LEDs, buttons). Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, compilation, memory organization and management, debugging, hardware, and I/O.
- Operating Systems PrinciplesCS 111 (3-5)sysCS 111: Operating Systems Principles
Explores operating system concepts including concurrency, synchronization, scheduling, processes, virtual memory, I/O, file systems, and protection. Available as a substitute for CS 110 that fulfills any requirement satisfied by CS 110.
- Design and Analysis of AlgorithmsCS 161 (3-5)algsCS 161: Design and Analysis of Algorithms
Worst and average case analysis. Recurrences and asymptotics. Efficient algorithms for sorting, searching, and selection. Data structures: binary search trees, heaps, hash tables. Algorithm design techniques: divide-and-conquer, dynamic programming, greedy algorithms, amortized analysis, randomization. Algorithms for fundamental graph problems: minimum-cost spanning tree, connected components, topological sort, and shortest paths. Possible additional topics: network flow, string searching.
- Unspecialized TrackorOperating systems kernel implementation projectorCS 112 (3)sysCS 112: Operating systems kernel implementation project
Students will learn the details of how operating systems work through four implementation projects in the Pintos operating system. The projects center around threads, processes, virtual memory, and file systems.
Operating systems design and implementationorCS 140E (3-4)sysCS 140E: Operating systems design and implementationStudents will implement a simple, clean operating system (virtual memory, processes, file system) in the C programming language, on a rasberry pi computer and use the result to run a variety of devices and implement a final project. All hardware is supplied by the instructor, and no previous experience with operating systems, raspberry pi, or embedded programming is required.
CompilersCS 143 (3-4)plsCS 143: CompilersPrinciples and practices for design and implementation of compilers and interpreters. Topics: lexical analysis; parsing theory; symbol tables; type systems; scope; semantic analysis; intermediate representations; runtime environments; code generation; and basic program analysis and optimization. Students construct a compiler for a simple object-oriented language during course programming projects.
Operating systems kernel implementation projectorCS 112 (3)sysCS 112: Operating systems kernel implementation projectStudents will learn the details of how operating systems work through four implementation projects in the Pintos operating system. The projects center around threads, processes, virtual memory, and file systems.
Operating systems design and implementationorCS 140E (3-4)sysCS 140E: Operating systems design and implementationStudents will implement a simple, clean operating system (virtual memory, processes, file system) in the C programming language, on a rasberry pi computer and use the result to run a variety of devices and implement a final project. All hardware is supplied by the instructor, and no previous experience with operating systems, raspberry pi, or embedded programming is required.
CompilersorCS 143 (3-4)plsCS 143: CompilersPrinciples and practices for design and implementation of compilers and interpreters. Topics: lexical analysis; parsing theory; symbol tables; type systems; scope; semantic analysis; intermediate representations; runtime environments; code generation; and basic program analysis and optimization. Students construct a compiler for a simple object-oriented language during course programming projects.
Introduction to Computer NetworkingorCS 144 (3-4)sysCS 144: Introduction to Computer NetworkingPrinciples and practice. Structure and components of computer networks, with focus on the Internet. Packet switching, layering, and routing. Transport and TCP: reliable delivery over an unreliable network, flow control, congestion control. Network names, addresses and ethernet switching. Includes significant programming component in C/C++; students build portions of the internet TCP/IP software.
Computer and Network SecurityorCS 155 (3)sysCS 155: Computer and Network SecurityFor juniors, seniors, and first-year graduate students. Principles of computer systems security. Attack techniques and how to defend against them. Topics include: network attacks and defenses, operating system security, application security (web, apps, databases), malware, privacy, and security for mobile devices. Course projects focus on building reliable software.
Software Design StudioorCS 190 (3-4)softengCS 190: Software Design StudioThis course teaches the art of software design: how to decompose large complex systems into classes that can be implemented and maintained easily. Topics include the causes of complexity, modular design, techniques for creating deep classes, minimizing the complexity associated with exceptions, in-code documentation, and name selection. The class involves significant system software implementation and uses an iterative approach consisting of implementation, review, and revision. The course is taught in a studio format with in-class discussions and code reviews in addition to lectures.
Programming LanguagesorCS 242 (3-4)plsCS 242: Programming LanguagesThis course explores foundational models of computation, such as the lambda calculus and other small calculi, and the incorporation of basic advances in PL theory into modern programming languages such as Haskell and Rust. Topics include type systems (polymorphism, algebraic data types, static vs. dynamic), control flow (exceptions, continuations), concurrency/parallelism, metaprogramming, verification, and the semantic gap between computational models and modern hardware. The study of programming languages is equal parts systems and theory, looking at how a rigorous understanding of the semantics of computation enables formal reasoning about the behavior and properties of complex real-world systems.
Advanced Topics in NetworkingorCS 244 (3-4)sysCS 244: Advanced Topics in NetworkingClassic papers, new ideas, and research papers in networking. Architectural principles: why the Internet was designed this way? Congestion control. Wireless and mobility; software-defined networks (SDN) and network virtualization; content distribution networks; packet switching; data-center networks.
Digital Systems ArchitectureEE 180 (4)engrEE 180: Digital Systems ArchitectureThe design of processor-based digital systems. Instruction sets, addressing modes, data types. Assembly language programming, low-level data structures, introduction to operating systems and compilers. Processor microarchitecture, microprogramming, pipelining. Memory systems and caches. Input/output, interrupts, buses and DMA. System design implementation alternatives, software/hardware tradeoffs. Labs involve the design of processor subsystems and processor-based embedded systems. Formerly EE 108B.
Data Management and Data SystemsorCS 145 (3-4)sysCS 145: Data Management and Data SystemsIntroduction to the use, design, and implementation of database and data-intensive systems, including data models; schema design; data storage; query processing, query optimization, and cost estimation; concurrency control, transactions, and failure recovery; distributed and parallel execution; semi-structured databases; and data system support for advanced analytics and machine learning.
Introduction to Human-Computer Interaction DesignorCS 147 (3-5)humansCS 147: Introduction to Human-Computer Interaction DesignIntroduces fundamental methods and principles for designing, implementing, and evaluating user interfaces. Topics: user-centered design, rapid prototyping, experimentation, direct manipulation, cognitive principles, visual design, social software, software tools. Learn by doing: work with a team on a quarter-long design project, supported by lectures, readings, and studios.
Introduction to Computer Graphics and ImagingorCS 148 (3-4)graphicsCS 148: Introduction to Computer Graphics and ImagingThis is the introductory prerequisite course in the computer graphics sequence which introduces students to the technical concepts behind creating synthetic computer generated images. The beginning of the course focuses on using Blender to create visual imagery, as well as an understanding of the underlying mathematical concepts including triangles, normals, interpolation, texture mapping, bump mapping, etc. Then we move on to a more fundamental understanding of light and color, as well as how it impacts computer displays and printers. From this we discuss more thoroughly how light interacts with the environment, and we construct engineering models such as the BRDF and discuss various simplifications into more basic lighting and shading models. Finally, we discuss ray tracing technology for creating virtual images, while drawing parallels between ray tracers and real world cameras in order to illustrate various concepts. Anti-aliasing and acceleration structures are also discussed. The final class project consists of building out a ray tracer to create a visually compelling image. Starter codes and code bits will be provided here and there to aid in development, but this class focuses on what you can do with the code as opposed to what the code itself looks like. Therefore grading is weighted towards in person 'demos' of the code in action - creativity and the production of impressive visual imagery are highly encouraged.
Computational Methods for Biomedical Image Analysis and Interpretation (BIOMEDIN 260, BMP 260, RAD 260)orCS 235 (3-4)sciCS 235: Computational Methods for Biomedical Image Analysis and Interpretation (BIOMEDIN 260, BMP 260, RAD 260)The latest biological and medical imaging modalities and their applications in research and medicine. Focus is on computational analytic and interpretive approaches to optimize extraction and use of biological and clinical imaging data for diagnostic and therapeutic translational medical applications. Topics include major image databases, fundamental methods in image processing and quantitative extraction of image features, structured recording of image information including semantic features and ontologies, indexing, search and content-based image retrieval. Case studies include linking image data to genomic, phenotypic and clinical data, developing representations of image phenotypes for use in medical decision support and research applications and the role that biomedical imaging informatics plays in new questions in biomedical science. Includes a project. Enrollment for 3 units requires instructor consent.
Computer Graphics: Rendering, Geometry, and Image ManipulationCS 248A (3-4)graphicsCS 248A: Computer Graphics: Rendering, Geometry, and Image ManipulationThis course provides a comprehensive introduction to interactive computer graphics, focusing on fundamental concepts and techniques, as well as their cross-cutting relationship to multiple problem domains in interactive graphics (such as rendering, animation, geometry, image processing). Topics include: 2D and 3D drawing, sampling theory, interpolation, rasterization, image compositing, the real-time GPU graphics pipeline (and parallel rendering), VR rendering, geometric transformations, curves and surfaces, geometric data structures, subdivision, meshing, spatial hierarchies, image processing, time integration, physically-based animation, and inverse kinematics. The course will involve several in-depth programming assignments and a self-selected final project that explores concepts covered in the class.
Introduction to the Theory of ComputationCS 154 (3-4)theoryCS 154: Introduction to the Theory of ComputationThis course provides a mathematical introduction to the following questions: What is computation? Given a computational model, what problems can we hope to solve in principle with this model? Besides those solvable in principle, what problems can we hope to efficiently solve? In many cases we can give completely rigorous answers; in other cases, these questions have become major open problems in computer science and mathematics. By the end of this course, students will be able to classify computational problems in terms of their computational complexity (Is the problem regular? Not regular? Decidable? Recognizable? Neither? Solvable in P? NP-complete? PSPACE-complete?, etc.). Students will gain a deeper appreciation for some of the fundamental issues in computing that are independent of trends of technology, such as the Church-Turing Thesis and the P versus NP problem.
Artificial Intelligence: Principles and TechniquesorCS 221 (3-4)aiCS 221: Artificial Intelligence: Principles and TechniquesArtificial intelligence (AI) has had a huge impact in many areas, including medical diagnosis, speech recognition, robotics, web search, advertising, and scheduling. This course focuses on the foundational concepts that drive these applications. In short, AI is the mathematics of making good decisions given incomplete information (hence the need for probability) and limited computation (hence the need for algorithms). Specific topics include search, constraint satisfaction, game playing,n Markov decision processes, graphical models, machine learning, and logic.
Introduction to Robotics (ME 320)orCS 223A (3)aiCS 223A: Introduction to Robotics (ME 320)Robotics foundations in modeling, design, planning, and control. Class covers relevant results from geometry, kinematics, statics, dynamics, motion planning, and control, providing the basic methodologies and tools in robotics research and applications. Concepts and models are illustrated through physical robot platforms, interactive robot simulations, and video segments relevant to historical research developments or to emerging application areas in the field.
Probabilistic Graphical Models: Principles and TechniquesorCS 228 (3-4)aiCS 228: Probabilistic Graphical Models: Principles and TechniquesProbabilistic graphical modeling languages for representing complex domains, algorithms for reasoning using these representations, and learning these representations from data. Topics include: Bayesian and Markov networks, extensions to temporal modeling such as hidden Markov models and dynamic Bayesian networks, exact and approximate probabilistic inference algorithms, and methods for learning models from data. Also included are sample applications to various domains including speech recognition, biological modeling and discovery, medical diagnosis, message encoding, vision, and robot motion planning.
Machine LearningorCS 229 (3-4)aiCS 229: Machine LearningTopics: statistical pattern recognition, linear and non-linear regression, non-parametric methods, exponential family, GLMs, support vector machines, kernel methods, deep learning, model/feature selection, learning theory, ML advice, clustering, density estimation, EM, dimensionality reduction, ICA, PCA, reinforcement learning and adaptive control, Markov decision processes, approximate dynamic programming, and policy search.
Computer Vision: From 3D Perception to 3D Reconstruction and BeyondCS 231A (3-4)aiCS 231A: Computer Vision: From 3D Perception to 3D Reconstruction and BeyondAn introduction to the concepts and applications in computer vision. Topics include: cameras and projection models, low-level image processing methods such as filtering and edge detection; mid-level vision topics such as segmentation and clustering; shape reconstruction from stereo, as well as high-level vision tasks such as object recognition, scene recognition, face detection and human motion categorization.
2 × CS ElectiveSystems TrackorOperating systems kernel implementation projectorCS 112 (3)sysCS 112: Operating systems kernel implementation projectStudents will learn the details of how operating systems work through four implementation projects in the Pintos operating system. The projects center around threads, processes, virtual memory, and file systems.
Operating systems design and implementationCS 140E (3-4)sysCS 140E: Operating systems design and implementationStudents will implement a simple, clean operating system (virtual memory, processes, file system) in the C programming language, on a rasberry pi computer and use the result to run a variety of devices and implement a final project. All hardware is supplied by the instructor, and no previous experience with operating systems, raspberry pi, or embedded programming is required.
CompilersorCS 143 (3-4)plsCS 143: CompilersPrinciples and practices for design and implementation of compilers and interpreters. Topics: lexical analysis; parsing theory; symbol tables; type systems; scope; semantic analysis; intermediate representations; runtime environments; code generation; and basic program analysis and optimization. Students construct a compiler for a simple object-oriented language during course programming projects.
Digital Systems ArchitectureEE 180 (4)engrEE 180: Digital Systems ArchitectureThe design of processor-based digital systems. Instruction sets, addressing modes, data types. Assembly language programming, low-level data structures, introduction to operating systems and compilers. Processor microarchitecture, microprogramming, pipelining. Memory systems and caches. Input/output, interrupts, buses and DMA. System design implementation alternatives, software/hardware tradeoffs. Labs involve the design of processor subsystems and processor-based embedded systems. Formerly EE 108B.
pick 2
CompilersCS 143 (3-4)plsCS 143: CompilersPrinciples and practices for design and implementation of compilers and interpreters. Topics: lexical analysis; parsing theory; symbol tables; type systems; scope; semantic analysis; intermediate representations; runtime environments; code generation; and basic program analysis and optimization. Students construct a compiler for a simple object-oriented language during course programming projects.
Introduction to Computer NetworkingCS 144 (3-4)sysCS 144: Introduction to Computer NetworkingPrinciples and practice. Structure and components of computer networks, with focus on the Internet. Packet switching, layering, and routing. Transport and TCP: reliable delivery over an unreliable network, flow control, congestion control. Network names, addresses and ethernet switching. Includes significant programming component in C/C++; students build portions of the internet TCP/IP software.
Data Management and Data SystemsCS 145 (3-4)sysCS 145: Data Management and Data SystemsIntroduction to the use, design, and implementation of database and data-intensive systems, including data models; schema design; data storage; query processing, query optimization, and cost estimation; concurrency control, transactions, and failure recovery; distributed and parallel execution; semi-structured databases; and data system support for advanced analytics and machine learning.
Parallel ComputingCS 149 (3-4)sysCS 149: Parallel ComputingThis course is an introduction to parallelism and parallel programming. Most new computer architectures are parallel; programming these machines requires knowledge of the basic issues of and techniques for writing parallel software. Topics: varieties of parallelism in current hardware (e.g., fast networks, multicore, accelerators such as GPUs, vector instruction sets), importance of locality, implicit vs. explicit parallelism, shared vs. non-shared memory, synchronization mechanisms (locking, atomicity, transactions, barriers), and parallel programming models (threads, data parallel/streaming, MapReduce, Apache Spark, SPMD, message passing, SIMT, transactions, and nested parallelism). Significant parallel programming assignments will be given as homework. The course is open to students who have completed the introductory CS course sequence through 111.
Computer and Network SecurityCS 155 (3)sysCS 155: Computer and Network SecurityFor juniors, seniors, and first-year graduate students. Principles of computer systems security. Attack techniques and how to defend against them. Topics include: network attacks and defenses, operating system security, application security (web, apps, databases), malware, privacy, and security for mobile devices. Course projects focus on building reliable software.
Software Design StudioCS 190 (3-4)softengCS 190: Software Design StudioThis course teaches the art of software design: how to decompose large complex systems into classes that can be implemented and maintained easily. Topics include the causes of complexity, modular design, techniques for creating deep classes, minimizing the complexity associated with exceptions, in-code documentation, and name selection. The class involves significant system software implementation and uses an iterative approach consisting of implementation, review, and revision. The course is taught in a studio format with in-class discussions and code reviews in addition to lectures.
Hardware Accelerators for Machine LearningCS 217 (3-4)sysCS 217: Hardware Accelerators for Machine LearningThis course provides in-depth coverage of the architectural techniques used to design accelerators for training and inference in machine learning systems. This course will cover classical ML algorithms such as linear regression and support vector machines as well as DNN models such as convolutional neural nets, and recurrent neural nets. We will consider both training and inference for these models and discuss the impact of parameters such as batch size, precision, sparsity and compression on the accuracy of these models. We will cover the design of accelerators for ML model inference and training. Students will become familiar with hardware implementation techniques for using parallelism, locality, and low precision to implement the core computational kernels used in ML. To design energy-efficient accelerators, students will develop the intuition to make trade-offs between ML model parameters and hardware implementation techniques. Students will read recent research papers and complete a design project.
Advanced Topics in Operating SystemsCS 240 (3)sysCS 240: Advanced Topics in Operating SystemsRecent research. Classic and new papers. Topics: virtual memory management, synchronization and communication, file systems, protection and security, operating system extension techniques, fault tolerance, and the history and experience of systems programming.
Programming LanguagesCS 242 (3-4)plsCS 242: Programming LanguagesThis course explores foundational models of computation, such as the lambda calculus and other small calculi, and the incorporation of basic advances in PL theory into modern programming languages such as Haskell and Rust. Topics include type systems (polymorphism, algebraic data types, static vs. dynamic), control flow (exceptions, continuations), concurrency/parallelism, metaprogramming, verification, and the semantic gap between computational models and modern hardware. The study of programming languages is equal parts systems and theory, looking at how a rigorous understanding of the semantics of computation enables formal reasoning about the behavior and properties of complex real-world systems.
Program Analysis and OptimizationsCS 243 (3-4)plsCS 243: Program Analysis and OptimizationsProgram analysis techniques used in compilers and software development tools to improve productivity, reliability, and security. The methodology of applying mathematical abstractions such as graphs, fixpoint computations, binary decision diagrams in writing complex software, using compilers as an example. Topics include data flow analysis, instruction scheduling, register allocation, parallelism, data locality, interprocedural analysis, and garbage collection.
Advanced Topics in NetworkingCS 244 (3-4)sysCS 244: Advanced Topics in NetworkingClassic papers, new ideas, and research papers in networking. Architectural principles: why the Internet was designed this way? Congestion control. Wireless and mobility; software-defined networks (SDN) and network virtualization; content distribution networks; packet switching; data-center networks.
Principles of Data-Intensive SystemsCS 245 (3-4)sysCS 245: Principles of Data-Intensive SystemsMost important computer applications have to reliably manage and manipulate datasets. This course covers the architecture of modern data storage and processing systems, including relational databases, cluster computing frameworks, streaming systems and machine learning systems. Topics include storage management, query optimization, transactions, concurrency, fault recovery, and parallel processing, with a focus on the key design ideas shared across many types of data-intensive systems.
Digital Systems ArchitectureEE 271EE 282EE 180 (4)engrEE 180: Digital Systems ArchitectureThe design of processor-based digital systems. Instruction sets, addressing modes, data types. Assembly language programming, low-level data structures, introduction to operating systems and compilers. Processor microarchitecture, microprogramming, pipelining. Memory systems and caches. Input/output, interrupts, buses and DMA. System design implementation alternatives, software/hardware tradeoffs. Labs involve the design of processor subsystems and processor-based embedded systems. Formerly EE 108B.
3 × CS ElectiveInformation TrackorFrom Languages to Information (LINGUIST 180, LINGUIST 280)CS 124 (3-4)aiCS 124: From Languages to Information (LINGUIST 180, LINGUIST 280)Extracting meaning, information, and structure from human language text, speech, web pages, social networks. Introducing methods (regex, edit distance, naive Bayes, logistic regression, neural embeddings, inverted indices, collaborative filtering, PageRank), applications (chatbots, sentiment analysis, information retrieval, question answering, text classification, social networks, recommender systems), and ethical issues in both.
Data Management and Data SystemsCS 145 (3-4)sysCS 145: Data Management and Data SystemsIntroduction to the use, design, and implementation of database and data-intensive systems, including data models; schema design; data storage; query processing, query optimization, and cost estimation; concurrency control, transactions, and failure recovery; distributed and parallel execution; semi-structured databases; and data system support for advanced analytics and machine learning.
HCI TrackorWeb ApplicationsorCS 142 (3)sysCS 142: Web ApplicationsConcepts and techniques used in constructing interactive web applications. Browser-side web facilities such as HTML, cascading stylesheets, the document object model, and JavaScript frameworks and Server-side technologies such as server-side JavaScript, sessions, and object-oriented databases. Issues in web security and application scalability. New models of web application deployment.
Cross-platform Mobile App DevelopmentCS 147L (3)sysCS 147L: Cross-platform Mobile App DevelopmentThe fundamentals of cross-platform mobile application development with a focus on the React Native framework (RN). Primary focus on developing best practices in creating apps for both iOS and Android by using Javascript and existing web + mobile development paradigms. Students will explore the unique aspects that made RN a primary tool for mobile development within Facebook, Instagram, Airbnb, Walmart, Tesla, and UberEats. Skills developed over the course will be consolidated by the completion of a final project.
Introduction to Human-Computer Interaction DesignCS 147 (3-5)humansCS 147: Introduction to Human-Computer Interaction DesignIntroduces fundamental methods and principles for designing, implementing, and evaluating user interfaces. Topics: user-centered design, rapid prototyping, experimentation, direct manipulation, cognitive principles, visual design, social software, software tools. Learn by doing: work with a team on a quarter-long design project, supported by lectures, readings, and studios.
Design for Artificial Intelligence (SYMSYS 195A)orCS 247A (3-4)humansCS 247A: Design for Artificial Intelligence (SYMSYS 195A)A project-based course that builds on the introduction to design in CS 147 by focusing on advanced methods and tools for research, prototyping, and user interface design. Studio based format with intensive coaching and iteration to prepare students for tackling real world design problems. This course takes place entirely in studios; you must plan on attending every studio to take this class. The focus of CS 247A is design for human-centered artificial intelligence experiences. What does it mean to design for AI? What is HAI? How do you create responsible, ethical, human centered experiences? Let us explore what AI actually is and the constraints, opportunities and specialized processes necessary to create AI systems that work effectively for the humans involved.
Design for Behavior Change (SYMSYS 195B)orCS 247B (3-4)humansCS 247B: Design for Behavior Change (SYMSYS 195B)Over the last decade, tech companies have invested in shaping user behavior, sometimes for altruistic reasons like helping people change bad habits into good ones, and sometimes for financial reasons such as increasing engagement. In this project-based hands-on course, students explore the design of systems, information and interface for human use. We will model the flow of interactions, data and context, and crafting a design that is useful, appropriate and robust. Students will design and prototype utility apps or games as a response to the challenges presented. We will also examine the ethical consequences of design decisions and explore current issues arising from unintended consequences.
Design for Play (SYMSYS 195G)orCS 247G (3-4)humansCS 247G: Design for Play (SYMSYS 195G)A project-based course that builds on the introduction to design in CS 147 by focusing on advanced methods and tools for research, prototyping, and user interface design. Studio based format with intensive coaching and iteration to prepare students for tackling real world design problems. This course takes place entirely in studios; please plan on attending every studio to take this class. The focus of CS 247g is an introduction to theory and practice of game design. We will make digital and paper games, do rapid iteration and run user research studies appropriate to game design. This class has multiple short projects, allowing us to cover a variety of genres, from narrative to pure strategy.
Design for UnderstandingorCS 247I (3-4)humansCS 247I: Design for UnderstandingComplex problems require nuanced design approaches. In this project-based hands-on course, students explore the design of systems, information and interface for human use. Each quarter we pick a different challenging topic to explore and explain; past classes have included fake news, electoral politics and gender. Students will create an explainer, an information site and a game as a response to the challenges presented. We will model the flow of interactions, data and context, and craft a design that is useful, appropriate and robust. We will also examine the ethical consequences of design decisions and explore current issues arising from unintended consequences.
Service Design (SYMSYS 195S)CS 247S (3-4)humansCS 247S: Service Design (SYMSYS 195S)A project-based course that builds on the introduction to design in CS 147 by focusing on advanced methods and tools for research, prototyping, and user interface design. Studio based format with intensive coaching and iteration to prepare students for tackling real world design problems. This course takes place entirely in studios; you must plan on attending every studio to take this class. The focus of CS 247S is Service Design. In this course we will be looking at experiences that address the needs of multiple types of stakeholders at different touchpoints - digital, physical, and everything in between. If you have ever taken an Uber, participated in the Draw, engaged with your bank, or ordered a coffee through the Starbucks app, you have experienced a service that must have a coordinated experience for the customer, the service provider, and any other stakeholders involved. Let us explore what specialized tools and processes are required to created these multi-faceted interactions.
Human-Computer Interaction: Foundations and FrontiersCS 347 (3-4)humansCS 347: Human-Computer Interaction: Foundations and FrontiersHow will the future of human-computer interaction evolve? This course equips students with the major animating theories of human-computer interaction, and connects those theories to modern innovations in research. Major theories are drawn from interaction (e.g., tangible and ubiquitous computing), social computing (e.g., Johansen matrix), and design (e.g., reflective practitioner, wicked problems), and span domains such as AI+HCI (e.g., mixed initiative interaction), accessibility (e.g., ability based design), and interface software tools (e.g., threshold/ceiling diagrams). Students read and comment on multiple research papers per week, and perform a quarter-long research project.
3 × HCI electiveTheory TrackorIntroduction to the Theory of ComputationCS 154 (3-4)theoryCS 154: Introduction to the Theory of ComputationThis course provides a mathematical introduction to the following questions: What is computation? Given a computational model, what problems can we hope to solve in principle with this model? Besides those solvable in principle, what problems can we hope to efficiently solve? In many cases we can give completely rigorous answers; in other cases, these questions have become major open problems in computer science and mathematics. By the end of this course, students will be able to classify computational problems in terms of their computational complexity (Is the problem regular? Not regular? Decidable? Recognizable? Neither? Solvable in P? NP-complete? PSPACE-complete?, etc.). Students will gain a deeper appreciation for some of the fundamental issues in computing that are independent of trends of technology, such as the Church-Turing Thesis and the P versus NP problem.
3 × Theory elective3 × CS ElectiveAI TrackorArtificial Intelligence: Principles and TechniquesCS 221 (3-4)aiCS 221: Artificial Intelligence: Principles and TechniquesArtificial intelligence (AI) has had a huge impact in many areas, including medical diagnosis, speech recognition, robotics, web search, advertising, and scheduling. This course focuses on the foundational concepts that drive these applications. In short, AI is the mathematics of making good decisions given incomplete information (hence the need for probability) and limited computation (hence the need for algorithms). Specific topics include search, constraint satisfaction, game playing,n Markov decision processes, graphical models, machine learning, and logic.
3 × AI elective3 × CS electiveVisual Computing (Graphics) Trackorpick 2
Experimental RoboticsCS 225A (3)aiCS 225A: Experimental RoboticsHands-on laboratory course experience in robotic manipulation. Topics include robot kinematics, dynamics, control, compliance, sensor-based collision avoidance, and human-robot interfaces. Second half of class is devoted to final projects using various robotic platforms to build and demonstrate new robot task capabilities. Previous projects include the development of autonomous robot behaviors of drawing, painting, playing air hocket, yoyo, basketball, ping-pong or xylophone.
Computer Graphics: Rendering, Geometry, and Image ManipulationCS 248A (3-4)graphicsCS 248A: Computer Graphics: Rendering, Geometry, and Image ManipulationThis course provides a comprehensive introduction to interactive computer graphics, focusing on fundamental concepts and techniques, as well as their cross-cutting relationship to multiple problem domains in interactive graphics (such as rendering, animation, geometry, image processing). Topics include: 2D and 3D drawing, sampling theory, interpolation, rasterization, image compositing, the real-time GPU graphics pipeline (and parallel rendering), VR rendering, geometric transformations, curves and surfaces, geometric data structures, subdivision, meshing, spatial hierarchies, image processing, time integration, physically-based animation, and inverse kinematics. The course will involve several in-depth programming assignments and a self-selected final project that explores concepts covered in the class.
Fundamentals of Computer Graphics: Animation and SimulationCS 248B (3)graphicsCS 248B: Fundamentals of Computer Graphics: Animation and SimulationThis course provides a comprehensive introduction to computer graphics, focusing on fundamental concepts and techniques in Computer Animation and Physics Simulation. Topics include numerical integration, 3D character modeling, keyframe animation, skinning/rigging, inverse kinematics, rigid body dynamics, deformable body simulation, and fluid simulation.
1 × CS ElectiveComputing Engineering TrackDigital System DesignEE 108 (5)engrEE 108: Digital System DesignDigital circuit, logic, and system design. Digital representation of information. CMOS logic circuits. Combinational logic design. Logic building blocks, idioms, and structured design. Sequential logic design and timing analysis. Clocks and synchronization. Finite state machines. Microcode control. Digital system design. Control and datapath partitioning. Lab
Digital Systems ArchitectureEE 180 (4)engrEE 180: Digital Systems ArchitectureThe design of processor-based digital systems. Instruction sets, addressing modes, data types. Assembly language programming, low-level data structures, introduction to operating systems and compilers. Processor microarchitecture, microprogramming, pipelining. Memory systems and caches. Input/output, interrupts, buses and DMA. System design implementation alternatives, software/hardware tradeoffs. Labs involve the design of processor subsystems and processor-based embedded systems. Formerly EE 108B.
- 3 units from
Computers, Ethics, and Public Policy (WIM)CS 181W (4)impactCS 181W: Computers, Ethics, and Public Policy (WIM)Writing-intensive version of CS 181. Satisfies the WIM requirement for Computer Science, Engineering Physics, STS, and Math/Comp Sci undergraduates. To take this course, students need permission of instructor and may need to complete an assignment due at the first day of class. Please see https://CS 181.stanford.edu for more information.
Ethics, Public Policy, and Technological Change (WIM)CS 182W (5)impactCS 182W: Ethics, Public Policy, and Technological Change (WIM)Writing-intensive version of CS 182. Satisfies the WIM requirement for Computer Science, Engineering Physics, STS, Math/Comp Sci, and Data Science undergraduates (and is only open to those majors). Prerequisite: CS 106A. See CS 182 for lecture day/time information. Enroll in either CS 182 or CS 182W, not both. Enrollment in WIM version of the course is limited to 125 students. Enrollment is restricted to seniors and coterminal students until January 9, 2023. Starting January 9, 2023, enrollment will open to all students if additional spaces remain available in the class.
Senior ProjectCS 191 (1-6)capstoneCS 191: Senior ProjectRestricted to Computer Science students. Group or individual research projects under faculty direction. Register using instructor's section number. A project can be either a significant software application or publishable research. Software application projects include a research component, substantial programming, and are comparable in scale to shareware programs or commercial applications. Research projects may result in a paper publishable in an academic journal or presentable at a conference. Public presentation of final application or research results is required.
Software ProjectCS 194 (3)capstoneCS 194: Software ProjectDesign, specification, coding, and testing of a significant team programming project under faculty supervision. Documentation includes capture of project rationale, design and discussion of key performance indicators, a weekly progress log and a software architecture diagram. Public demonstration of the project at the end of the quarter. Preference given to seniors. May be repeated for credit.
User Interface Design ProjectCS 194H (3-4)capstoneCS 194H: User Interface Design ProjectAdvanced methods for designing, prototyping, and evaluating user interfaces to computing applications. Novel interface technology, advanced interface design methods, and prototyping tools. Substantial, quarter-long course project that will be presented in a public presentation.
Software Project Experience with Corporate PartnersCS 210B (3-4)capstoneCS 210B: Software Project Experience with Corporate PartnersContinuation of CS 210A. Focus is on real-world software development. Corporate partners seed projects with loosely defined challenges from their R&D labs; students innovate to build their own compelling software solutions. Student teams are treated as start-up companies with a budget and a technical advisory board comprised of the instructional staff and corporate liaisons. Teams will typically travel to the corporate headquarters of their collaborating partner, meaning some teams will travel internationally. Open loft classroom format such as found in Silicon Valley software companies. Exposure to: current practices in software engineering; techniques for stimulating innovation; significant development experience with creative freedoms; working in groups; real world software engineering challenges; public presentation of technical work; creating written descriptions of technical work.
Research Project in Software Systems and SecurityCS 294S (3)capstoneCS 294S: Research Project in Software Systems and SecurityTopics vary. Focus is on emerging research themes such as programmable open mobile Internet that spans multiple system topics such as human-computer interaction, programming systems, operating systems, networking, and security. May be repeated for credit.
Math/Stat Courses
- CalculusMATH 20 (3)mathMATH 20: Calculus
The definite integral, Riemann sums, antiderivatives, the Fundamental Theorem of Calculus. Integration by substitution and by parts. Area between curves, and volume by slices, washers, and shells. Initial-value problems, exponential and logistic models, direction fields, and parametric curves.
- pick 2
Computational LogicCS 157 (3)theoryCS 157: Computational LogicRigorous introduction to Symbolic Logic from a computational perspective. Encoding information in the form of logical sentences. Reasoning with information in this form. Overview of logic technology and its applications - in mathematics, science, engineering, business, law, and so forth. Topics include the syntax and semantics of Propositional Logic, Relational Logic, and Herbrand Logic, validity, contingency, unsatisfiability, logical equivalence, entailment, consistency, natural deduction (Fitch), mathematical induction, resolution, compactness, soundness, completeness.
Continuous Mathematical Methods with an Emphasis on Machine LearningCS 205L (3)mathCS 205L: Continuous Mathematical Methods with an Emphasis on Machine LearningA survey of numerical approaches to the continuous mathematics used throughout computer science with an emphasis on machine and deep learning...
Linear Algebra, Multivariable Calculus, and Modern ApplicationsMATH 51 (5)mathMATH 51: Linear Algebra, Multivariable Calculus, and Modern ApplicationsThis course provides unified coverage of linear algebra and multivariable differential calculus, and the free course e-text connects the material to many fields. Linear algebra in large dimensions underlies the scientific, data-driven, and computational tasks of the 21st century. The linear algebra portion includes orthogonality, linear independence, matrix algebra, and eigenvalues with applications such as least squares, linear regression, and Markov chains (relevant to population dynamics, molecular chemistry, and PageRank); the singular value decomposition (essential in image compression, topic modeling, and data-intensive work in many fields) is introduced in the final chapter of the e-text. The multivariable calculus portion includes unconstrained optimization via gradients and Hessians (used for energy minimization), constrained optimization (via Lagrange multipliers, crucial in economics), gradient descent and the multivariable Chain Rule (which underlie many machine learning algorithms, such as backpropagation), and Newton's method (an ingredient in GPS and robotics). The course emphasizes computations alongside an intuitive understanding of key ideas. The widespread use of computers makes it important for users of math to understand concepts: novel users of quantitative tools in the future will be those who understand ideas and how they fit with examples and applications.
Integral Calculus of Several VariablesMATH 52 (5)mathMATH 52: Integral Calculus of Several VariablesIterated integrals, line and surface integrals, vector analysis with applications to vector potentials and conservative vector fields, physical interpretations. Divergence theorem and the theorems of Green, Gauss, and Stokes.
Differential Equations with Linear Algebra, Fourier Methods, and Modern ApplicationsMATH 53 (5)mathMATH 53: Differential Equations with Linear Algebra, Fourier Methods, and Modern ApplicationsOrdinary differential equations and initial value problems, linear systems of such equations with an emphasis on second-order constant-coefficient equations, stability analysis for non-linear systems (including phase portraits and the role of eigenvalues), and numerical methods. Partial differential equations and boundary-value problems, Fourier series and initial conditions, and Fourier transform for non-periodic phenomena. Throughout the development we harness insights from linear algebra, and software widgets are used to explore course topics on a computer (no coding background is needed). The free e-text provides motivation from applications across a wide array of fields (biology, chemistry, computer science, economics, engineering, and physics) described in a manner not requiring any area-specific expertise, and it has an appendix on Laplace transforms with many worked examples as a complement to the Fourier transform in the main text.
Applied Matrix TheoryMATH 104 (4)mathMATH 104: Applied Matrix TheoryLinear algebra for applications in science and engineering. The course introduces the key mathematical ideas in matrix theory, which are used in modern methods of data analysis, scientific computing, optimization, and nearly all quantitative fields of science and engineering. While the choice of topics is motivated by their use in various disciplines, the course will emphasize the theoretical and conceptual underpinnings of this subject. Topics include orthogonality, projections, spectral theory for symmetric matrices, the singular value decomposition, the QR decomposition, least-squares methods, and algorithms for solving systems of linear equations; applications include clustering, principal component analysis and dimensionality reduction, regression. MATH 113 offers a more theoretical treatment of linear algebra. MATH 104 and ENGR 108 cover complementary topics in applied linear algebra. The focus of MATH 104 is on algorithms and concepts; the focus of ENGR 108 is on a few linear algebra concepts, and many applications.
Graph TheoryMATH 107 (4)mathMATH 107: Graph TheoryAn introductory course in graph theory establishing fundamental concepts and results in variety of topics. Topics include: basic notions, connectivity, cycles, matchings, planar graphs, graph coloring, matrix-tree theorem, conditions for hamiltonicity, Kuratowski's theorem, Ramsey and Turan-type theorem.
Introduction to Combinatorics and Its ApplicationsMATH 108 (4)mathMATH 108: Introduction to Combinatorics and Its ApplicationsTopics: graphs, trees (Cayley's Theorem, application to phylogony), eigenvalues, basic enumeration (permutations, Stirling and Bell numbers), recurrences, generating functions, basic asymptotics.
Groups and SymmetryMATH 109 (4)mathMATH 109: Groups and SymmetryApplications of the theory of groups. Topics: elements of group theory, groups of symmetries, matrix groups, group actions, and applications to combinatorics and computing. Applications: rotational symmetry groups, the study of the Platonic solids, crystallographic groups and their applications in chemistry and physics. Honors math majors and students who intend to do graduate work in mathematics should take 120. WIM.
Number Theory for CryptographyMATH 110 (4)mathMATH 110: Number Theory for CryptographyNumber theory and its applications to modern cryptography. Topics include: congruences, primality testing and factorization, public key cryptography, and elliptic curves, emphasizing algorithms. Includes an introduction to proof-writing. This course develops math background useful in CS 255. WIM.
Linear Algebra and Matrix TheoryMATH 113 (4)mathMATH 113: Linear Algebra and Matrix TheoryAlgebraic properties of matrices and their interpretation in geometric terms. The relationship between the algebraic and geometric points of view and matters fundamental to the study and solution of linear equations. Topics: linear equations, vector spaces, linear dependence, bases and coordinate systems; linear transformations and matrices; similarity; dual space and dual basis; eigenvectors and eigenvalues; diagonalization. Includes an introduction to proof-writing. ( MATH 104 offers a more application-oriented treatment.)
Introduction to Matrix MethodsENGR 108 (3-5)engrENGR 108: Introduction to Matrix MethodsIntroduction to applied linear algebra with emphasis on applications. Vectors, norm, and angle; linear independence and orthonormal sets; applications to document analysis. Clustering and the k-means algorithm. Matrices, left and right inverses, QR factorization. Least-squares and model fitting, regularization and cross-validation. Constrained and nonlinear least-squares. Applications include time-series prediction, tomography, optimal control, and portfolio optimization. Undergraduate students should enroll for 5 units, and graduate students should enroll for 3 units. Prerequisites: MATH 51 or CME 100, and basic knowledge of computing ( CS 106A is more than enough, and can be taken concurrently). ENGR 108 and MATH 104 cover complementary topics in applied linear algebra. The focus of ENGR 108 is on a few linear algebra concepts, and many applications; the focus of MATH 104 is on algorithms and concepts.
Metalogic (PHIL 251)PHIL 151 (4)sciPHIL 151: Metalogic (PHIL 251)In this course we will go through some of the seminal ideas, constructions, and results from modern logic, focusing especially on classical first-order ('predicate') logic. After introducing general ideas of induction and recursion, we will study a bit of elementary (axiomatic) set theory before then covering basic definability theory, viz. assessing the theoretical limits of what can and cannot be expressed in a first-order language. The centerpiece result of the class is the completeness - and closely related compactness - of first-order logic, a result with a number of momentous consequences, some useful, some philosophically puzzling. We will then study a connection with game theory, whereby a certain type of game characterizes precisely the expressive power of first-order logic. Further topics may include: the 0-1 law in finite model theory, second-order logic, and the algebraic approach to logic.
- Introduction to Probability for Computer ScientistsCS 109 (3-5)mathCS 109: Introduction to Probability for Computer Scientists
Topics include: counting and combinatorics, random variables, conditional probability, independence, distributions, expectation, point estimation, and limit theorems. Applications of probability in computer science including machine learning and the use of probability in the analysis of algorithms.
Engineering Courses
- An Intro to Making: What is EEorENGR 40M (5)engrENGR 40M: An Intro to Making: What is EE
Is a hands-on class where students learn to make stuff. Through the process of building, you are introduced to the basic areas of EE. Students build a 'useless box' and learn about circuits, feedback, and programming hardware, a light display for your desk and bike and learn about coding, transforms, and LEDs, a solar charger and an EKG machine and learn about power, noise, feedback, more circuits, and safety. And you get to keep the toys you build.
Information Science and EngineeringENGR 76 (5)engrENGR 76: Information Science and EngineeringWhat is information? How can we measure and efficiently represent it? How can we reliably communicate and store it over media prone to noise and errors? How can we make sound decisions based on partial and noisy information? This course introduces the basic notions required to address these questions, as well as the principles and techniques underlying the design of modern information, communication, and decision-making systems with relations to and applications in machine-learning, through genomics, to neuroscience. Students will get a hands-on appreciation of the concepts via projects in small groups, where they will develop their own systems for streaming of multi-media data under human-centric performance criteria.
Science Courses
- Mechanics and FluidsorPHYSICS 21 (3)sciPHYSICS 21: Mechanics and Fluids
How are the motions of solids and liquids determined by the laws of physics? Students learn to describe the motion of objects (kinematics) and understand why objects move as they do (dynamics). Emphasis on applying Newton's laws to solids and liquids to describe diverse phenomena. Everyday examples are analyzed using tools of algebra and trigonometry. Problem-solving skills are developed, including verifying that derived results satisfy criteria for correctness, such as dimensional consistency and expected behavior in limiting cases. Physical understanding fostered by peer interaction and interactive group problem solving.
MechanicsorPHYSICS 41 (4)sciPHYSICS 41: MechanicsStudents learn to describe the motion of objects (kinematics) and then understand why motions have the form they do (dynamics). Emphasis on how the important physical principles in mechanics, such as conservation of momentum and energy for translational and rotational motion, follow from just three laws of nature: Newton's laws of motion. The distinction made between fundamental laws of nature and empirical rules that are useful approximations for more complex physics. Problems are drawn from examples of mechanics in everyday life. Skills developed in verifying that derived results satisfy criteria for correctness, such as dimensional consistency and expected behavior in limiting cases. Discussions based on the language of mathematics, particularly vector representations and operations, and calculus. Physical understanding is fostered by peer interaction and demonstrations in lecture, and discussion sections based on interactive group problem-solving.
Mechanics and Special RelativityPHYSICS 61 (4)sciPHYSICS 61: Mechanics and Special RelativityThis course covers Einstein's special theory of relativity and Newtonian mechanics at a level appropriate for students with a strong high school mathematics and physics background, who are contemplating a major in Physics or Engineering Physics or are interested in a rigorous treatment of physics. Postulates of special relativity, simultaneity, time dilation, length contraction, the Lorentz transformation, the space-time invariant, causality, relativistic momentum and energy, and invariant mass. Central forces, friction, contact forces, linear restoring forces. Momentum, work, energy, collisions. Angular momentum, torque, center of mass, moment of inertia, precession. Conserved quantities. Uses the language of vectors and multivariable calculus.
- Electricity, Magnetism, and OpticsorPHYSICS 23 (4)sciPHYSICS 23: Electricity, Magnetism, and Optics
How are electric and magnetic fields generated by static and moving charges, and what are their applications? How is light related to electromagnetic waves? Students learn to represent and analyze electric and magnetic fields to understand electric circuits, motors, and generators. The wave nature of light is used to explain interference, diffraction, and polarization phenomena. Geometric optics is employed to understand how lenses and mirrors form images. These descriptions are combined to understand the workings and limitations of optical systems such as the eye, corrective vision, cameras, telescopes, and microscopes. Discussions based on the language of algebra and trigonometry. Physical understanding fostered by peer interaction and demonstrations in lecture, and interactive group problem solving in discussion sections.
Electricity and MagnetismorPHYSICS 43 (4)sciPHYSICS 43: Electricity and MagnetismWhat is electricity? What is magnetism? How are they related? How do these phenomena manifest themselves in the physical world? The theory of electricity and magnetism, as codified by Maxwell's equations, underlies much of the observable universe. Students develop both conceptual and quantitative knowledge of this theory. Topics include: electrostatics; magnetostatics; simple AC and DC circuits involving capacitors, inductors, and resistors; integral form of Maxwell's equations; electromagnetic waves. Principles illustrated in the context of modern technologies. Broader scientific questions addressed include: How do physical theories evolve? What is the interplay between basic physical theories and associated technologies? Discussions based on the language of mathematics, particularly differential and integral calculus, and vectors. Physical understanding fostered by peer interaction and demonstrations in lecture, and discussion sections based on interactive group problem solving.
Electricity and Magnetism Using Special Relativity and Vector CalculusPHYSICS 81 (4)sciPHYSICS 81: Electricity and Magnetism Using Special Relativity and Vector CalculusThis course recasts the foundations of electricity and magnetism in a way that will surprise, delight, and challenge students who have already encountered the subject at a college or AP level. Suitable for students contemplating a major in Physics or Engineering Physics, those interested in a rigorous treatment of physics as a foundation for other disciplines, or those curious about powerful concepts like transformations, symmetry, and conservation laws. Electrostatics and Gauss' law. Electric potential, electric field, conductors, image charges. Electric currents, DC circuits. Moving charges, magnetic field as a consequence of special relativity applied to electrostatics, Ampere's law. Solenoids, transformers, induction, AC circuits, resonance. Displacement current, Maxwell's equations. Electromagnetic waves. Throughout, we'll see the objects and theorems of vector calculus become manifest in charges, currents, and electromagnetic fields.
- 1 × Science course
Other Courses
- 10 × Free Elective
Program Learning Outcomes
- Apply the knowledge of mathematics, science, and engineering
- Design and conduct experiments, as well to analyze and interpret data
- Design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
- Function on multidisciplinary teams
- Identify, formulate, and solve engineering problems
- Understand professional and ethical responsibility
- Communicate effectively
- Understand the impact of engineering solutions in a global, economic, environmental, and societal context
- Demonstrate a working knowledge of contemporary issues
- Apply the techniques, skills, and modern engineering tools necessary for engineering practice
- Transition from engineering concepts and theory to real engineering applications