Undergraduate Bulletin

Fall 2024

CSE: Computer Science

CSE 101: Computer Science Principles

Introduces central ideas of computing and computer science, instills practices of algorithmic and computational thinking, and engages students in the creative aspects of the field. Also introduces appropriate computing technology as a means for solving computational problems and exploring creative endeavors. Includes weekly computer programming assignments, but assumes no previous programming experience. May not be taken by students with credit for CSE 114 or CSE 160.

Prerequisite: Level 3 or higher on the mathematics placement examination

Anti-requisite: May not be taken by students with credit for CSE 114 or CSE 160

SBC:     TECH

4 credits

CSE 102: Introduction to Web Design and Programming

An introduction to the design of Web pages, specifically the development of browser and device independent HTML, with an emphasis on the XHTML standards. Includes the use of style sheets (CSS) and tools for page layout and verification. HTML is presented as a mark-up language, exploring the rules of HTML elements and attributes. Students learn the separation of page viewing information from the HTML through CSS style sheets as well as the use of block layout without using HTML tables. Addresses HTML display properties including text, color, image, and graphic elements as well as approaches to HTML validation and techniques.

Advisory Prerequisite: CSE 101 or basic computer skills

SBC:     TECH

3 credits

CSE 110: Introduction to Computer Science

An introduction to fundamentals of computer science. Topics covered include algorithmic design, problem-solving techniques for computer programming, fundamentals of digital logic and computer organization, the role of the operating system, introductory programming methodology including variables, assignment statements, control statements and subroutines (methods), programming paradigms, the compilation process, theoretical limits of computation, social and ethical issues. Intended for students who have not taken any college-level computer science course containing programming assignments in a high-level programming language.

Prerequisite: Level 3 or higher on the mathematics placement examination

SBC:     TECH

3 credits

CSE 113: Foundations of Computer Science I

Introduction to the mathematical foundations of computer science. Topics include logic (propositional and predicate); proof techniques (induction/recursion, contradiction, and others); and key concepts of mathematical structures (sequences, sets, functions, relations, and graphs). Not for credit in addition to CSE 215.

Prerequisite: AMS 151 or MAT 125 or MAT 131 or level 6 on the mathematics placement examination

4 credits

CSE 114: Introduction to Object-Oriented Programming

An introduction to procedural and object-oriented programming methodology. Topics include program structure, conditional and iterative programming, procedures, arrays and records, object classes, encapsulation, information hiding, inheritance, polymorphism, file I/O, and exceptions. Includes required laboratory. This course has been designated as a High Demand/Controlled Access (HD/CA) course. Students registering for HD/CA courses for the first time will have priority to do so.

Prerequisite: Level 5 or higher on the math placement exam

Advisory Prerequisite: CSE 101 or ISE 108

SBC:     TECH

4 credits

CSE 130: Introduction to Programming in C

Introduces programming concepts using the C language. Variables, data types, and expressions. Conditional and iterative statements, functions, and structures. Pointers, arrays, and strings. Scope of variables and program organization. Includes programming projects of an interdisciplinary nature. Suitable as an introductory programming course for non-CSE majors.

Prerequisite: Level 3 or higher on the mathematics placement examination

3 credits

CSE 150: Foundations of Computer Science: Honors

Introduction to the logical and mathematical foundations of computer science for computer science honors students. Topics include functions, relations, and sets; recursion and functional programming; basic logic; and mathematical induction and other proof techniques.

Prerequisite: one MAT course that satisfies D.E.C. C or QPS or score of level 4 on the math placement exam; admission to Honors in Computer Science or the Honors College or the WISE Honors Program or University Scholars or Simons STEM Scholars Program.

4 credits

CSE 160: Computer Science A: Honors

First part of a two-semester sequence, CSE 160 and CSE 260. An introduction to procedural and object-oriented programming methodology and basic data structures. Topics include program structure, conditional and iterative programming, procedures, arrays, object classes, encapsulation, information hiding, inheritance, polymorphism, file I/O, exceptions and simple data structures, such as lists, queues and stacks.

Prerequisite: Honors in Computer Science or the Honors College or the WISE Honors Program or University Scholars or the Simons STEM Scholars Program.

Advisory Prerequisite: CSE 101  Corequisite: CSE 161

