CS Curricula

←All schools

Washington University in St. LouisWebsiteAcademic Catalog

Computer Science & EngineeringDepartment Website

Majors

Courses

source 1source 2source 3source 4

CSE 131: Introduction to Computer Science (3) intro

An introduction to software concepts and implementation, emphasizing problem solving through abstraction and decomposition. Introduces processes and algorithms, procedural abstraction, data abstraction, encapsulation and object-oriented programming. Recursion, iteration and simple data structures are covered. Concepts and skills are mastered through programming projects, many of which employ graphics to enhance conceptual understanding. Java, an object-oriented programming language, is the vehicle of exploration. Active-learning sessions are conducted in a studio setting in which students interact with each other and the professor to solve problems collaboratively.

CSE 131R: Seminar: Computer Science I (1) talks

A seminar and discussion session that complements the material studied in CSE 131. Provides background and breadth for the disciplines of computer science and computer engineering. Features guest lectures and highly interactive discussions of diverse computer science topics. Highly recommended for majors and for any student seeking a broader view of computer science or computer engineering.

CSE 132: Introduction to Computer Engineering (3) intro

This course introduces students to fundamental concepts in the basic operation of computers, ranging from desktops and servers to microcontrollers and handheld devices. Subjects include digital and analog input/output, sensing the physical world, information representation, basic computer architecture and machine language, time-critical computation, machine-to-machine communication and protocol design. Students will use both desktop systems and handheld microcontrollers for laboratory experiments.

CSE 132R: Seminar: Computer Science II (1) talks

This course is a seminar and discussion session that complements the material studied in CSE 132. It provides background and breadth for the disciplines of computer science and computer engineering, and it features guest lectures and highly interactive discussions of diverse computer science topics. Highly recommended for majors and for any student seeking a broader view of computer science or computer engineering.

CSE 204A: Web Development (3) sys

This course explores elementary principles for designing, creating, and publishing effective websites and web application front-ends. Topics include page layout concepts, design principles, HTML, CSS, JavaScript, front-end frameworks like Angular and React, and other development tools. Students apply the topics by creating a series of websites that are judged based on their design and implementation.

CSE 217A: Introduction to Data Science (3) ai

This course provides an introduction to data science and machine learning, and it focuses on the practical application of models to real-world supervised and unsupervised learning problems. We will discuss methods for linear regression, classification, and clustering and apply them to perform sentiment analysis, implement a recommendation system, and perform image classification or gesture recognition.

CSE 222S: Internet of Things (3) sys

With the advent of the Internet of Things, we can address, control, and interconnect formerly isolated objects to create new and interesting applications. In this course we study fundamental technologies behind Internet-of-Things devices, and Appcessories, which include smart watches, health monitors, toys, and appliances.

CSE 231S: Introduction to Parallel and Concurrent Programming (3) sys

This course explores concepts, techniques, and design approaches for parallel and concurrent programming. We study how to write programs that make use of multiple processors for responsiveness and that share resources reliably and fairly. Parallel programming concepts include task-level, functional, and loop-level parallelism. Concurrent programming concepts include threads, synchronization, and locks. We cover how to adapt algorithms to achieve determinism and avoid data races and deadlock. Concepts and skills are acquired through the design and implementation of software projects.

CSE 232: Programming Skills Workshop (1) intro

This course provides an overview of practical implementation skills. Topics include compilation and linking, memory management, pointers and references, using code libraries, testing and debugging.

CSE 237S: Programming Tools and Techniques (3) softeng

This course offers an introduction to the tools and techniques that allow programmers to write code effectively. Tools covered include version control, the command line, debuggers, compilers, unit testing, IDEs, bug trackers, and more. The course also places a heavy emphasis on code quality: how can we write code that is functional and that also meets quality standards? Peer review exercises will be used to show the importance of code craftsmanship.

CSE 240: Logic and Discrete Mathematics (3) math

