Department of Computer Science & Engineering > Undergraduate Programs > Complete Course List

Register for these courses on WebSTAC |

Dept | # | Course Name :
[Course Description On]
| Credits |

CSE | 104 | Web Development | 3 |

Explores the elementary principles and aesthetic decisions that go into designing, creating, and publishing an effective web site. Topics include the production process, design metaphors, interface/information design, page layout concepts, graphics ideas, image preparation, development tools, HTML, style sheets, basic scripting techniques, and site maintenance/marketing strategies. This course does not assume prior programming background or web design experience. | |||

CSE | 131 | Computer Science I | 3 |

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. Prerequisites: Comfort with algebra and geometry at the high school level is assumed. Patience, good planning, and organization will promote success. This course assumes no prior experience with programming. Two evening exams at which attendance is required will be on Monday, February 15th and Monday, March 21st from 6:30-8:30 p.m. | |||

CSE | 131R | Seminar: Computer Science I | 1 |

A seminar and discussion session that complements the material studied in CSE131. 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 engieering. Pass/Fail only. | |||

CSE | 131S | Introduction to Computer Science | 3 |

This course is an introduction to software concepts and implementation, emphasizing problem solving through abstraction and decomposition. It introduces processes and algorithms, procedural abstraction, data abstraction, encapsulation and object design. Recursion, iteration and simple data structures are covered. The impact of data representation on performance is discussed but not emphasized. Concepts and skills are mastered through programming projects, many of which employ graphics, animation, and audio to enhance conceptual understanding. Java, an object-oriented programming language, is used as the vehicle of exploration. Prerequisites: Comfort with algebra and geometry at the high school level is assumed. Patience and good planning, organization, and problem solving skills will help students succeed. | |||

CSE | 132 | Computer Science II | 3 |

CSE 132 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. Active-learning sessions are conducted in a studio setting in which students interact with each other and the professor to solve problems collaboratively. Prerequisite CSE 131 | |||

CSE | 141 | The Digital Society | 3 |

Our modern Digital Society is both exciting and challenging. As the effectiveness of computing advances, and digital technologies like the Internet and algorithmic decision-making affect and penetrate more and more aspects of our lives, we face extraordinary opportunities and equally extraordinary challenges. Computer driven automation increases our quality of life but eradicates our jobs! The Internet and Smartphones keep us connected but subject us to growing corporate, government and criminal surveillance! In this course, cotaught by professors from the Schools of Engineering and Law, we will examine the fundamental technical underpinnings of Digital Society and its consequences. We will discuss "Welcome to the Future," "The Future of Jobs," and "The Future of Humans." All aspects of life are evolving rapidly in our Digital Society, and we will draw on expert and engaging guest speakers from all seven Schools of Washington University and intellectual leaders from beyond our campus to share their perspectives and insights. This course will help students to perceive the modern world in new ways in order to better understand how technological shifts are changing and challenging notions of individual and collective prosperity. Our goal is to give students both the technical understanding of how our new technologies work and the critical skills to evaluate them for themselves as citizens and leaders of our new Digital Society. Prereqs: none. OPEN ONLY TO FRESHMAN | |||

CSE | 200 | Engineering and Scientific Computing | 3 |

This course provides an introduction to numerical methods for scientific computation which are relevant to engineering problems. Topics addressed include interpolation, integration, linear systems, least-squares fitting, nonlinear equations and optimization and initial value problems. Basic procedural programming concepts (procedural and data abstraction, iteration, recursion) will be covered using MATLAB. C will be briefly covered so the students understand that the algorithms and programming concepts apply in both. Prerequisite: Math 132. | |||

CSE | 222S | Internet of Things | 3 |