SBC:     TECH

3 credits

CSE 161: Laboratory for Computer Science A: Honors

Must be taken concurrently with lecture component, CSE 160; a common grade for both courses will be assigned. Laboratory sessions will focus on development of pragmatic programming skills and use of programming environments and tools in a supervised setting.

Corequisite: CSE 160

1 credit

CSE 190: Special Topics in Practice and Applications of Computer Science

A lecture course on a current topic in the practice and application of computer science. May be repeated as the topic changes.

SBC:     TECH

3 credits

CSE 191: Special Topics in Practice and Applications for Computer Science

A lecture course on a current topic in the practice and application of computer science. May be repeated as the topic changes.

SBC:     TECH

3 credits

CSE 192: Special Topics in Practice and Applications for Computer Science

A lecture course on a current topic in the practice and application of computer science. May be repeated as the topic changes.

SBC:     TECH

3 credits

CSE 214: Data Structures

An extension of programming methodology to data storage and manipulation on complex data sets. Topics include: programming and applications of data structures; stacks, queues, lists, binary trees, heaps, priority queues, balanced trees and graphs. Recursive programming is heavily utilized. Fundamental sorting and searching algorithms are examined along with informal efficiency comparisons.

Prerequisite: C or higher in CSE 114

4 credits

CSE 215: Foundations of Computer Science

Introduction to the logical and mathematical foundations of computer science. Topics include functions, relations, and sets; recursion; elementary logic; and mathematical induction and other proof techniques. Not for credit in addition to CSE 113.

Prerequisite: AMS 151 or MAT 125 or MAT 131

4 credits

CSE 216: Programming Abstractions

Intermediate-level programming concepts and paradigms, including functional programming, object-orientation, basics of type systems, memory management, program and data abstractions, parameter passing, modularity, and parallel programming. Includes weekly recitations, which provide students with experience in the practice of programming in a variety of high-level languages.

Prerequisites: C or higher in CSE 214; CSE major

4 credits

CSE 220: Systems Fundamentals I

Introduces systems-level programming concepts using the C language and assembly language, and explores the correspondence of programming constructs in these languages. Topics include internal data representation, basic instructions and control structures, bitwise operations, arithmetic operations, memory management, pointers, function calls and parameter passing, linking and loading. Included is an overview of foundational topics in computer architecture, organization and networks.

Prerequisites: C or higher in CSE 214 or co-requisite CSE 260 and CSE major

4 credits

CSE 230: Intermediate Programming in C and C++

Intermediate programming concepts using the C language in a UNIX environment. Files, systems calls, stream I/O, the C preprocessor, bitwise operations, the use of makefiles, advanced formatting of input and output, conversions. Introduction to object-oriented programming using C++; classes, objects, inheritance, aggregation, and overloading. Suitable for all majors.

Prerequisite: CSE 130 or CSE 220 or ESE 124 or ESG 111 or BME 120 or MEC 102

3 credits

CSE 260: Computer Science B: Honors

Second part of a two-semester sequence, CSE 160 and CSE 260. Applies object-oriented programming methodology to data storage and manipulation on complex data sets, such as, binary trees, heaps, priority queues, balanced trees and graphs. Recursive programming is heavily utilized. Fundamental sorting and searching algorithms are examined along with informal efficiency comparisons. Intermediate-level programming language concepts and paradigms, including functional programming, basics of type systems, program and data abstractions, and modularity.

Prerequisite: CSE 160

Corequisite: CSE 261

3 credits

CSE 261: Laboratory for Computer Science B: Honors

Must be taken concurrently with lecture component, CSE 260; a common grade for both courses will be assigned. Weekly laboratories provide students with experience in the practice of programming in a variety of high-level languages such as Java, Scala, Haskell, Python or Javascript.

Corequisite: CSE 260

1 credit

CSE 300: Technical Communications

Principles of professional technical communications for Computer Science and Information Systems majors. Topics include writing business communications, user manuals, press releases, literature reviews, and research abstracts. Persuasive oral communications and effective presentation techniques, to address a range of audiences, will also be covered. This course satisfies the upper-division writing requirement for CSE and ISE majors.

Prerequisites: WRT 102; CSE or ISE or DAS major; U3 or U4 standing

