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. An evening exam at which attendance is required will be on Monday, February 23rd from 6:30-8:30 p.m. 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. | |||

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 builds on CSE 131's introduction to software systems as collections of communicating components. CSE 132 emphasizes more sophisticated uses of object-oriented concepts (inheritance, polymorphism, method overloading, and multiple inheritance of interfaces) and techniques for managing communication among software components. An introduction to packages, file I/O, parsing, graphical user interfaces, exception handling, threads, concurrency, synchronization, and network programming is provided. Algorithms and data structures are presented as needed to support discussion of these topics. Concepts and skills are mastered through software projects, many of which employ graphics to enhance conceptual understanding. Java, an object-oriented programming language, is the vehicle of exploration. Prerequisite: CSE 131or equivalent. An evening exam at which attendance is required will be given on Wednesday, February 25th from 6:30-8:30 p.m. | |||

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 | 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 or comparable programming experience. | |||

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 and sequential 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. The course does have a significant programming component using Cilk Plus, a parallel programming language. This is the first offering of this experimental course with limited class size. Prerequisite: CSE240. CSE241 is recommended, but the course can be taken without it with instructor permission. | |||

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 |

Study of interaction and design philosophy of hardware and software for digital computer systems. Machine organization, data structures, I/O considerations. Comparison of microcomputer 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 | 422S | Operating Systems Organization | 3 |

Exploration of operating systems as managers of shared local and remote resources. Using UNIX and Windows XP as experimental frameworks, students study algorithms and data structures that support essential operating systems services. Concepts are reinforced through programming exercises and comparative studies. Topics include: process and thread scheduling, memory management, virtual memory, device management, shared memory, concurrency, file system organization, and distributed object computing. 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 | 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. Summer session dates are 6/11/12-8/3/12. | |||

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 240/CS 201 and 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 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 protocol layers, application layer protocols, HTTP, FTP, SMTP, domain name system (DNS), peer to peer (P2P) networking, transport layer design issues, universal datagram protocol (UDP), transmission control protocol (TCP), TCP congestion control, network layer, IP4, ICMP, IPV6, Ethernet, routing algorithms, internet routing protocols: OSPF, RIP, BGP, link layer, error correction, VLANS, PPP, MPLS, wireless and mobile networks, WiFi 802.11, Bluetooth, WiMAX, cellular wireless networks, mobile IP, cellular mobility, security in computer networks, IPSec, network management, and multimedia networking. Prerequisite: CSE 241. | |||

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. |