For a very long time, the Things in our world have lived relatively lonely and single-purposed lives. With the advent of the Internet of Things, we can address, control, and interconnect these formerly isolated devices to create new and interesting applications. In this course we study Bluetooth Low Energy, one of the fundamental networking technologies behind Internet-of-Things devices, and Appcessories, which include smart watches, health monitors, toys, and appliances. In addition to learning about the Bluetooth Low Energy protocol and network stack, students gain hands-on experience developing multi-platform solutions that control and communicate with Things using an accompanying app on a mobile device. Students apply their knowledge and skill to develop a project of their choosing using topics from the course. Prereq: CSE 132 | |||

CSE | 231S | Introduction to Parallel and Concurrent Programming | 3 |

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. Collaboration skills are developed through work performed in small teams. Prerequisite: CSE 131 or equivalent. | |||

CSE | 232 | Programming Skills Workshop | 1 |

This course provides an overview of practical programming skills with a focus on preparation for major programming competitions such as the International Collegiate Programming Contest and the Google Code Jam. Topics will include fast problem analysis, algorithm design and implementation, testing and debugging, and team programming. Prerequisites: fluency in a modern programming language and knowledge of major algorithms and data structures. | |||

CSE | 240 | Logic and Discrete Mathematics | 3 |

Introduces elements of logic and discrete mathematics that allow reasoning about computational structures and processes. Generally, the areas of discrete structures, proof techniques, and computational models are covered. Topics typically include propositional and predicate logic; sets, relations, functions, and graphs; proof by contradiction, induction, and reduction; and finite state machines and regular languages. Prerequisite: CSE 131 or other introductory programming background. | |||

CSE | 241 | Algorithms and Data Structures | 3 |

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. Other topics covered generally include: divide-and-conquer algorithms, sorting algorithms, decision tree lower bound technique, hashing, binary heaps, skip lists, B-trees, basic graph algorithms. Prerequisites: CSE 131, CSE 240 (or some basic discrete mathematics background) is strongly recommended. | |||

CSE | 245A | Fair Division in Theory and Practice | 3 |

The concept of fair division is a central tenet in the design of procedures aimed at generating equitable social outcomes and mitigating conflict. At the national level, such procedures include systems of apportionment, voting, and legislative districting, to name a few. On a smaller scale, these procedures could govern how assets are divided in a divorce, or how to divide a cake. While "fairness" in theory is indisputably a good thing, in practice the courts, politicians, and even mathematicians have grappled with the question of what it means for a procedure to be fair. This course will examine algorithms and applications of procedures that aim to divide or allocate resources fairly. Some of these procedures were developed by mathematicians looking for formulas that satisfy mathematical properties such as envy-freeness and equitability. All of the procedures we consider will be examined in terms of the fairness goals they aspire to achieve, the mechanisms they employ to achieve those goals, and the shortcomings of the procedures. | |||

CSE | 247 | Data Structures and Algorithms | 3 |

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. Prerequisite: CSE 240 | |||

CSE | 260M | Introduction to Digital Logic and Computer Design | 3 |

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. Prerequisites: CSE 131 | |||

CSE | 316A | Social Network Analysis | 3 |

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. Prerequisites: CSE 241 and basic knowledge of probability and statistics. | |||

CSE | 330S | Rapid Prototype Development and Creative Programming | 3 |

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 web site from scratch in PHP, to run an SQL database, to perform scripting in Python, to employ the Django web framework, 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 a formal presentation of a topic, students develop a related project under the supervision of the instructor. Prerequisite: CSE 131 or an equivalent programming background. | |||

CSE | 332S | Object-Oriented Software Development Laboratory | 3 |

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. Prerequisites: CSE 132 or CSE 241. | |||

CSE | 341T | Parallel and Sequential Algorithms | 3 |

The course aims to teach 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, etc. Prerequisite: CSE 240 and CSE 247. In addition, a placement exam will be given during the first day of the class to ensure that students taking the class have sufficient background. | |||

CSE | 361S | Introduction to Systems Software | 3 |