SBC:     SPK, WRTD

3 credits

CSE 301: History of Computing

A study of the history of computational devices from the early ages through the end of the 20th century. Topics include needs for computation in ancient times, development of computational models and devices through the 1800's and early 1900's, World War II and the development of the first modern computer, and early uses in business. Creation of programming languages and the microchip. Societal changes in computer usage due to the microcomputer, emergence of the Internet, the World Wide Web, and mobile computing. Legal and social impacts of modern computing. Cannot be used as a technical elective for the CSE major or minor. This course is offered as both CSE 301 and ISE 301.

Prerequisite: U2 standing or higher

Advisory Prerequisite: one course in computing

DEC:     H
SBC:     STAS

3 credits

CSE 303: Introduction to the Theory of Computation

An introduction to the abstract notions encountered in machine computation. Topics include finite automata, regular expressions, and formal languages, with emphasis on regular and context-free grammars. Questions relating to what can and cannot be done by machines are covered by considering various models of computation, including Turing machines, recursive functions, and universal machines. Not for credit in addition to CSE 350.

Prerequisites: C or higher: CSE 160 or CSE 214; CSE 150 or CSE 215; CSE major

3 credits

CSE 304: Compiler Design

Topics studied include formal description of programming languages, lexical analysis, syntax analysis, symbol tables and memory allocation, code generation, and interpreters. Students undertake a semester project that includes the design and implementation of a compiler for a language chosen by the instructor.

Prerequisites: C or higher: CSE 216 or CSE 260; CSE 220

Advisory Prerequisites: CSE 303 or CSE 350

3 credits

CSE 305: Principles of Database Systems

The design of database management systems to obtain consistency, integrity, and availability of data. Conceptual models and schemas of data: relational, hierarchical, and network. Students undertake a semester project that includes the design and implementation of a database system.

Prerequisites: C or higher: CSE 214, CSE 216 or CSE 260; CSE or DAS major

Partially fulfills: ESI, EXP+, SBS+, STEM+

3 credits

CSE 306: Operating Systems

Students are introduced to the structure of modern operating systems. Topics include virtual memory, resource allocation strategies, concurrency, and protection. The design and implementation of a simple operating system are performed. This course focuses on teaching the skills required to design and build modules of an operating system kernel. It covers key algorithms and architectures. A companion course, CSE 320, teaches complementary skills from the application programmer's point of view.

Prerequisites: C or higher: CSE 320 or ESE 280; CSE Major or ECE major.

Partially fulfills: ESI, EXP+, SBS+, STEM+

3 credits

CSE 307: Principles of Programming Languages

An introduction to programming languages paradigms, including functional and logic programming, and the suitability of various languages for particular programming tasks. Students write sample programs in the studied languages. The languages are used to illustrate programming language constructs such as scoping and binding, type systems, storage management and operating environments. This illustration is accompanied by an introduction to the implementation of programming languages, such as parsing, semantic analysis, symbol tables, memory allocation and code generation. Students complete a series of assignments to implement a language chosen by the instructor.

Prerequisites: C or higher: CSE 214, CSE 216 or CSE 260; CSE or DAS major.

3 credits

CSE 310: Computer Networks

Overview of computer networks and the Internet. Concept of end systems, access networks, clients and servers. Connection-oriented and connectionless services. Circuit switching and packet switching. Description of Internet protocol layers, including application layer, transport layer, network layer and link layer. Architecture of the current Internet and the World-Wide Web. TCP/IP protocol stack. Internet routing and addressing. Local area network protocols, Ethernet hubs and switches. Wireless LANs. Multimedia networking. May not be taken by students with credit for ESE 346.

Prerequisites: C or higher: CSE 214 or 260; CSE 220 or ISE 218; CSE major or ISE major.

Advisory Pre- or Corequisite: AMS 310

3 credits

CSE 311: Systems Administration

This course covers practical techniques to manage information systems, also known as IT Systems Administration. Students will learn how to install computers for assorted hardware and software platforms (Windows, Unix/Linux, OS-X). Install networking equipment and configure it. Install server software on several systems (e.g. web, database, mail) and configure it. Secure the network, hosts, and services, and apply system patches. Set up redundant computing services, virtual machines/services, and hardware so that services can survive some hardware/software failures. Evaluate the performance, reliability, and security of the overall system. This course is offered as both CSE 311 and ISE 311.

