Northwestern UniversityWebsiteAcademic Catalog
Computer ScienceDepartment Website
Majors
Courses
source 1source 2source 3COMP_SCI 101-0: Computer Science: Concepts, Philosophy, and Connections (1)
General introduction to historical and current intellectual questions in computer science. Theory, systems, artificial intelligence, interfaces, software development, and interactions with business, politics, law, medicine, engineering, and other sciences.
COMP_SCI 110-0: Introduction to Computer Programming (1) intro
Introduction to programming practice using a modern programming language. Analysis and formulation of problems for computer solution. Systematic design, construction, and testing of programs. Substantial programming assignments. Not to be taken for credit with or after COMP_SCI 111-0.
COMP_SCI 111-0: Fundamentals of Computer Programming (1) intro
Fundamental concepts of computer programming with heavy emphasis on design of recursive algorithms and test-driven development. Functional, imperative, and object-oriented programming paradigms. Procedural abstraction, data abstraction, and modularity. Required for the computer science degree.
COMP_SCI 130-0: Tools and Technology of the World-Wide Web (1) sys
Introduction to the theory and practice of developing sites on and technology for the web. Basics of HTML, JavaScript, ASP, and CGI programming.
COMP_SCI 150-0: Fundamentals of Computer Programming 1.5 (1) intro
An introduction to Object-oriented programming: focus on Python but including a brief introduction to a statically typed language (e.g. C++). Students will use some approaches from Artificial Intelligence and Machine Learning to complete programming assignments. Required for the computer science degree.
COMP_SCI 211-0: Fundamentals of Computer Programming II (1) intro
CS 211 teaches foundational software design skills at a small-to-medium scale. We aim to provide a bridge from the student-oriented How to Design Programs languages to real, industry-standard languages and tools. Topics include expressions, statements, types, functions, branches and iteration, user-defined types, data hiding, basic UNIX shell usage, and testing.
COMP_SCI 212-0: Mathematical Foundations of Comp Science (1) math
Basic concepts of finite and structural mathematics. Sets, axiomatic systems, the propositional and predicate calculi, and graph theory. Application to computer science: sequential machines, formal grammars, and software design.
COMP_SCI 213-0: Introduction to Computer Systems (1) sys
The hierarchy of abstractions and implementations that make up a modern computer system; demystifying the machine and the tools used to program it; systems programming in C in the UNIX environment. Preparation for upper-level systems courses.
COMP_SCI 214-0: Data Structures & Algorithms (1) algs
Design, implementation, and performance analysis of abstract data types; data structures and their algorithms. Topics include fundamental collection classes, tree and graph representations and walks, search trees, sorting, priority queues and heaps, least-cost paths computations, and disjoint-set structures. Required for the computer science degree.
COMP_SCI 217-0: Data Management & Information Processing (1) sys
This class offers a hands-on introduction to data representation, data modelling, and the SQL language for accessing and analyzing data in relational databases. Students access and analyze data in real-world large-scale databases from the public domain. Not for computer science or computer engineering degree candidates.
COMP_SCI 260-0: Introduction to Law and Digital Technologies (1) impact
This course explores the legal implications of the contemporary technology landscape, including the growth of artificial intelligence, the ecosystem for creating and disseminating digital information, and the challenges of ensuring digital privacy and algorithm equity. A key goal is for students to acquire the skills to understand, contribute to, and shape the dialog on complex issues at the intersection of technology and law.
COMP_SCI 295-0: Special Topics in Computer Science (1) special
Topics suggested by students or faculty and approved by the department.
COMP_SCI 296-0: Intermediate Topics in Computer Science (1) special
Topics suggested by faculty and approved by the department. Intended to apply toward advanced elective for the computer science major.
COMP_SCI 298-0: CS Research Track Program (1) special
Topics suggested by faculty and approved by the department. Equivalent to CS 396 but intended to apply toward advanced elective for the computer science major.
COMP_SCI 301-0: Introduction to Robotics Laboratory (1) ai
Lab-based introduction to robotics, focusing on hardware (sensors/ actuators) and software (sensor processing/behavior development); motion control and planning; artificial intelligence; machine learning. Not open to graduate students except by consent of instructor.
COMP_SCI 307-0: Introduction to Cryptography (1) math
This course covers the basic knowledge in understanding and using cryptography. The main focus is on definitions, theoretical foundations, and rigorous proofs of security, with some programming practice. Topics include symmetric and public-key encryption, message integrity, hash functions, block-cipher design and analysis, number theory, and digital signatures.
COMP_SCI 310-0: Scalable Software Architectures (1) softeng
Teaches software design principles for building high-scale Internet services. Focuses on challenges arising when assembling software services that run on many machines in parallel and which require the coordination of multiple software applications.
COMP_SCI 311-0: Inclusive Making (1) humans
Inclusive Making is about centering disability within computer science. The class explores the promises and shortcomings of making through a critical disability studies lens. It also looks at existing making practices within disability communities. Throughout the class, students reflect on their assumptions about disability and computer science, and wrestle with tensions related to making and accessibility alongside community organizations.
COMP_SCI 312-0: Data Privacy (1) impact
Data breaches, privacy breaches, and concerns about algorithmic decision-making have been on the rise. As a result, data privacy has become an increasingly significant concern in the past several years. Individuals and organizations often trust institutions with their data with the expectation that one's data is private from others or to the handling institutions and that it is not used for unfair practices. To ensure the privacy of sensitive data, privacy mechanisms have been developed to preserve the privacy of data without reducing its functionality. The goal of this course is to introduce you to the concept and implications of data privacy, including mechanisms and protocols that are used to preserve data privacy in practice. We will study concepts such as differential privacy, database anonymization, anonymous communication, and algorithmic fairness. We will also discuss privacy in the context of web privacy, social network privacy, human factors, and machine learning along with any policy implications.
COMP_SCI 313-0: Tangible Interaction Design and Learning (1) humans
The use of tangible interaction to create innovative learning experiences, including distributed cognition, embodied interaction, cultural forms, and design frameworks.
COMP_SCI 314-0: Technology and Human Interaction (1) humans
Understanding human interactions that occur both with and through technology; design, creation, and evaluation of technologies to support such interactions.
COMP_SCI 315-0: Design, Technology, and Research (1) ai
Hands-on experience in the research learning environment. Students lead research projects in social and crowd computing, cyber-learning, human-computer interaction, and artificial intelligence.
COMP_SCI 321-0: Programming Languages (1) pls
Introduction to key parts of programming languages: syntax, semantics, and pragmatics. Implementation of a series of interpreters that show how various aspects of programming languages behave.
COMP_SCI 322-0: Compiler Construction (1) pls
The compiler is the programmer's primary tool. Understanding the compiler is therefore critical for programmers, even if they never build one. Furthermore, many design techniques that emerged in the context of compilers are useful for a range of other application areas. This course introduces students to the essential elements of building a compiler: parsing, context-sensitive property checking, code linearization, register allocation, etc. To take this course, students are expected to already understand how programming languages behave, to a fairly detailed degree. The material in the course builds on that knowledge via a series of semantics preserving transformations that start with a fairly high-level programming language and culminate in machine code.
COMP_SCI 323-0: Code Analysis and Transformation (1) pls
This course covers fast, sophisticated code analysis and transformation tools essential for modern software development. You will learn the fundamentals of code analysis and transformation.
COMP_SCI 324-0: Dynamics of Programming Languages (1) pls
This course introduces students to the semantics of programming languages, focusing on building a foundational understanding of PLs by breaking them down to their most basic ingredients.
COMP_SCI 325-0: Artificial Intelligence Programming (1) ai
Introduction to LISP and programming knowledge-based systems and interfaces. Strong emphasis on writing maintainable, extensible systems.
COMP_SCI 326-0: Introduction to the Data Science Pipeline (1) ai
This course covers various tools in the process of data science for obtaining, cleaning, visualizing, modeling, and interpreting data.
COMP_SCI 327-0: Generative Methods (1) ai
Generative Methods are algorithms used to create. This class will expose you to the modern cutting edge of creative coding.
COMP_SCI 329-0: HCI Studio (1) humans
Human-Computer Interaction (HCI) serves as the bridge between computing and humanity. This class aims to develop critical thinking skills through effective structures for designing HCI systems.
COMP_SCI 330-0: Human Computer Interaction (1) humans
Introduction to human-computer interaction and design of systems that work for people and their organizations. Understanding the manner in which humans interact with and use computers for productive work.
COMP_SCI 331-0: Introduction to Computational Photography (1) graphics
Fundamentals of digital imaging and modern camera architectures. Hands-on experience acquiring, characterizing, and manipulating data captured using a modern camera platform.
COMP_SCI 332-0: Online Markets (1) ai
This class gives an introduction to the science of online markets combining topics from game theory and economics with topics from machine learning and algorithms.
COMP_SCI 333-0: Interactive Information Visualization (1) graphics
This course covers theory and techniques for information visualization using interactive interfaces to visualize abstract data.
COMP_SCI 335-0: Introduction to the Theory of Computation (1) theory
Mathematical foundations of computation, including computability, relationships of time and space, and the P vs. NP problem.
COMP_SCI 336-0: Design & Analysis of Algorithms (1) algs
Analysis techniques and algorithm design techniques including sorting and selection algorithms, order statistics, heaps, and priority queues.
COMP_SCI 337-0: Natural Language Processing (1) ai
Semantics-oriented introduction to natural language processing, broadly construed. Representation of meaning and knowledge inference in story understanding, script/frame theory, plans and plan recognition, counter-planning, and thematic structures.
COMP_SCI 338-0: Practicum in Intelligent Information Systems (1) ai
A practical excursion into building intelligent information systems. Students develop a working program in information access, management, capture, or retrieval. Project definition, data collection, technology selection, implementation, and project management.
COMP_SCI 339-0: Introduction to Database Systems (1) sys
Data models and database design. Modeling the real world: structures, constraints, and operations. The entity relationship to data modeling (including network hierarchical and object-oriented), emphasis on the relational model. Use of existing database systems for the implementation of information systems.
COMP_SCI 340-0: Introduction to Networking (1) sys
A top-down exploration of networking using the five-layer model and the TCP/IP stack, covering each layer in depth. Students build web clients, servers, and a TCP implementation and implement routing algorithms.
COMP_SCI 341-0: Mechanism Design (1) math
Applying algorithms and microeconomics to derive a theory of the design of mechanisms that produce desired outcomes despite counteractive inputs by outside agents. Key application areas: auctions, markets, networking protocols.
COMP_SCI 343-0: Operating Systems (1) sys
Fundamental overview of operating systems, including: concurrency (processes, synchronization, semaphores, monitors, deadlock); memory management (segmentation, paging virtual memory policies); software system architectures (level structures, microkernals); file systems (directory structures, file organization, RAID); protection (access control, capabilities, encryption, signatures, authentication). Requires substantial programming projects.
COMP_SCI 344-0: Design of Computer Problem Solvers (1) ai
Principles and practice of organizing and building artificial intelligence reasoning systems. Pattern-directed rule systems, truth-maintenance systems, and constraint languages.
COMP_SCI 345-0: Distributed Systems (1) sys
Basic principles behind distributed systems (collections of independent components that appear to users as a single coherent system) and main paradigms used to organize them.
COMP_SCI 347-0: Conversational AI (1) ai
Principles and practices of creating AI systems which interact with people through conversations. This includes knowledge-rich natural language understanding, multimodal interactions (i.e. speech and sketching), principles of dialogue drawn from cognitive science, question-answering, and architectures for building conversational AI systems. Involves substantial programming and project work. Class sessions include both lectures and studio instruction.
COMP_SCI 348-0: Introduction to Artificial Intelligence (1) ai
Core techniques and applications of AI. Representing, retrieving, and applying knowledge for problem solving. Hypothesis exploration. Theorem proving. Vision and neural networks.
COMP_SCI 349-0: Machine Learning (1) ai
Study of algorithms that improve through experience. Topics typically include Bayesian learning, decision trees, genetic algorithms, neural networks, Markov models, and reinforcement learning. Assignments include programming projects and written work.
COMP_SCI 350-0: Introduction to Computer Security (1) sys
Basic principles and practices of computer and information security. Software, operating system, and network security techniques, with detailed analysis of real-world examples. Topics include cryptography, authentication, software and operating system security (e.g., buffer overflow), Internet vulnerability (DoS attacks, viruses/worms, etc.), intrusion detection systems, firewalls, VPN, and web and wireless security.
COMP_SCI 351-1: Introduction to Computer Graphics (1) graphics
Mathematical software and hardware requirements for computer graphics systems. Data structures and programming languages. Random displays. Graphic applications.
COMP_SCI 351-2: Intermediate Computer Graphics (1) graphics
Methods and theory of computer graphics. Project-oriented approach. Describing shapes, movement, and lighting effects; interactive elements.
COMP_SCI 352-0: Machine Perception of Music & Audio (1) ai
Machine extraction of musical structure in audio and MIDI and score files, covering areas such as source separation and perceptual mapping of audio to machine-quantifiable measures.
COMP_SCI 354-0: Computer System Security (1) sys
The past decade has seen an explosion in the concern for the security of information. This course introduces students to the basic principles and practices of computer system and networking security, with detailed analysis of real-world examples and hands-on practice. Topics include the basic crypto, authentication, reverse engineering, buffer overflow attacks, vulnerability scanning, web attacks, firewalls, intrusion detection/prevention systems, etc. We will first introduce the basic theory for each type of attack; then we will actually carry them out in 'real-world' settings. The goal is to learn security by learning how to view your machine from a hacker's perspective. In addition, we encourage students to participate in the UCSB International Capture the Flag Competition. Capture the Flag is a network security exercise where the goal is to exploit other machines while defending your own. In fact, this course should prepare you for any one of many capture the flag competitions that take place year-round. We will learn about different types of hacks and perform them. After learning how to execute such exploits and penetrate a network, we will discuss ways to protect a network from others exploiting the same vulnerabilities. Understanding security is essential in all fields of software development and computing. For major or minors in Computer Science, this course can satisfy the system breadth.
COMP_SCI 355-0: Digital Forensics and Incident Response (1) sys
This course aims to teach students the concepts of Digital Forensics and Incident Response. The technical content taught in the class consists of deep knowledge of filesystems and operating systems so that students know which digital artifacts to investigate in data breach scenarios. Labs and assignments are a sanitized version of real-world intrusions by nation-state actors and cybercriminals.
COMP_SCI 367-0: Wireless and Mobile Health: Passive Sensing Data Analytics (1) sys
A hands-on introduction and experience to the growing field of mobile Health. Students work together on a project with clinicians and faculty in medicine, building a unique mHealth system while testing their system on a small population. Theory-driven project hypothesis, technology selection and development, passive sensing data analytic chain understanding and implementation, and project management.
COMP_SCI 368-0: Programming Massively Parallel Processors with CUDA (1) sys
This course focuses on developing and optimizing applications software on massively parallel graphics processing units (GPUs). Such processing units routinely come with hundreds to thousands of cores per chip and sell for a few hundred to a few thousand dollars. The massive parallelism they offer allows applications to run 2x-450x faster than on conventional multicores. However, to reach this performance improvement, the application must fully utilize the computational, storage and communication resources provided by the device. This course discusses state-of-the-art parallel programming optimization methods to achieve this goal.
COMP_SCI 370-0: Computer Game Design (1) graphics
Plot, narrative, and character simulation for creating game worlds; artificial intelligence for synthetic characters; tuning gameplay. Substantial programming and project work.
COMP_SCI 371-0: Knowledge Representation and Reasoning (1) ai
Principles and practices of knowledge representation, including logics, ontologies, commonsense knowledge, and semantic web technologies.
COMP_SCI 372-0: Designing and Constructing Models with Multi-Agent Languages (1) ai
This course will begin with an introduction to the multi-agent language NetLogo. Students will design and implement several NetLogo models and analyze their behavioral regimes. Students will also learn to build models of interaction on social networks (or other types of networks). We will cover methodology for verifying, validating and replicating agent-based models and comparisons with systems dynamics and equation-based models. NetLogo comes with many extensions that support a variety of additional features. Students can use these extensions to create specialized models, such as complex networks, real-time data extraction, data mining, connections to physical devices, etc.. Students will also have an opportunity to explore existing and create their own participatory simulations using the HubNet architecture as well as exploring connecting real world sensors and motors to models. Students can also explore multi-level agent-based modeling in which hundreds or thousands of models are connected with NetLogo's LevelSpace extension.
COMP_SCI 376-0: Computer Game Design and Development (1) graphics
Introduction to design of simulation-based media, with an emphasis on 2D game design. Mathematical preliminaries: linear, affine, and projective spaces, linear transforms, inner and exterior products, unit quaternions; Architecture: update/render loop, component systems, serialization and deserialization, event handling and asynchronous processing, multitasking; Rendering: scene graphs, meshes, shaders, sprites; Networking; Audio; Physics: particles, rigid bodies, collision detection; Gameplay design.
COMP_SCI 377-0: Game Design Studio (1) softeng
In this course, students will design and develop games using the Unity game engine, with focus on team-based projects and agile development practices. Lectures will cover game design theory, game architecture and implementation, and the business of game development. Students will participate in class discussion and evaluation of projects in progress, to develop their skills in iterative design and implementation.
COMP_SCI 392-0: Rapid Prototyping for Software Innovation (1) softeng
This is a course about developing working prototypes of full-stack mobile web software applications in rapid iterations. Teams design and implement three distinct applications over ten weeks. These projects are the context for introducing (1) cross-functional team development, (2) lean agile value-first product development, and (3) specific web application frameworks and development tools, such as React, Firebase, Cypress, and Github Actions for continuous integration.
COMP_SCI 393-0: Software Construction (1) softeng
Building software is a craft that requires careful design. This course teaches software design principles in a studio setting. Each week, students present their programs to the class for review. Together, the class evaluates the programs for correctness and, more importantly, clarity and design. Expect to learn how to build reliable, maintainable, extensible software and how to read others' codes.
COMP_SCI 394-0: Agile Software Development (1) softeng
Developing mobile and web applications, using modern sustainable agile practices, such as backlogs, user stories, velocity charts, and test driven development, to deliver value as quickly as possible to end users, clients, developers, and the development organization.
COMP_SCI 396-0: Special Topics in Computer Science (1) special
Topics suggested by faculty and approved by the department. Equivalent to 397 but intended to apply toward courses for the computer science major.
COMP_SCI 397-0: Special Projects in Computer Science (1) special
Projects suggested by faculty and approved by the department. Equivalent to 396 but intended to apply toward courses for the computer science major and its project requirement.
COMP_SCI 399-0: Projects (1) special
Seminar and projects for advanced undergraduates on subjects of current interest in electrical and computer engineering.
COMP_SCI 440-0: Advanced Networking (1) sys
This course will cover a broad range of topics including Internet evolution and architectures; analysis and design of network protocols (both wired and wireless); networking issues for Web and gaming applications; analysis and performance of content distribution networks; network security, vulnerability, and defenses.
COMP_SCI 441-0: Resource Virtualization (1) sys
The bulk of the time in this class examining a virtual machine monitor (VMM) in depth, at the source code level. The course explains the hardware/software interface of a modern x86 computer in detail. A VMM is an operating system that is implemented directly on top of the hardware interface, and itself presents a hardware interface to higher-level software. Students will also acquire valuable kernel development skills.
COMP_SCI 443-0: Advanced Operating Systems (1) sys
Advanced concepts in operating systems and distributed computing from historical perspectives to current themes such as peer-to-peer computing and mobile systems.
COMP_SCI 446-0: Kernel and Other Low-level Software Development (1) sys
The development of low-level systems software such as drivers, kernels, etc is very different from the development of applications. This class teaches how such development is done: how to design, implement, debug, and optimize low-level software and use available tools.
COMP_SCI 450-0: Internet Security (1) sys
Through measurement-based approaches, students analyze the complexity of the Internet, and develop countermeasures against various vulnerabilities of the Internet such as viruses, worms, and denial of service attacks.
COMP_SCI 473-1: NUvention: Web - Part 1 (1) entrepreneur
NUvention: Web is an interdisciplinary experiential learning program designed to expose students to the entire product and business development life cycle for a software company.
COMP_SCI 473-2: NUvention: Web - Part 2 (1) entrepreneur
NUvention: Web is an interdisciplinary experiential learning program designed to expose students to the entire product and business development life cycle for a software company.
STAT 210-0: Introduction to Probability and Statistics (1) math
A mathematical introduction to probability theory and statistical methods, including properties of probability distributions, sampling distributions, estimation, confidence intervals, and hypothesis testing. STAT 210-0 is primarily intended for economics majors.
MATH 218-1: Single-Variable Calculus with Precalculus (1) math
Functions and graphs. Limits. Continuity. Differentiation. Linearization.
MATH 218-2: Single-Variable Calculus with Precalculus (1) math
Extreme value theorem, mean value theorem, and curve-sketching. Related rates. Optimization. Transcendental and inverse functions.
MATH 218-3: Single-Variable Calculus with Precalculus (1) math
Definite integrals, antiderivatives, and the fundamental theorem of calculus. Areas and volumes. Techniques of integration, numerical integration, and improper integrals. First-order linear and separable ordinary differential equations.
MATH 220-1: Single-Variable Differential Calculus (1) math
Limits. Differentiation. Linear approximation and related rates. Extreme value theorem, mean value theorem, and curve-sketching. Optimization.
MATH 220-2: Single-Variable Integral Calculus (1) math
Definite integrals, antiderivatives, and the fundamental theorem of calculus. Transcendental and inverse functions. Areas and volumes. Techniques of integration, numerical integration, and improper integrals. First-order linear and separable ordinary differential equations.
MATH 228-1: Multivariable Differential Calculus for Engineering (1) math
Vectors, vector functions, partial derivatives, Taylor polynomials, and optimization. Emphasis on engineering applications.
MATH 230-1: Multivariable Differential Calculus (1) math
Vectors, vector functions, partial derivatives, and optimization. Not open to students in the McCormick School of Engineering.
MATH 240-0: Linear Algebra (1) math
Elementary linear algebra: systems of linear equations, matrix algebra, subspaces, determinants, eigenvalues, eigenvectors, and orthogonality.
MATH 310-1: Probability and Stochastic Processes (1) math
Axioms of probability. Conditional probability and independence. Random variables. Joint distributions. Expectation. Limit theorems: the weak law of large numbers and the central limit theorem.
GEN_ENG 205-1: Engineering Analysis I (1) engr
Introduction to linear algebra from computational, mathematical, and applications viewpoints. Computational methods using a higher-level software package such as MATLAB.
GEN_ENG 205-2: Engineering Analysis II (1) engr
Linear algebra and introduction to vector methods in engineering analysis. Statics and dynamics of rigid bodies and matrix analysis of trusses and networks. Engineering design problems.
GEN_ENG 205-3: Engineering Analysis III (1) engr
Dynamic behavior of the elements. Modeling of mechanical (both translational and rotational), electrical, thermal, hydraulic, and chemical systems composed of those elements.
GEN_ENG 206-1: Honor Engineering Analysis (1) engr
Covers topics addressed in GEN_ENG 205-1 at a deeper level. Intended for students with demonstrated strength in mathematics, computer programming, and/or physics.
GEN_ENG 206-2: Honors Engineering Analysis (1) engr
Covers topics addressed in GEN_ENG 205-2 at a deeper level. Intended for students with demonstrated strength in mathematics, computer programming, and/or physics.
GEN_ENG 206-3: Honors Engineering Analysis (1) engr
Covers topics addressed in GEN_ENG 205-3 at a deeper level. Intended for students with demonstrated strength in mathematics, computer programming, and/or physics.
COMP_ENG 303-0: Advanced Digital Design (1) sys
Overview of digital logic design. Technology review. Delays, timing in combinational and sequential circuits, CAD tools, arithmetic units such as ALUs and multipliers. Introduction to VHDL.
COMP_ENG 346-0: Microprocessor System Design (1) sys
Structure and timing of typical microprocessors. Sample microprocessor families. Memories, UARTS, timer/counters, serial devices, and related devices. MUX and related control structures for building systems. Standard bus structures. Interrupt programming. Hardware/software design tradeoffs.
COMP_ENG 358-0: Introduction to Parallel Computing (1) sys
Introduction to parallel computing for scientists and engineers. Shared-memory parallel architectures and programming, distributed memory, message-passing data-parallel architectures, and programming.
COMP_ENG 361-0: Computer Architecture I (1) sys
Design and understanding of the computer system as a whole unit. Performance evaluation and its role in computer system design; instruction set architecture design, data-path design and optimizations (e.g., ALU); control design; single cycle, multiple cycle, and pipeline implementations of processor. Hazard detection and forwarding; memory hierarchy design; cache memories, virtual memory, peripheral devices, and I/O.
DSGN 106-1: Design Thinking and Communication (0.5) communication
Integrated introduction to the user-centered design process and technical communication. Students will address challenges proposed by project partners by identifying unmet needs, conducting research, generating and evaluating potential solutions, and finally, presenting a final design concept with supporting documentation. Students also enhance their abilities in equitable teamwork, project management, fabrication skills, and producing written, oral, graphical, and interpersonal communication. One lecture, two section meetings, and lab. Co-registration with ENGLISH 106-1 required. Primarily intended for first-year engineering students.
DSGN 106-2: Design Thinking and Communication (0.5) communication
Integrated iteration on the user-centered design process and technical communication. This course will build on the learning objectives from DTC-1 while adding more focus on ethics in design and communication, equitable distribution of teamwork, project management, documenting and communicating progress, and exploring a wider variety of project topics. One lecture, two section meetings, and lab. Co-registration with ENGLISH 106-2 required. Primarily intended for first-year engineering students.
ELEC_ENG 302-0: Probabilistic Systems (1) engr
Introduction to probability theory and its applications. Axioms of probability, distributions, discrete and continuous random variables, conditional and joint distributions, correlation, limit laws, connection to statistics, and applications in engineering systems
ELEC_ENG 332-0: Introduction to Computer Vision (1) engr
Computer and biological vision systems, image formation, edge detection, image segmentation, texture, representation and analysis of two-dimensional geometric structures and of three-dimensional structures.
IEMS 201-0: Introduction to Statistics (1)
Collecting data; summarizing and displaying data; drawing conclusions from data; probability background, confidence intervals, hypotheses tests, regression, correlation. Not open to industrial engineering degree candidates.
IEMS 303-0: Statistics (1)
Introduction to the foundations of statistics and statistical computing for data analysis and their applications. Descriptive statistics and statistical inference for estimation, testing, and prediction.