Introduction to the hardware and software foundations of computer processing systems. Examines the process whereby computer systems manage, interpret, and execute applications. Covers fundamental algorithms for numerical computation, memory organization and access, storage allocation, and the sequencing and control of peripheral devices. Weekly laboratories, exercises, and a final laboratory project. Prerequisites: CSE 131. | |||

CSE | 362M | Computer Architecture | 3 |

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. Prerequisite: CSE 260M. | |||

CSE | 365S | Elements of Computing Systems | 3 |

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. Prerequisite: CSE 131 or equivalent | |||

CSE | 400 | Independent Study | 6 |

Possible topics may be found in the Undergraduate Research Opportunities Program listing, available in the department office and also at http://www.cs.wustl.edu/cs/urop.html on the World Wide Web. Prerequisite: junior standing. | |||

CSE | 400E | Independent Study | 6 |

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 CSE400E can be counted toward a student's major or minor program, with the consent of the student's advisor. See also: CSE400 | |||

CSE | 417A | Introduction to Machine Learning | 3 |

This course is a broad introduction to machine learning, covering supervised learning, unsupervised learning, decision-making under uncertainty, and reinforcement learning. Topics that will be covered include generative and discriminative techniques for classification (likely including regression, Naive Bayes, decision trees, neural networks, nearest-neighbor methods, support vector machines, and boosting), clustering and dimensionality reduction, dynamic programming, and temporal difference methods. Note that there is some overlap with topics in the 500-level courses on Artifificial Intelligence and Machine Learning, but the material covered in this class will be at a more elementary level. Prerequisites: CSE 241 and ESE 326 (or Math 320) or equivalents; Linear algebra and multi-variable calculus | |||

CSE | 417T | Introduction to Machine Learning | 3 |

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). Prerequisites: CSE 247, ESE 326, Math 233, and Math 309 (can be taken concurrently). | |||

CSE | 422S | Operating Systems Organization | 3 |

Exploration of operating systems as managers of shared resources. Students study algorithms and data structures that support essential operating systems services. Concepts are reinforced through programming exercises and comparative studies. Topics include: proportional sharing and real-time scheduling of processes and threads, I/O facilities, memory management, virtual memory, device management, concurrent programming, and file system organization. Prerequisites: CSE 332S and CSE 361S. | |||

CSE | 425S | Programming Systems and Languages | 3 |

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. Prerequisites: CSE 132, CSE 240, and CSE 241. | |||

CSE | 427S | Cloud Computing with Big Data Applications | 3 |

This course provides a comprehensive introduction to applied parallel computing using the MapReduce programming model facilitating large scale data management and processing. There will be an emphasis on hands-on experience working with the Hadoop architecture, an open-source software framework written in Java for distributed storage and processing of very large data sets on computer clusters. Further, we will make use of related big data technologies from the Hadoop ecosystem of tools, such as Hive, Impala, and Pig in developing analytics and solving problems faced by enterprises today. Prerequisite: CSE 241 | |||

CSE | 431S | Translation of Computer Languages | 3 |

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. Prerequisites: CSE 247 | |||

CSE | 436S | Software Engineering Workshop | 3 |

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. Prerequisite: CSE 332S. | |||

CSE | 437S | Software Engineering Workshop | 3 |

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. Prerequisite: Junior or Senior standing | |||

CSE | 438S | Mobile Application Development | 3 |

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 the their own interest. Prerequisites: CSE 247 | |||

CSE | 441T | Advanced Algorithms | 3 |

Provides a broad coverage of fundamental algorithm design techniques with the focus on developing efficient algorithms for solving combinatorial and optimization problems. The topics covered include: greedy algorithms, dynamic programming, linear programming, NP-completeness, approximation algorithms, lower bound techniques, and on-line algorithms. Throughout this course there is an emphasis on correctness proofs and the ability to apply the techniques taught to design efficient algorithms for problems from a wide variety of application areas. Prerequisites: CSE 241. | |||