Prerequisites: CSE 214 or CSE 230 or CSE 260 or ISE 208; ISE or CSE major

3 credits

CSE 312: Social, Legal, and Ethical Issues in Computing

This course deals with the impact of computers on us as individuals and on our society. Rapid changes in computing technology and in our use of that technology have changed the ways we work, play, and interact with other people. These changes have created a flood of new social, legal and ethical issues that demand critical examination. This course is offered as both CSE 312 and ISE 312.

Prerequisites: CSE, ISE or DAS major; U3 or U4 standing; one D.E.C. E or SNW course

SBC:     CER, ESI, STAS

3 credits

CSE 316: Fundamentals of Software Development

Introduction to systematic design, development and testing of software systems, including event-driven programming, information management, databases, principles and practices for secure computing, and version control. Students apply these skills in the construction of large, robust programs.

Prerequisites: C or higher in CSE 214 or CSE 260; CSE 216 or CSE 307; CSE major

Partially fulfills: ESI, EXP+, SBS+, STEM+

3 credits

CSE 320: Systems Fundamentals II

This course introduces essential concepts of operating systems, compilers, concurrency, and performance analysis, focused around several cross-cutting examples, such as memory management, error handling, and threaded programming. In this course, operating systems concepts are considered from the point of view of the application programmer, and the focus is on APIs for interacting with an operating system. A companion course, CSE 306, considers operating systems from the point of view of the OS kernel implementer.

Prerequisite: C or higher: CSE 220 and CSE major.

3 credits

CSE 323: Human-Computer Interaction

A survey course designed to introduce students to Human-Computer Interaction and prepare them for further study in the specialized topics of their choice. Students will have the opportunity to delve deeper in the course through a course project, and through a two-three week special topic selected at the instructor's discretion. Course is cross-listed as CSE 323, EST 323 and ISE 323.

Prerequisites: CSE 214 or CSE 230 or CSE 260 or ISE 208

3 credits

CSE 325: Computers and Sculpture

This multidisciplinary class surveys how computer science and computer technology are used in sculpture. Case studies with slides, videos, and software demonstrations illustrate a range of approaches of sculptors incorporating computers in their creative process. Various state-of-the art fabrication technologies are studied (with site visits if available on campus). Mathematical foundations are emphasized so students can recognize them when analyzing sculpture and choose the right tool when designing. In the weekly laboratory, these ideas are reinforced with projects using a range of available software and inexpensive construction materials, e.g., paper, cardboard, and foamcore.

Prerequisite: CSE 110 or CSE 101 or CSE 114

3 credits

CSE 327: Fundamentals of Computer Vision

Introduces fundamental concepts, algorithms, and techniques in visual information processing. Covers image formation, binary image processing, image features, model fitting, optics, illumination, texture, motion, segmentation, and object recognition.

Prerequisites: CSE 214 or CSE 230 or CSE 260; AMS 210 or MAT 211; CSE or ISE or DAS major

3 credits

CSE 328: Fundamentals of Computer Graphics

An introduction to computer graphics including graphics application programming; data structures for graphics; representing and specifying color; fundamental hardware and software concepts for calligraphic and raster displays; two-dimensional, geometric transformations; introduction to three-dimensional graphics; graphics standards; and input devices, interaction handling, and user-computer interface.

Prerequisites: C or higher: CSE 220; CSE or DAS major

3 credits

CSE 331: Computer Security Fundamentals

Introduces the basic concepts and terminology of computer security. Covers basic security topics such as cryptography, operating systems security, network security, and language-based security.

Prerequisite: CSE 220; CSE major

Advisory pre-or corequisite: CSE 320

3 credits

CSE 332: Introduction to Visualization

This course is an introduction to both the foundations and applications of visualization and visual analytics, for the purpose of understanding complex data in science, medicine, business, finance, and many others. It will begin with the basics - visual perception, cognition, human-computer interaction, the sense-making process, data mining, computer graphics, and information visualization. It will then move to discuss how these elementary techniques are coupled into an effective visual analytics pipeline that allows humans to interactively think with data and gain insight. Students will get hands-on experience via several programming projects, using popular public-domain statistics and visualization libraries and APIs. This course is offered as both CSE 332 and ISE 332.