Introduces elements of logic and discrete mathematics that allow reasoning about computational structures and processes. Generally, the areas of discrete structures, proof techniques, probability and computational models are covered. Topics typically include propositional and predicate logic; sets, relations, functions and graphs; direct and indirect proof methods, induction and recursion; finite state machines and regular languages.

CSE 247: Data Structures and Algorithms (3) algs

Study of fundamental algorithms, data structures, and their effective use in a variety of applications. Emphasizes importance of data structure choice and implementation for obtaining the most efficient algorithm for solving a given problem. A key component of this course is worst-case asymptotic analysis, which provides a quick and simple method for determining the scalability and effectiveness of an algorithm. Online textbook purchase required.

CSE 247R: Seminar: Data Structures and Algorithms (1) talks

The content of this seminar will vary by semester, but it will generally complement the material taught in CSE 247 Data Structures and Algorithms.

CSE 256A: Introduction to Human-Centered Design (3) humans

This course provides an introduction to human-centered design through a series of small user interface development projects covering information foraging, learnability, and problem solving. Projects will begin with reviewing a relevant model of human behavior. Each project will then provide an opportunity to explore how to apply that model in the design of a new user interface.

CSE 260M: Introduction to Digital Logic and Computer Design (3) sys

Introduction to design methods for digital logic and fundamentals of computer architecture. Boolean algebra and logic minimization techniques; sources of delay in combinational circuits and effect on circuit performance; survey of common combinational circuit components; sequential circuit design and analysis; timing analysis of sequential circuits; use of computer-aided design tools for digital logic design (schematic capture, hardware description languages, simulation); design of simple processors and memory subsystems; program execution in simple processors; basic techniques for enhancing processor performance; configurable logic devices.

CSE 311A: Introduction to Intelligent Agents Using Science Fiction (3) ai

The course uses science-fiction short stories, TV episodes, and movies to motivate and introduce fundamental principles and techniques in intelligent agent systems. Topics covered may include game theory, decision theory, machine learning, distributed algorithms, and ethics.

CSE 314A: Data Manipulation and Management (3) sys

As the base of data science, data needs to be acquired, integrated and preprocessed. This important step in the data science workflow ensures both quantity and quality of data and improves the effectiveness of the following steps of data processing. Students will gain an understanding of concepts and approaches of data acquisition and governance including data shaping, information extraction, information integration, data reduction and compression, data transformation as well as data cleaning. The course will further highlight the ethical responsibility of protecting the integrity of data and proper use of data.

CSE 316A: Social Network Analysis (3) ai

This course looks at social networks and markets through the eyes of a computer scientist. We will look at questions including, 'Why are acquaintances rather than friends more likely to get us job opportunities?' and, 'Why do the rich get richer?' We begin by studying graph theory (allowing us to study the structure) and game theory (allowing us to study the interactions) of social networks and market behavior at the introductory level. Among other topics, we will study auctions, epidemics, and the structure of the internet (including web searches). This course examines the intersection of computer science, economics, sociology, and applied mathematics.

CSE 330S: Rapid Prototype Development and Creative Programming (3) sys

This course uses web development as a vehicle for developing skills in rapid prototyping. Students acquire the skills to build a Linux web server in Apache, to write a website from scratch in PHP, to run an SQL database, to perform scripting in Python, to employ various web frameworks, and to develop modern web applications in client-side and server-side JavaScript. The course culminates with a creative project in which students are able to synthesize the course material into a project of their own interest. The course implements an interactive studio format: after the formal presentation of a topic, students develop a related project under the supervision of the instructor.

CSE 332S: Object-Oriented Software Development Laboratory (3) intro

Intensive focus on practical aspects of designing, implementing and debugging software, using object-oriented, procedural, and generic programming techniques. The course emphasizes familiarity and proficiency with a wide range of C++ language features through hands-on practice completing studio exercises and lab assignments, supplemented with readings and summary presentations for each session.

CSE 337A: Retro Game Design (3) humans