CSE | 450A | Video Game Programming | 3 |

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 make a full featured video game. Students have the opportunity to work on topics in graphics, artificial intelligence, networking, physics, user interface design, and other topics. Prerequisite: CSE 332S | |||

CSE | 452A | Computer Graphics | 3 |

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. Prerequisite: CSE 332S and basic knowledge in linear algebra. | |||

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. Sequential techniques: synchronous circuits, machine minimization, optimal state assignment, asynchronous circuits, and built-in self-test techniques. Prerequisite: CSE 260M or equivalent. | |||

CSE | 462M | Computer Systems Design | 3 |

Introduction to modern design practices, including the use of FPGA design methodologies. Students use a commercial CAE/CAD system for VHDL-based design and simulation while designing a selected computation system. Prerequisites: CSE 361S and 362M. | |||

CSE | 463M | Digital Integrated Circuit Design and Architecture | 3 |

This is a project oriented course on digital VLSI design. The course material will focus on bottom up design of digital integrated circuits, starting from CMOS transistors, CMOS inverters, combinational circuits and sequential logic designs. Important design aspect of digital integrated circuits such as propagation delay, noise margins and power dissipation will be covered in the class, as well as design challenges in submicron technology will be addressed. The students will design combinational and sequential circuits at various levels of abstraction using state-of-the-art CAD environment provided by Cadence Design Systems. The goal of the class is to design a microprocessor in 0.5 micron technology that can be fabricated by a semiconductor foundry. Prerequisites: CSE260 and ESE 232 | |||

CSE | 465M | Digital Systems Laboratory | 3 |

Procedures for reliable digital design, both combinational and sequential; understanding manufacturers' specifications; use of special test equipment; characteristics of common SSI, MSI, and LSI devices; assembling, testing, and simulating design; construction procedures; maintaining signal integrity. Several single-period laboratory exercises, several design projects, and application of a microprocessor in digital design. One lecture and one laboratory period a week. Prerequisites: CSE 260M and CSE 361S. | |||

CSE | 467S | Embedded Computing Systems | 3 |

Design of computing systems that are embedded in a larger system (e.g., a control system, a cell phone, an MP3 player, etc.). The emphasis is on aspects of the design that are distinct for most embedded systems. Hardware topics include: Harvard architecture, microcontrollers, digital signal processors, power management code compression, I/O. Software topics include: languages, run-time environments, code optimization for performance, power and memory footprint. System-level topics include: real-time operating systems, scheduling, correctness, performance, multiple processor systems. Prerequisites: CSE/EE 362M. | |||

CSE | 473S | Introduction to Computer Networks | 3 |

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. Prerequisite: CSE 132 and 247 | |||

CSE | 483M | Introduction to Electronic Instrumentation Design | 3 |

This course covers the principles underlying the design of electronic instrumentation systems. As a case study we will design and analyze a complete instrumentation amplifier integrated circuit and discuss topics related to signal conditioning, amplification, filtering, biasing, data conversion, interface design, mixed-signal layout and mixed-signal simulation. Students are expected to work with state-of-the-art circuit simulation and layout tools for their homework and project assignments. Prerequisites: CSE 260 and ESE 232. | |||

CSE | 497 | Senior Project I | 3 |

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 exploration and extension of theoretical structures, or may pivot around the design/development of solutions for particular applications drawn from areas throughout the University and/or 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 CS 497-498 must submit a project proposal for approval by the department during the spring semester of the junior year. Prerequisite: senior standing. | |||

CSE | 498 | Senior Project II | 3 |

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 exploration and extension of theoretical structures, or may pivot around the design/development of solutions for particular applications drawn from areas throughout the University and/or community. In either case, the project serves as a focal point for crystallizing the concepts, techniques, and methodologies encountered throughout the curriculum. Prerequisite: senior standing. | |||

CSE | 499 | Undergraduate Honors Thesis | 3 |

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. Prerequisites: a strong academic record and permission of instructor. |