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. This particular offering of 132 will be "lecture-free" as has been the case with CSE 131. In place of lecture, students will watch video segments and complete exercises to prepare for the lab and studio meetings. Those videos and exercises can be done at the students' convenience, except that the work each week must be completed prior to the relevant lab or studio. 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 | 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. Students learn to use hardware description languages and computer-aided design tools (simulation, circuit synthesis) and apply them to the design of a variety of digital circuits. Coverage includes both combinational and sequential circuits, ranging in complexity from basic arithmetic circuits to a simple processor. Students learn about the underlying causes of circuit delays and timing issues in sequential circuits (setup and hold times, minimum clock period analysis, metastability). They also study how logic minimization is done, learn to make basic design trade-offs (complexity vs. performance), and how look ahead techniques can be used to speed circuit operation. Coverage also includes the operation of a programmable processor, common methods for enhancing processor performance and the design of memory systems. 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 AngularJS 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 | |||

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 132/CS 102G, CSE 240/CS 201, and CSE 241. | |||

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. Input, representation, manipulation, and display of geometric information. Two-dimensional display of three-dimensional objects: perspective, hidden surface, shading, animation. Display and input devices. Issues in designing interactive graphics systems. Issues in building three-dimensional renderers. Students develop interactive graphics programs with a standard graphics package and using various graphics input and output devices. 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 focuses 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 are covered in the class, as well as design challenges in sub-micron technology are addressed. The students 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 will be fabricated by a semiconductor foundry. Prerequisites: CSE 260 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. |