Before they became 'retro,' games played on platforms of the 1970s and 1980s were just games. But early game-console hardware was designed with very particular ideas of what made a game a game, and under extreme constraints of cost and technical viability. Creators designed for these constraints, and their work then influenced the design of later hardware and software. This is a course about the history, design, and technology of one retro game console, the 1977 Atari Video Computer System (also known as the Atari VCS or the Atari 2600). The first popular home console, the Atari VCS is a truly weird computer: It 'boasts' 128 bytes of RAM, no video buffer, and a custom graphics and sound chip designed to interface with then-universal cathode ray tube televisions. Against all odds, creators made fun and successful games within these extreme constraints. Just as an artist benefits from learning the fundamentals of their craft, so a game designer or developer can benefit from returning to these early and crude hardware platforms. In this course, students will learn the technical and creative history of the Atari, and they will also learn the fundamentals of programming its unfamiliar hardware. Students will carry out programming exercises, mostly in the assembly language instructions required to operate this unusual computer. They will then make their own games for the Atari, which will be able to run on the actual, 45-year-old hardware.

CSE 341T: Parallel and Sequential Algorithms (3) algs

The course aims to teach students how to design, analyze and implement parallel algorithms. The emphasis is on teaching fundamental principles and design techniques that easily transfer over to parallel programming. These techniques include divide and conquer, contraction, the greedy method, and so on.

CSE 347: Analysis of Algorithms (3) algs

This course introduces techniques for the mathematical analysis of algorithms, including randomized algorithms and non-worst-case analyses such as amortized and competitive analysis. It also introduces the standard paradigms of divide-and-conquer, greedy, and dynamic programming algorithms, as well as reductions, and it provides an introduction to the study of intractability and techniques to determine when good algorithms cannot be designed.

CSE 359A: Signals, Data and Equity (3) impact

This course introduces the design of classification and estimation systems for equity -- that is, with the goal of reducing the inequities of racism, sexism, xenophobia, ableism, and other systems of oppression. Systems that change the allocation of resources among people can increase inequity due to their inputs, the systems themselves, or how the systems interact in the context in which they are deployed. This course presents background in power and oppression to help predict how new technological and societal systems might interact and when they might confront or reinforce existing power systems. Measurement theory -- the study of the mismatch between a system's intended measure and the data it actually uses -- is covered. Multiple examples of sensing and classification systems that operate on people (e.g., optical, audio, and text sensors) are covered by implementing algorithms and quantifying inequitable outputs.

CSE 361S: Introduction to Systems Software (3) sys

This course is an introduction to the hardware and software foundations of computer processing systems. The course provides a programmer's perspective of how computer systems execute programs and store information. The course material aims to enable students to become more effective programmers, especially when dealing with issues of performance, portability and robustness. It also serves as a foundation for other system courses (e.g., those involving compilers, networks, and operating systems), where a deeper understanding of systems-level issues is required. Topics covered include machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, and supporting concurrent computation.

CSE 362M: Computer Architecture (3) sys

This course explores the interaction and design philosophy of hardware and software for digital computer systems. Topics include: processor architecture, instruction set architecture, Assembly Language, memory hierarchy design, I/O considerations, and a comparison of computer architectures.

CSE 365S: Elements of Computing Systems (3) sys

All computers are made up of 0s and 1s. However, the conceptual gap between the 0s and 1s and the day-to-day operation of modern computers is enormously wide. This fast-paced course aims to bridge the divide by starting with simple logic gates and building up the levels of abstraction until one can create games like Tetris. There is no specific programming language requirement, but some experience with programming is needed.

CSE 400E: Independent Study (16) special

Investigation of a topic in computer science and engineering of mutual interest to the student and a mentor. Interested students are encouraged to approach and engage faculty to develop a topic of interest. A form declaring the agreement must be filed in the departmental office. Credit earned for CSE 400E can be counted toward a student's major or minor program, with the consent of the student's advisor. See also CSE 400.

CSE 411A: AI and Society (3) impact

AI has made increasing inroads in a broad array of applications, many that have socially significant implications. This course will study a number of such applications, focusing on issues such as AI used for social good, fairness and accountability of AI, and potential security implications of AI systems.

CSE 412A: Introduction to Artificial Intelligence (3) ai

