CSE 311 (QSR checked) Foundations of Computing I FOUNDATIONS COMP I Fundamentals of logic, set theory, induction, and algebraic structures with applications to computing. Finite state machines. Limits of computability. Prerequisite: CSE 143; either MATH 126 or MATH 136 CSE 312 (QSR checked) Foundations of Computing II FOUNDATIONS COMP II Fundamentals of enumeration and discrete probability. Applications of randomness to computing. Polynomial-time versus NP; NP-completeness. Prerequisite: CSE 311; Prerequisite or Corequisite: CSE 332 CSE 331 Software Design & Implementation SW DESIGN & IMPL Concepts and techniques for design and construction of reliable and maintainable software systems in modern high-level languages. Program structure and design. Program-correctness approaches, including testing. Event-driven programming (e.g., graphical user interfaces). Substantial project and software-team experience. Prerequisite: CSE 143 CSE 332 Programming Abstractions PROG ABSTRACTIONS Abstract data types and structures including dictionaries, balanced trees, hash tables, priority queues, graphs. Sorting. Asymptotic analysis. Fundamental graph algorithms including graph search, shortest paths, minimum spanning trees. Concurrency and synchronization; parallelism. Not available for credit for students who have completed CSE373. Prerequisite: CSE 311 or CSE 321 CSE 333 Systems Programming SYSTEMS PROGRAMMING Substantial programming experience in languages that expose machine characteristics and low-level data representation (e.g., C and C++). Explicit memory management. Interacting with operating-system services. Cache-aware programming. Prerequisite: CSE 351; Prerequisite or Corequisite: CSE 326 or CSE 332 CSE 344 Introduction to Data Management INTRO DATA MGMT Introduction to database management systems and writing applications that use such systems: data models (e.g., relational, semi-structured), query languages (e.g., SQL, XQuery), language bindings, conceptual modeling, transactions, security, database tuning, data warehousing, parallelism, Web-data management. Prerequisite: CSE 143 CSE 351 The Hardware-Software Interface HW SW INTERFACE Key computational abstraction levels below modern high-level programming languages: data representation, assembly language, introduction to C, memory management, the operating-system process model, high-level machine architecture including memory hierarchy, how high-level languages are implemented. Prerequisite: CSE 143 CSE352 Hardware Design & Implementation HW DESIGN & IMPL Digital circuit design, processor design, systems integration and embedded-systems issues. Includes substantial hardware laboratory. Prerequisite: CSE351; CSE311 or CSE 322