Prerequisites: CSE 214 or CSE 260; MAT 211 or AMS 210; AMS 110 or AMS 310; CSE or ISE or DAS major

3 credits

CSE 333: User Interface Development

Survey of user interface systems, with emphasis on responsive and adaptive strategies to accommodate cross-platform deployment across multiple devices such as desktops and mobile devices. Demonstration of the use of tool kits for designing user interfaces. Additional topics include human factors, design standards, and visual languages. Students participate in a project involving the design and implementation of user interface systems. This course is offered as both CSE 333 and ISE 333.

Prerequisite: CSE 214 or CSE 260; CSE or ISE major

3 credits

CSE 334: Introduction to Multimedia Systems

Survey of technologies available for user interfaces. Discussion of hypertext; voice, music, and video together with tools and models for capturing, editing, presenting, and combining them. Capabilities and characteristics of a range of peripheral devices including devices based on posture, gesture, head movement, and touch. Case studies of academic and commercial multimedia systems including virtual reality systems. Students participate in laboratory exercises and build a multimedia project. This course is offered as both CSE 334 and ISE 334.

Prerequisite: U2, U3 or U4 standing; CSE or ISE major

3 credits

CSE 336: Internet Programming

Introduces the design and development of software for Internet commerce. Topics include extended markup language, servlets, cookies, sessions, Internet media types, Web protocols, digital signatures, certificates, encryption, and the wireless Internet.

Prerequisites: C or higher in CSE 214 or CSE 260; CSE major

3 credits

CSE 337: Scripting Languages

Scripting languages are widely used in the IT industry. Programming with scripting languages, also known as scripting, has several advantages compared to programming with other types of languages in that scripts facilitate rapid program development; can automate high-level jobs or tasks very effectively; and can be used to compose various software components, even binaries, into more complex and powerful applications. This course introduces the principles of scripting, covers one or two selected scripting languages in depth, and illustrates the advanced use of scripting by extensive case studies in application areas such as system administration, web application development, graphical user interface development, and text processing.

Prerequisites: CSE 214 or CSE 260; CSE or ISE or DAS major; U3 or U4 standing

3 credits

CSE 350: Theory of Computation: Honors

Introduces the abstract notions of machine computation for honors students. Includes finite automata, regular expressions, and formal languages, with emphasis on regular and context-free grammars. Explores what can and cannot be computed by considering various models of computation including Turing machines, recursive functions, and universal machines. Not for credit in addition to CSE 303.

Prerequisites: CSE 113 or CSE 150 or CSE 215; AMS 210 or MAT 211; Honors in Computer Science or the Honors College or the WISE Honors Program or University Scholars or the Simons STEM Scholars Program.

4 credits

CSE 351: Introduction to Data Science

This multidisciplinary course introduces both theoretical concepts and practical approaches to extract knowledge from data. Topics include linear algebra, probability, statistics, machine learning, and programming. Using large data sets collected from real-world problems in areas of science, technology, and medicine, we introduce how to preprocess data, identify the best model that describes the data, make predictions, evaluate the results, and finally report the results using proper visualization methods. This course also teaches state-of-the art tools for data analysis, such as Python and its scientific libraries.

Prerequisites: CSE 214 or CSE 260; AMS 310; CSE or DAS major

3 credits

CSE 352: Artificial Intelligence

Topics covered include critique of artificial intelligence research; state-space problem representations and search algorithms; game-playing programs; theorem-proving programs; programs for the study and simulation of cognitive processes and pattern recognition. Further topics in current research as time permits.

Prerequisites: CSE 316 or CSE 351; CSE or DAS major

3 credits

CSE 353: Machine Learning

Covers fundamental concepts for intelligent systems that autonomously learn to perform a task and improve with experience, including problem formulations (e.g., selecting input features and outputs) and learning frameworks (e.g., supervised vs. unsupervised), standard models, methods, computational tools, algorithms and modern techniques, as well as methodologies to evaluate learning ability and to automatically select optimal models. Applications to areas such as computer vision (e.g., character and digit recognition), natural-language processing (e.g., spam filtering) and robotics (e.g., navigating complex environments) will motivate the coursework and material.