The discipline of artificial intelligence (AI) is concerned with building systems that think and act like humans or rationally on some absolute scale. This course is an introduction to the field, with special emphasis on sound modern methods. The topics include knowledge representation, problem solving via search, game playing, logical and probabilistic reasoning, planning, dynamic programming, and reinforcement learning. Programming exercises concretize the key methods. The course targets graduate students and advanced undergraduates. Evaluation is based on written and programming assignments, a midterm exam and a final exam.

CSE 416A: Analysis of Network Data (3) ai

This course examines complex systems through the eyes of a computer scientist. We will use the representative power of graphs to model networks of social, technological, or biological interactions. Network analysis provides many computational, algorithmic, and modeling challenges. We begin by studying graph theory, allowing us to quantify the structure and interactions of social and other networks. We will then explore how to practically analyze network data and how to reason about it through mathematical models of network structure and evolution. We will also investigate algorithms that extract basic properties of networks in order to find communities and infer node properties. Finally, we will study a range of applications including robustness and fragility of networks such as the internet, spreading processes used to study epidemiology or viral marketing, and the ranking of webpages based on the structure of the webgraph. This course combines concepts from computer science and applied mathematics to study networked systems using data mining.

CSE 417T: Introduction to Machine Learning (3) ai

The field of machine learning is concerned with the question of how to construct computer programs that automatically improve with experience. This course is a broad introduction to machine learning, covering the foundations of supervised learning and important supervised learning algorithms. Topics to be covered are the theory of generalization (including VC-dimension, the bias-variance tradeoff, validation, and regularization) and linear and non-linear learning models (including linear and logistic regression, decision trees, ensemble methods, neural networks, nearest-neighbor methods, and support vector machines.

CSE 422S: Operating Systems Organization (3) sys

This course involves a hands-on exploration of core OS abstractions, mechanisms and policies in the context of the Linux kernel. Readings, lecture material, studio exercises, and lab assignments are closely integrated in an active-learning environment in which students gain experience and proficiency writing OS code, as well as tracing and evaluating OS operations via user-level programs and kernel-level monitoring tools. Topics include: system calls, interrupt handling, kernel modules, concurrency and synchronization, proportional and priority-based scheduling of processes and threads, I/O facilities, memory management, virtual memory, device management, and file system organization.

CSE 425S: Programming Systems and Languages (3) pls

A systematic study of the principles, concepts and mechanisms of computer programming languages: their syntax, semantics and pragmatics; the processing and interpretation of computer programs; programming paradigms; and language design. Illustrative examples are selected from a variety of programming language paradigms.

CSE 427S: Cloud Computing with Big Data Applications (3) sys

This course provides an overview of the tools necessary to harness big data on the cloud for real-world analytic applications. Each lecture will cover an important cloud computing concept or framework and will be accompanied by a lab. There will be an emphasis on hands-on experience through using each of the tools taught in this course in a small project.

CSE 428S: Multi-Paradigm Programming in C++ (3) pls

Intensive focus on how modern C++ language features support procedural, functional, generic, and object-oriented programming paradigms and allow those paradigms to be applied both separately and in combination. Topics covered will include various C++ language features and semantics, especially from the C++11 standard onward, with studio exercises and lab assignments designed to build proficiency in using them effectively within and across the different programming paradigms.

CSE 431S: Translation of Computer Languages (3) pls

The theory of language recognition and translation is introduced in support of compiler construction for modern programming languages. Topics include syntactic and semantic analysis, symbol table management, code generation, and runtime libraries. A variety of parsing methods is covered, including top-down and bottom-up. Machine problems culminate in the course project, for which students construct a working compiler.

CSE 433R: Seminar: Capture The Flag (CTF) Studio (1) talks

This course provides a collaborative studio space for hands-on practice solving security-relevant puzzles in 'Capture The Flag' (CTF) format. Students will engage CTF challenges individually and in teams, and online CTF resources requiring (free) account signup may be used. Students will be encouraged to attempt challenges commensurate with their ability, but no prior CTF experience or security knowledge is assumed.

CSE 433S: Introduction to Computer Security (3) sys

Secure computing requires the secure design, implementation, and use of systems and algorithms across many areas of computer science. Fundamentals of secure computing such as trust models and cryptography will lay the groundwork for studying key topics in the security of systems, networking, web design, machine learning algorithms, mobile applications, and physical devices.

CSE 434S: Reverse Engineering and Malware Analysis (3) sys

This course will focus on reverse engineering and malware analysis techniques. Reverse engineering -- the process of deconstructing an object to reveal its design and architecture -- is an essential skill in the information security community. Although hackers often use reverse engineering tools to discover and exploit vulnerabilities, security analysts and researchers must use reverse engineering techniques to find what a specific malware does, how it does it, and how it got into the system.

CSE 435S: Database Management Systems (3) sys

A study of data models and the database management systems that support these data models. The design theory for databases is developed and various tools are utilized to apply the theory. General query languages are studied and techniques for query optimization are investigated. Integrity and security requirements are studied in the context of concurrent operations on a database, where the database may be distributed over one or more locations. The unique requirements for engineering design databases, image databases, and long transaction systems are analyzed.

CSE 437R: Technical Interviewing (2) communication

Students will study, give, and receive technical interviews in this seminar course. The focus will be on improving student performance in a technical interview setting, with the goal of making our students as comfortable and agile as possible with technical interviews. Professionals from the local and extended Washington University community will mentor the students in this seminar.

CSE 437S: Software Engineering Workshop (3) softeng

An introduction and exploration of concepts and issues related to large-scale software systems development. Areas of exploration include technical complexities, organization issues, and communication techniques for large-scale development. Students participate through teams emulating industrial development. The projects cover the principal system development life-cycle phases from requirements analysis, to software design, and to final implementation. Issues relating to real-time control systems, human factors, reliability, performance, operating costs, maintainability and others are addressed and resolved in a reasonable manner.

CSE 438S: Mobile Application Development (3) sys

Learn how to create iOS apps in the Swift programming language. This course covers a variety of topics in the development of modern mobile applications, with a focus on hands-on projects. Students will create multiple fully-functional apps from scratch. The course emphasizes object-oriented design patterns and real-world development techniques. Time is provided at the end of the course for students to work on a project of their own interest.

CSE 439S: Mobile Application Development II (3) sys

In this course, students will work in groups to design, develop, test, publish, and market an iOS mobile application. Throughout the semester, students will operate in different roles on a team, serving as lead developer, tester, and project manager. Topics include how to publish a mobile application on an app store, APIs and tools for testing and debugging, and popular cloud-based SDKs used by developers. This course requires completion of the iOS version of CSE 438 Mobile Application Development or the appropriate background knowledge of the iOS platform.

CSE 442T: Introduction to Cryptography (3) math

This course is an introduction to modern cryptography, with an emphasis on its theoretical foundations. Topics will include one-way functions, pseudorandom generators, public key encryption, digital signatures, and zero-knowledge proofs.

CSE 447T: Introduction to Formal Languages and Automata (3) theory

An introduction to the theory of computation, with emphasis on the relationship between formal models of computation and the computational problems solvable by those models. Specifically, this course covers finite automata and regular languages; Turing machines and computability; and basic measures of computational complexity and the corresponding complexity classes.

CSE 450A: Video Game Programming (3) graphics

This course teaches the core aspects of a video game developer's toolkit. Students work in groups and with a large game software engine to create and playtest a full-featured video game. Students will explore topics around the design of games through analysis of current games. Students have the opportunity to explore additional topics including graphics, artificial intelligence, networking, physics, and user interface design through their game project.

CSE 451A: Video Game Programming II (3) graphics

This course is a continuation of CSE 450A Video Game Programming I. Students will work in groups and with a large game software engine to make a full-featured video game. Students will have the opportunity to work on topics in graphics, artificial intelligence, networking, physics, user interface design, and other topics.

CSE 452A: Computer Graphics (3) graphics

Introduction to computer graphics. The course covers fundamental concepts, data structures and algorithms related to the construction, display and manipulation of three-dimensional objects. Topics include scan-conversion, basic image processing, transformations, scene graphs, camera projections, local and global rendering, fractals, and parametric curves and surfaces. Students develop interactive graphics programs using C++ language.

CSE 454A: Software Engineering for External Clients (3) softeng

Teams of students will design and develop a solution to a challenging problem posed by a real-world client. Students will gain experience with a variety of facets of software development, such as gathering and interpreting requirements, software design/architecture, UI/UX, testing, documentation, and developer/client interactions.

CSE 457A: Introduction to Visualization (3) graphics

Disciplines such as medicine, business, science, and government are producing enormous amounts of data with increasing volume and complexity. In this course, students will study the principles for transforming abstract data into useful information visualizations.

CSE 460T: Switching Theory (3)

Advanced topics in switching theory as employed in the synthesis, analysis and design of information processing systems. Combinational techniques: minimization, multiple output networks, state identification and fault detection, hazards, testability and design for test are examined.

CSE 462M: Computer Systems Design (3) sys

Introduction to modern design practices, including FPGA and PCB design methodologies. Student teams use Xilinx Vivado for HDL-based FPGA design and simulation; they also perform schematic capture, PCB layout, fabrication, and testing of the hardware portion of a selected computation system.

CSE 463M: Digital Integrated Circuit Design and Architecture (3) sys

This is a project-oriented course on digital VLSI design. The course material focuses on bottom-up design of digital integrated circuits, starting from CMOS transistors, CMOS inverters, combinational circuits and sequential logic designs.

CSE 465M: Digital Systems Laboratory (3) sys

Hardware/software co-design; processor interfacing; procedures for reliable digital design, both combinational and sequential; understanding manufacturers' specifications; use of test equipment.

CSE 467S: Embedded Computing Systems (3) sys

This course introduces the issues, challenges, and methods for designing embedded computing systems -- systems designed to serve a particular application and which incorporate the use of digital processing devices. Examples of embedded systems include PDAs, cellular phones, appliances, game consoles, automobiles, and iPods. Emphasis is given to aspects of design that are distinct to embedded systems. The course examines hardware, software, and system-level design. Hardware topics include microcontrollers, digital signal processors, memory hierarchy, and I/O. Software issues include languages, run-time environments, and program analysis. System-level topics include real-time operating systems, scheduling, power management, and wireless sensor networks. Students will perform a course project on a real wireless sensor network testbed.

CSE 468T: Introduction to Quantum Computing (3)

This course introduces students to quantum computing, which leverages the effects of quantum-mechanical phenomena to solve problems. The course begins with material from physics that demonstrates the presence of quantum effects. Mathematical abstractions of quantum gates are studied with the goal of developing the skill to reason about existing quantum circuits and to develop new quantum circuits as required to solve problems. Students will develop a quantum-computer simulator and make use of open simulators as well as actual devices that can realize quantum circuits on the Internet.

CSE 469S: Security of the Internet of Things and Embedded System Security (3) sys

This course presents a deep dive into the emerging world of the 'internet of things' from a cybersecurity perspective. With billions of internet-enabled devices projected to impact every nook and cranny of modern existence, the concomitant security challenge portends to become dazzlingly complex. Students will learn the fundamentals of internet of things architecture and operations from a layered perspective and focus on identifying, assessing, and mitigating the threats and vulnerabilities therein. Through a blend of lecture and hands-on studios, students will gain proficiency in the range of approaches, methods, and techniques required to address embedded systems security and secure the internet of things using actual devices from both hardware and software perspectives and across a range of applications.

CSE 473S: Introduction to Computer Networks (3) sys

A broad overview of computer networking. Topics include history, protocols, Hyper Text Transfer Protocol (HTTP), File Transfer Protocol (FTP), Simple Mail Transfer Protocol (SMTP), Domain Name System (DNS), peer-to-peer (P2P), transport layer design issues, transport layer protocols, Transmission Control Protocol (TCP), User Datagram Protocol (UDP), TCP congestion control, network layer, Internet Protocol version 4 (IPv4), Internet Control Message Protocol (ICMP), Internet Protocol version 6 (IPv6), routing algorithms, routing protocols, Open Shortest Path First (OSPF), Routing Information Protocol (RIP), Border Gateway Protocol (BGP), datalink layer and local area networks carrier sense multiple access with collision detection (CSMA/CD), Ethernet, virtual local area networks (VLANs), Point-to-Point Protocol (PPP), Multi-Protocol Label Switching, wireless and mobile networks, multimedia networking, security in computer networks, cryptography, and network management.

CSE 497: Senior Project I (3) capstone

Implementation of a substantive project on an individual basis, involving one or more major areas in computer science. Problems pursued under this framework may be predominantly analytical, involving the exploration and extension of theoretical structures, or they may pivot around the design/development of solutions for particular applications drawn from areas throughout the University and/or the community. In either case, the project serves as a focal point for crystallizing the concepts, techniques, and methodologies encountered throughout the curriculum. Students intending to take CSE 497-498 must submit a project proposal form (PDF) for approval by the department during the spring semester of the junior year.

CSE 498: Senior Project II (3) capstone

Implementation of a substantive project on an individual basis, involving one or more major areas in computer science. Problems pursued under this framework may be predominantly analytical, involving the exploration and extension of theoretical structures, or they may pivot around the design/development of solutions for particular applications drawn from areas throughout the University and/or the community. In either case, the project serves as a focal point for crystallizing the concepts, techniques, and methodologies encountered throughout the curriculum. Students intending to take CSE 497-498 must submit a project proposal form (PDF) for approval by the department during the spring semester of the junior year.

CSE 499: Undergraduate Honors Thesis (3) capstone

Working closely with a faculty member, the student investigates an original idea (algorithm, model technique, etc.), including a study of its possible implications, its potential application and its relationship to previous related work reported in the literature. Contributions and results from this investigation are synthesized and compiled into a publication-quality research paper presenting the new idea.

CSE 500: Independent Study (13) special

Proposal form can be located at https://cse.wustl.edu/undergraduate/PublishingImages/Pages/undergraduate-research/Independent%20Study%20Form%20400.pdf

Math 131: Calculus I (3) math

Derivatives of algebraic, trigonometric and transcendental functions, techniques of differentiation, Mean Value Theorem, applications of the derivative. The definite integral and Fundamental Theorem of Calculus. Areas. Simpler integration techniques.

Math 132: Calculus II (3) math

Continuation of Math 131. A brief review of the definite integral and Fundamental Theorem of Calculus. Techniques of integration, applications of the integral, sequences and series, Taylor polynomials and series, and some material on differential equations.

Math 233: Calculus III (3) math

Multivariable calculus. Topics include differential and integral calculus of functions of two or three variables: vectors and curves in space, partial derivatives, multiple integrals, line integrals, vector calculus at least through Green's Theorem.

Math 309: Matrix Algebra (3) math

An introductory course in linear algebra that focuses on Euclidean n-space, matrices and related computations. Topics include: systems of linear equations, row reduction, matrix operations, determinants, linear independence, dimension, rank, change of basis, diagonalization, eigenvalues, eigenvectors, orthogonality, symmetric matrices, least square approximation, quadratic forms. Introduction to abstract vector spaces.

Math 310: Foundations for Higher Mathematics (3) math

Introduction to the rigorous techniques used in more advanced mathematics. Topics include postpositional logic, use of quantifiers, set theory, methods of proof and disproof (counterexamples), foundations of mathematics. Use of these tools in the construction of number systems and in other areas such as elementary number theory, combinatorial arguments and elementary proofs in analysis.

Math 310W: Foundations for Higher Mathematics with Writing (3) math

This course introduces the rigorous techniques used in more advanced mathematics. Topics include basic logic, set theory, methods of proof and counterexamples, foundations of mathematics, construction of number systems, counting methods, combinatorial arguments and elementary analysis. At least three papers will be required, with at least one revision.

Math 3200: Elementary to Intermediate Statistics and Data Analysis (3) math

An introduction to probability and statistics. Major topics include elementary probability, special distributions, experimental design, exploratory data analysis, estimation of mean and proportion, hypothesis testing and confidence, regression, and analysis of variance. Emphasis is placed on development of statistical reasoning, basic analytic skills, and critical thinking in empirical research studies. The use of the statistical software R is integrated into lectures and weekly assignments. Required for students pursuing a major or minor in mathematics or wishing to take 400-level or above statistics courses.

Math 3211: Statistics for Data Science I (3) math

Math 4211: Statistics for Data Science II (3) math

This builds on the foundation from the first course (SDS I) and further develops the theory of statistical hypotheses testing. It also covers advanced computer intensive statistical methods, such as the Bootstrap, that will make extensive use of R. The emphasis of the course is to expose students to modern statistical modeling tools beyond linear models that allow for flexible and tractable interaction among response variables and covariates/feature sets. Statistical modeling and analysis of real datasets is a key component of the course.

Math 439: Linear Statistical Models (3) math

Theory and practice of linear regression, analysis of variance (ANOVA) and their extensions, including testing, estimation, confidence interval procedures, modeling, regression diagnostics and plots, polynomial regression, colinearity and confounding, model selection, geometry of least squares, etc. The theory will be approached mainly from the frequentist perspective, and use of the computer (mostly R) to analyze data will be emphasized.

Engr 310: Technical Writing (3) engr

Persistent concerns of grammar and style. Analysis and discussion of clear sentence and paragraph structure and of organization in complete technical documents. Guidelines for effective layout and graphics. Examples and exercises stressing audience analysis, graphic aids, editing and readability. Videotaped work in oral presentation of technical projects. Writing assignments include descriptions of mechanisms, process instructions, basic proposals, letters and memos, and a long formal report.

DAT 120: Managerial Statistics I (3)

The first of a two-course sequence in business applications of statistics, focused on descriptive statistics, probability and distributions, inferential statistics, and linear regression. Approximately, the first quarter of the course is about descriptive statistics and applications of covariance. The second quarter is devoted to probability: basic rules, conditional probabilities, Bayes' theorem, expected values, and probability distributions. This work is followed by an introduction to sampling distributions and inferential statistics. Confidence intervals and hypothesis testing are introduced to make inferences about parameters. The last one-fourth of the course focuses on simple linear regression. Throughout the course, functions, data analysis, VBA, and solver features of Excel are introduced.

DAT 121: Managerial Statistics II (3)

The second of a two-course sequence in business applications of statistics, focused on forecasting. The course is devoted to the use of linear regression models in business, and ways to deal with problems of collinearity, outliers, non-linear relationships, and heteroscedasticity. Advanced topics including time series regression and logistic models are covered as time permits. There are quizzes and group projects in addition to a midterm and final.

ESE 318: Engineering Mathematics A (3)

Laplace transforms; matrix algebra; vector analysis; eigenvalues and eigenvectors; vector differential calculus and vector integral calculus in three dimensions.

ESE 326: Probability and Statistics for Engineering (3)

Study of probability and statistics together with engineering applications. Probability and statistics: random variables, distribution functions, density functions, expectations, means, variances, combinatorial probability, geometric probability, normal random variables, joint distribution, independence, correlation, conditional probability, Bayes theorem, the law of large numbers, the central limit theorem. Applications: reliability, quality control, acceptance sampling, linear regression, design and analysis of experiments, estimation, hypothesis testing. Examples are taken from engineering applications.

ESE 417: Introduction to Machine Learning and Pattern Classification (3)

This course provides a broad introduction to machine learning and statistical pattern classification. Students will study theoretical foundations of learning and several important supervised and unsupervised machine learning methods and algorithms, including linear model of regression and classification, logistic regression, Bayesian learning methods, neural networks, nearest neighbor method, support vector machines methods, clustering methods and principal component analysis. Students will also learn to use Python programming language to implement learned models and methods to solve pattern classification problems.