Prerequisites: CSE 316 or CSE 351; CSE or DAS major

Pre- or Co-requisite: AMS 310 or AMS 311 or AMS 412

3 credits

CSE 354: Natural Language Processing

Natural language processing techniques power many intelligent language based applications. This course will introduce basic language analysis tasks such as language modeling and syntactic analysis, as well as core applications such as text classification, information extraction, question answering, and machine translation. The course will cover relevant algorithms, machine learning solutions, and evaluation methodologies.

Prerequisites: CSE 316 or CSE 351; CSE or DAS major

3 credits

CSE 355: Computational Geometry

The design and analysis of efficient algorithms to solve geometric problems that arise in computer graphics, robotics, geographical information systems, manufacturing, and optimization. Topics include convex hulls, triangulation, Voronoi diagrams, visibility, intersection, robot motion planning, and arrangements. This course is offered as both AMS 345 and CSE 355.

Prerequisites: AMS 301; programming knowledge of C or C++ or Java

3 credits

CSE 356: Cloud Computing

Creating online services capable of handling millions of users requires a different mindset compared to traditional software development and deployment. Rather than building monolithic software packages from the ground up, bringing up modern online services calls for architecting systems by gluing together mature existing technologies deployed across many unreliable servers, working in concert to provide high-availability robust services. In this course, students will be exposed to the concepts and technologies behind deploying and scaling online services on the computing resources available in modern datacenters.

Prerequisites: C or higher: CSE 316; CSE 320; CSE major

3 credits

CSE 357: Statistical Methods for Data Science

This interdisciplinary course introduces the mathematical concepts required to interpret results and subsequently draw conclusions from data in an applied manner. The course presents different techniques for applied statistical inference and data analysis, including their implementation in Python, such as parameter and distribution estimators, hypothesis testing, Bayesian inference, and likelihood.

Prerequisite: C or higher in CSE 316 or CSE 351; AMS 310; CSE or DAS major

3 credits

CSE 360: Software Security

This course will describe the principles and practice of securing software systems. Topics will include: software vulnerabilities; static and dynamic analysis techniques for vulnerability detection; exploit detection and prevention; secure software development techniques and defensive programming; malware detection and analysis; security policies and sandboxing; information flow.

Prerequisites: CSE 220; CSE major

Advisory Pre-or corequisite: CSE 320

3 credits

CSE 361: Web Security

This course will cover all aspects of web security, including browser security, web server security, and web application security. Topics include: SOP and JavaScript; application and protocol vulnerabilities; probing, surveillance, and tracking; penetration testing; modern social engineering techniques; monetary incentives and monetization.

Prerequisites: CSE 220; CSE major

Advisory Pre-or corequisite: CSE 320

3 credits

CSE 362: Mobile Security

The course covers the latest security technologies for mobile platforms (e.g., Android and iOS). It first introduces the security issues plaguing mobile apps and discusses defensive mechanisms, such as code signing, app permissions, and sandbox. It then peeks into mobile OS, explaining how jailbreaking/rooting works and the internals of iOS/Android security designs. Finally, it surveys modern hardware-level security features, such as secure booting, TrustZone, and biometrics.

Prerequisites: CSE 220; CSE major

Advisory Pre-or corequisite: CSE 320

3 credits

CSE 363: Offensive Security

Hands-on course with the goal of understanding various security problems in depth, through a more adversarial way of thinking. By focusing on finding and exploiting vulnerabilities, the course will cover a broad range of topics, including the ethics of offensive security, reverse engineering, software vulnerability discovery and exploitation, malicious code analysis, network traffic interception and manipulation, reconnaissance and information gathering, physical security, and social engineering. All topics will be covered from a highly practical perspective, following a hands-on approach and tutorial-like sessions, along with programming assignments.

Prerequisites: CSE 220; CSE major

Advisory Pre-or corequisite: CSE 320

3 credits

CSE 364: Advanced Multimedia Techniques

Digital media production techniques for high-bandwidth applications such as electronic magazine illustration, broadcast television, and motion picture special effects. Students explore techniques such as 3D modeling and character animation, video compositing, and high-resolution image processing in a state-of-the art multimedia computing laboratory. High-capacity mutlimedia storage, high-speed networks, and new technologies such as DVD, HDTV, and broadband will be reviewed. This course is offered as both CSE 364 and ISE 364.

Prerequisites: CSE/ISE 334

3 credits

CSE 366: Introduction to Virtual Reality

An introduction to the practical issues in the design and implementation of virtual environments. Topics covered include the fundamentals of systems requirements, transformations, user-interaction models, human vision models, tracking systems, input/output devices and techniques, and augmented reality. The topics covered are explained through the use of real-life applications of virtual-reality systems in engineering, science, and medicine.

Prerequisites: CSE 214 or CSE 260; MAT 211 or AMS 210; CSE or ISE major

3 credits

CSE 370: Wireless and Mobile Networking

The fundamentals of wireless communication. Link, network and transcript layer protocols for wireless and mobile networking. Cellular networks. Wireless LANs. Wireless multihop networks. Mobile applications.

Prerequisite: CSE 310; CSE major

3 credits

CSE 371: Logic

A survey of the logical foundations of mathematics: development of propositional calculus and quantification theory, the notions of a proof and of a model, the completeness theorem, Goedel's incompleteness theorem. This course is offered as both CSE 371 and MAT 371.

Prerequisite: CSE 113 or CSE 150 or CSE 215 or MAT 200 or MAT 250

3 credits

CSE 373: Analysis of Algorithms

Mathematical analysis of a variety of computer algorithms including searching, sorting, matrix multiplication, fast Fourier transform, and graph algorithms. Time and space complexity. Upper-bound, lower- bound, and average-case analysis. Introduction to NP completeness. Some machine computation is required for the implementation and comparison of algorithms. This course is offered as CSE 373 and MAT 373. Not for credit in addition to CSE 385.

Prerequisites: C or higher in: CSE 113 or CSE 150 or CSE 215 or MAT 200 or MAT 250; MAT 211 or AMS 210; CSE 214 or CSE 260; CSE or MAT or DAS major

3 credits

CSE 376: Advanced Systems Programming in UNIX/C

Focuses on several aspects of producing commercial-grade system software: reliability, portability, security, and survivability. Uses Unix and C, heavily used in industry when developing systems and embedded systems code. Emphasizes techniques and tools to produce reliable, secure, and highly portable code. Requires substantial programming as well as a course project.

Prerequisites: C or higher: CSE 320; CSE major

3 credits

CSE 377: Introduction to Medical Imaging

An introduction to the mathematical, physical, and computational principles underlying modern medical imaging systems. Covers fundamentals of X-ray computer tomography, ultrasonic imaging, nuclear imaging, and magnetic resonance imaging (MRI), as well as more general concepts required for these, such as linear systems theory and the Fourier transform. Popular techniques for the visualization, segmentation, and analysis of medical image data are discussed, as well as applications of medical imaging, such as image-guided intervention. The course is appropriate for computer science, biomedical engineering, and electrical engineering majors.

Prerequisites: AMS 161 or MAT 127 or 132; AMS 210 or MAT 211

3 credits

CSE 378: Introduction to Robotics

Introduces basic concepts in robotics including coordinate transformation, kinematics, dynamics, Laplace transforms, equations of motion, feedback and feedforward control, and trajectory planning. Covers simple and complex sensors (such as cameras), hybrid and behavior based control and path planning. Concepts are illustrated through laboratories using the LEGO Robot Kit.

Prerequisites: AMS 161 or MAT 127 or 132; AMS 210 or MAT 211 or MEC 262

3 credits

CSE 380: 2D Game Programming

An introduction to the fundamental concepts of computer game programming. Students design and develop original games for PCs applying proven game design and software engineering principles.

Prerequisite: CSE 220; CSE major

3 credits

CSE 381: 3D Game Programming

This course explores the concepts and technologies behind making 3D, networked games. This will include the examination of game engine creation as well as the use of middleware to build graphically sophisticated game systems.

Prerequisite: CSE 220; CSE major

3 credits

CSE 385: Analysis of Algorithms: Honors

Algorithmic design and analysis for Computer Science Honors students. Mathematical analysis of a variety of computer algorithms including searching, sorting, matrix multiplication, fast Fourier transform, and graph algorithms. Time and space complexity. Upper-bound, lower-bound, and average-case analysis. Randomization. Introduction to NP completeness. Some machine computation is required for the implementation and comparison of algorithms. Not for credit in addition to CSE/MAT 373.

Prerequisites: CSE 113 or CSE 150 or CSE 215 or MAT 200 or MAT 250; AMS 210 or MAT 211; CSE 214 or CSE 260; Honors in Computer Science or the Honors College or the WISE Honors Program or University Scholars or Simons STEM Scholars.

4 credits

CSE 390: Special Topics in Computer Science

A lecture or seminar course on a current topic in computer science. May be repeated as the topic changes, but cannot be used more than twice to satisfy CSE major requirements.

Prerequisite: CSE 214 or CSE 260; CSE or ISE Major

3 credits

CSE 391: Special Topics in Computer Science

A lecture or seminar course on a current topic in computer science. May be repeated as the topic changes, but cannot be used more than twice to satisfy CSE major requirements.

Prerequisite: CSE 214 or CSE 260; CSE or ISE Major

3 credits

CSE 392: Special Topics in Computer Science

A lecture or seminar course on a current topic in computer science. May be repeated as the topic changes, but cannot be used more than twice to satisfy CSE major requirements.

Prerequisite: CSE 214 or CSE 260; CSE or ISE Major

3 credits

CSE 393: Special Topics in Computer Science

A lecture or seminar course on a current topic in computer science. May be repeated as the topic changes, but cannot be used more than twice to satisfy CSE major requirements.

Prerequisite: CSE 214 or CSE 260; CSE or ISE Major

3 credits

CSE 394: Special Topics in Computer Science

A lecture or seminar course on a current topic in computer science. May be repeated as the topic changes, but cannot be used more than twice to satisfy CSE major requirements.

Prerequisite: CSE 214 or CSE 260; CSE or ISE Major

3 credits

CSE 416: Software Engineering

Introduces the basic concepts and modern tools and techniques of software engineering. Emphasizes the development of reliable and maintainable software via system requirements and specifications, software design methodologies including object-oriented design, implementation, integration, and testing; software project management; life-cycle documentation; software maintenance; and consideration of human factor issues.

Prerequisites: C or higher in CSE 316; U4 standing; CSE major.

Partially fulfills: ESI, EXP+, SBS+, STEM+

3 credits

CSE 475: Undergraduate Teaching Practicum

Students assist faculty in teaching by conducting a recitation or laboratory section that supplements a lecture course. The student receives regularly scheduled supervision from the faculty instructor. May be used as an open elective only and repeated once.

Prerequisites: U3 or U4 standing as an undergraduate CEAS major; a minimum g.p.a. of 3.00 in all Stony Brook courses; grade of B or better in the course in which the student is to assist and permission of department.

SBC:     EXP+

3 credits

CSE 487: Research in Computer Science

An independent research project with faculty supervision. Only three credits of research electives (AMS 487, CSE 487, BME 499, ESE 499, ESM 499, ISE 487, and MEC 499) may be counted toward technical elective requirements. May not be taken for more than six credits.

Prerequisites: Permission of instructor and department

0-3 credits

CSE 488: Internship in Computer Science

Participation in local, state, national, or international private enterprise, public agencies, or nonprofit institutions. To obtain permission to register for the courses, students are required to submit proof that the work is related to their studies and the work will include a minimum of 180 hours during the semester. During the semester, the student will submit progress reports and a final report on their experience to the client and to the department. May be repeated up to a limit of 12 credits but can only be used once as a technical elective to satisfy CSE major requirements.

Prerequisites: CSE major, U3 or U4 standing; permission of department

SBC:     EXP+

3 credits, S/U grading

CSE 495: Senior Honors Research Project I

A two-semester research project carried out under the supervision of a computer science faculty member. Students who enroll in CSE 495 must complete CSE 496 in the subsequent semester and receive only one grade upon completion of the sequence.

Prerequisite: Admission to Honors in Computer Science; permission of instructor and department.

3 credits

CSE 496: Senior Honors Research Project II

A two-semester research project carried out under the supervision of a computer science faculty member. Students must submit a written project report and make a presentation to the department at the year-end Honors Project Colloquium.

Prerequisite: CSE 495; permission of instructor and department

3 credits