The Computer Science discipline is concerned with the design, analysis, implementation, maintenance, and evolution of computer-based systems, and their associated theoretical foundations. Computer science is powering the information revolution of the 21st century, and computer-based systems are used in every scholarly discipline, every sector of industry, and every walk of human life.

Advanced computation tools and techniques are revolutionizing, transforming, and often automating the way we work, play, communicate, collaborate, and conduct business. Computational approaches are integral to a broad array of disciplines including computational natural and social sciences, bioinformatics, health informatics, digital humanities, and financial technology.  In addition, the spread of computing throughout society has made the ethical use of computing a central concern to policymakers.

Computer scientists must be well-grounded in the theory of computing and in its application to diverse areas, and they must be able to work closely with members of other professions that use computing.  The department therefore offers a broad array of programs in computer science at both the undergraduate and graduate levels.  Students who study this discipline can learn about a wide variety of concepts and methods in computer science—algorithms, artificial intelligence, computer networking, cyber security, databases, data mining, data structures, machine learning, operating systems, programming languages, robotics, software engineering—and they will explore effective and ethical applications of these concepts and methods.

Department Faculty

Professors

Ateniese, Aydın, Barbará, Brodsky, J. Chen, S. Chen, Cummings, Das, Domeniconi, Evrendilek, Košecká, Luke, Maddox, Marcus, Masri, Pettit, Rangwala, Rosenblum (Chair), Setia, Shehu, Simon, Singh, Snyder (Associate Chair), Tecuci, Wijesekera

Associate Professors

Allbeck, Baldimtsi, Durić, Gambhir, Gingold, Gordon, Han, Itani, Kamberi, LaToza, Li, Lin, J. Luo, L. Luo, Monroe-White, Negulescu, Nguyen, Pathak, Reep, Richards, Russell, Soundararajan, F. Wang, White, C. Yu, Q. Zeng, Zhong

Assistant Professors

Anastasopoulos, Andrea, Avramovic, Baume, Deng, Dimitriadis, González Hernández, Gonzalez Samúdio, Gopalkrishna, Hrolenok, Johnson-Matthews, Kamranfar, Kornaropoulos, Lam, Liu, Osterweil, Pruss, Shamseddine, Stein, Xiao, Yang, S. Yao, Z. Yao, Yaroslavtsev, Ye, Yin, F. Yu, Zaman, Zhang, Zhou, Zhu

Senior Instructors

Otten

Instructors

Mughal

Affiliated Faculty

Bidkkhori, X. Chen, Cheng, Eagle, Hong, Johri, Khasawneh, Lybarger, McDonald, Mohebbi, Motti, Pfoser, Shishika, Sun, Uzuner, Wei, Zampieri, K. Zeng

Adjunct Professors

Abu Jbara, Bailey, Curts, Dean, Dubey, Eggan, Ellis, Ernst, Geldon, Greenwald, He, Hemayati, Hugues, Islam, Katz, Kaznachey, Kowalski, Mahmood, Nidiffer, Panagoda, Seymer, Soomro, Tkach, Tompkins, Wheeler, Wilson

Emeritus Faculty

DeJong, Gomaa, Hamburger, Kerschberg, Menascé, Motro, Pullen, Rine, Sood, P. Wang, Wechsler

Computer Science (CS)

100 Level Courses

CS 100: Principles of Computing. 3 credits.
This course is intended to help students learn to think in the manner necessary to fully grasp the nature and power of the digital world around us. The early era of the Internet and the personal computer led to the need for "computer literacy." Now, the changing nature of our global society requires that students learn new ways to think about problems and how to solve them, regardless of students' specific fields of endeavor. Through this course, students will explore major issues related to the "big ideas" of computational thinking (namely, (i) Creativity, (ii) Abstraction, (iii) Data, (iv) Algorithms, (v) Programming, (vi) Internet, and (vii) Societal Impact), as well as how these issues will impact their future lives. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 105: Computer Ethics and Society. 1 credit.
Intensive introduction to legal, social, and ethical issues surrounding software development and computer use. Stresses professional conduct, social responsibility, and rigorous standards for software testing and reliability. Examines issues such as liability, ownership of information, and computer crime. Note: Students who have received credit for CS 305 or 306 should not register for CS 105. No credit will be given for CS 105 if a student has already received credit for CS 305 or 306. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 108: Intro to Computer Programming, Part A. 3 credits.
This is the first of a two semester sequence intended for students with little or no programming experience, which introduces the field of Computer Science as well as the basics of programming commensurate with a first course in programming. This course discusses the history of computing, as well as ethical, security, and societal impacts of technology. Basics of tools and technology used for programming are introduced. It also covers the basics of programming in a procedural style, including expressions, control structures, functions, testing, debugging, and general problem solving techniques. The course prepares students for more in-depth programming courses. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 109: Intro to Computer Programming, Part B. 3 credits.
This is the second part of a two semester sequence intended for students with little or no programming experience, which introduces the field of Computer Science as well as the basics of programming commensurate with a first course in programming. CS 109 follows CS 108 with coverage of procedural programming appropriate for a first course in programming. The course begins with a review of expressions, control structures, and functions. Further topics include testing and debugging, multidimensional lists, mutability and references, file input/output, data types, recursion, exceptions, and basics of classes and objects. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 108C and (minimum score of 80 in 'Math Placement Aleks', MATH 104C, 105C, 113C, 115C or 123C)).
C Requires minimum grade of C.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Laboratory, Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 110: Essentials of Computer Science. 3 credits.
Offers a broad overview of computer science designed to provide computer science majors with an introduction to their discipline. Fundamental computing concepts such as number representation, programming environments, communication tools, and basic network security measures are covered. Privacy and ethical use of computing are also discussed along with guest lectures to sample current computer science research. Note: All computer science majors are required to take this course within their first year as a computer science major. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Enrollment limited to students in the EC-BS-ACS or EC-BS-CS programs.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 112: Introduction to Computer Programming. 4 credits.
Rigorous introduction to problem solving through development of computer programs. Focuses on identifying algorithmic patterns in problems, describing problem solutions in high-level pseudocode, then implementing in a procedural programming language. Basic programming concepts are covered in detail including expressions, control structures, simple data types, and input/output. Program testing and debugging are discussed to verify that problems are solved correctly. Note: The department will drop students who fail to meet the prerequisites. Lectures and Labs are offered in groups. Students MUST register for a lecture and a lab from the same group. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: ((minimum score of 80 in 'Math Placement Aleks', MATH 104C, 104T, 105C, 105T, 105XS, 113C, 113XS, 115C, 123C or 123XS)).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Laboratory, Lecture
Grading:
This course is graded on the Undergraduate Regular scale.

200 Level Courses

CS 211: Object-Oriented Programming. 3 credits.
Thorough treatment of programming according to object-oriented principles. Introduces classes, interfaces, inheritance, polymorphism, and single dispatch as means to decompose problems. Covers intermediate programming techniques including error handling through exceptions, arrangement of source code into packages, and simple data structures. Intermediate debugging techniques and unit testing are covered. Note: Lectures and labs are offered in groups. Students MUST register for a lecture and a lab from the same group. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 112C, 112XS or 109C).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Laboratory, Lecture
Grading:
This course is graded on the Undergraduate Special scale.
CS 222: Computer Programming for Engineers. 3 credits.
Introduction to C as a second programming language with emphasis on problems and language features relevant to engineers. Topics include basic data types, pointers, elementary data structures, file/output, bitwise operations, and Unix commands for compilation and debugging. Intended as terminal course in computer programming. Notes: Intended as terminal course in computer programming. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 112C, 112XS, 109C, 109XS or L109).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 262: Introduction to Low-Level Programming. 3 credits.
Introduction to the language C, as well as operating system concepts, in UNIX, to prepare students for topics in systems programming. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 110*C, 110XS or 101*) and (CS 211C, 211XS, 222C or 222XS).
* May be taken concurrently.
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Laboratory, Lecture
Grading:
This course is graded on the Undergraduate Regular scale.

300 Level Courses

CS 306: Synthesis of Ethics and Law for the Computing Professional. 3 credits.
Practical course to become effective computer professional. Examines legal and ethical issues surrounding computer technology and its use, as well as the foundation building that is necessary to deal with those challenges. Applies philosophical bases for ethical decision making to modern concerns raised by computers and technology. Addresses topics covered by CS 105 and CS 110 in a more intensive manner and focuses on the emerging legal and ethical issues involved in e-commerce and widespread use of the Internet. Notes: Computer science majors may use this course to satisfy the Mason Core synthesis requirement, so long as they have not previously taken CS 305 for credit. Offered by Computer Science. Limited to two attempts. Equivalent to CS 405.
Specialized Designation: Writing Intensive in Major
Recommended Prerequisite: Junior standing (at least 60 credit hours).
Recommended Corequisite: All required Mason Core courses.
Registration Restrictions:

Required Prerequisites: ((CS 105C, 105XS, 110C or 110XS) and ((COMM 100C, 100XS, 101C or 101XS) and (ENGH 302C or 302XS)) or (HNRS 260XS, 260C, 261C or 261XS)).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Enrollment is limited to students with a major, minor, or concentration in Applied Computer Science or Computer Science.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 310: Data Structures. 3 credits.
Focuses on object-oriented programming with an emphasis on tools and techniques for developing moderate to large programs. Topics include use and implementation of linear and nonlinear data structures and the design and analysis of elementary algorithms. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: ((CS 211C or 211XS) and MATH 125C and (MATH 113C, 113XS, 124C, 124XS or 115C)).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 321: Software Engineering. 3 credits.
An introduction to concepts, methods, and tools for the creation of large-scale software systems. Methods, tools, notations, and validation techniques to analyze, specify, prototype, and maintain software requirements. Introduction to object-oriented requirements modeling, including use of case modeling, static modeling, and dynamic modeling using the Unified Modeling Language (UML) notation. Concepts and methods for the design of large-scale software systems. Fundamental design concepts and design notations are introduced. A study of object-oriented analysis and design modeling using the UML notation. Students participate in a group project on software requirements, specification, and object-oriented software design. Offered by Computer Science. Limited to two attempts.
Mason Core: Mason Core (All)
Specialized Designation: Writing Intensive in Major
Registration Restrictions:

Required Prerequisites: ((CS 310C or 310XS) and (ENGH 302C, 302XS, HNRS 260C, 260XS, 261C or 261XS)).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Enrollment is limited to students with a major, minor, or concentration in Applied Computer Science, Computer Science, Software Engineering or Systems Engineering.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 325: Introduction to Game Design. 3 credits.
Game design, in various electronic entertainment technologies, involves a diverse set of skills and backgrounds from narrative and art to computer programming. Surveys the technical aspects of the field, with an emphasis on programming. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 211C or 211XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 330: Formal Methods and Models. 3 credits.
Abstract concepts that underlie much advanced work in computer science, with major emphasis on formal languages, models of computation, logic, and proof strategies. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 211C or 211XS) and (MATH 125C or 125XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Enrollment is limited to students with a major, minor, or concentration in Applied Computer Science, Computer Science or Software Engineering.

Enrollment limited to students in a Bachelor of Science or Post-Baccalaureate Certificate degrees.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 351: Visual Computing. 3 credits.
Focuses on programming essential mathematical and geometric concepts underlying computer graphics. Covers fundamental topics in computational geometry, 3D modeling, graphics algorithms, and graphical user interfaces using both 2D and 3D implementations. Reinforces object-oriented programming practices. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 262C or 262XS) and (CS 310C or 310XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 367: Computer Systems and Programming. 4 credits.
Introduces students to computer systems from a programmer's perspective. Topics include data representation, assembly and machine-level representation of high-level language programs, the memory hierarchy, linking, exceptions, interrupts, processes and signals, virtual memory, and system-level I/O. Foundation for courses on compilers; networks; operating systems; and computer architecture, where a deeper understanding of systems-level issues is required. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: ((CS 262C, 262XS, 222XS or 222C) and (MATH 125C or 125XS) and (CS 110C or 110XS)).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture, Recitation
Grading:
This course is graded on the Undergraduate Regular scale.
CS 390: Research and Project Design Principles in Computing. 3 credits.
This course introduces students to the research and project design process within the computing field. Students will learn about the tools of the trade, work through design principles beginning with the articulation of a question, reviewing methods of exploration, gathering evidence, communicating results, and assessing and evaluating research or project outcomes. Offered by Computer Science. Limited to two attempts.
Specialized Designation: Mason Impact.
Recommended Prerequisite: CS 310 and CS 321.
Registration Restrictions:

Required Prerequisites: CS 262C or 262XS.
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 391: Advanced Programming Lab. 1 credit.
Programming-intensive lab course. Students refine problem-solving and programming skills while gaining experience in teamwork. Focuses on data structures, recursion, backtracking, dynamic programming, and debugging. Central focus is applying familiar and new algorithms and data structures to novel circumstances. Offered by Computer Science. May be repeated within the degree for a maximum 3 credits.
Registration Restrictions:

Required Prerequisites: CS 310C or 310XS.
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Laboratory
Grading:
This course is graded on the Undergraduate Regular scale.
CS 395: Student Initiated Special Topics. 1 credit.
Special and emerging topics of interest to computer science undergraduates. Lectures are taught by student/faculty teams. Notes: May be repeated if topics are substantially different. Offered by Computer Science. May be repeated within the term for a maximum 3 credits.
Specialized Designation: Topic Varies
Recommended Prerequisite: Additional pre-requisites will vary by topic
Registration Restrictions:

Required Prerequisites: (CS 211C or 211XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Enrollment is limited to students with a major in Applied Computer Science or Computer Science.

Enrollment limited to students in a Bachelor of Science degree.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 399: Special Topics. 3 credits.
Special and emerging topics in computer science or closely related disciplines. Notes: May be repeated if topics are substantially different. Offered by Computer Science. May be repeated within the term for a maximum 6 credits.
Specialized Designation: Topic Varies
Recommended Prerequisite: Additional prerequisites will vary by topic.
Registration Restrictions:

Required Prerequisites: (CS 211C or 211XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.

400 Level Courses

CS 405: Synthesis of Ethics and Law for the Computing Professional. 3 credits.
Practical course to become effective computer professional. Examines legal and ethical issues surrounding computer technology and its use, as well as the foundation building that is necessary to deal with those challenges. Applies philosophical bases for ethical decision making to modern concerns raised by computers and technology. Addresses topics covered by CS 105 and CS 110 in a more intensive manner and focuses on the emerging legal and ethical issues involved in e-commerce and widespread use of the Internet. Notes: Computer science majors may use this course to satisfy the Mason Core synthesis requirement, so long as they have not previously taken CS 305 for credit. Offered by Computer Science. Limited to two attempts. Equivalent to CS 306.
Recommended Corequisite: All required Mason Core courses.
Registration Restrictions:

Required Prerequisites: ((CS 105C, 105XS, 110C or 110XS) and ((COMM 100C, 100XS, 101C or 101XS) and (ENGH 302C or 302XS)) or (HNRS 260C, 260XS, 261C or 261XS)).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Enrollment is limited to students with a major, minor, or concentration in Applied Computer Science or Computer Science.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 425: Game Programming I. 3 credits.
Introduction to technologies and techniques used in modern computer games. Teams will explore the various facets of a complete design using sophisticated tools. Includes a project in which a game is prototyped; this prototype and initial design will serve as the starting point for the project in CS 426. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 310C or 310XS) and (CS 351C or 351XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 426: Game Programming II. 3 credits.
Project-orientated continuation of CS 425 with an emphasis on the implementation of a complete game. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: ((CS 325C or 325XS) and (CS 425C or 425XS)).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 440: Compilers. 3 credits.
Survey of basic programming language processors and software development tools with an emphasis on compilers. Topics include lexical analysis; parsing theory; semantic analysis; intermediate representations; runtime environments; code generation; and basic program analysis and optimization. This class is project intensive and will include having students implement a compiler for a simple language. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 310C or 310XS) and (CS 330C or 330XS) and (CS 367C or 367XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 450: Database Concepts. 3 credits.
Covers basics to intermediate knowledge for the design, implementation, and use of relational database systems. Topics include the Entity-Relationship (ER) and Entity-Enhanced Relationship (EER) models for database design, Relational Algebra (RA), Structured Query Language (SQL), SQL programming techniques, functional dependencies and normalization, object and object-relational databases, and security. Students will practice to design, develop, and implement a relational ORACLE database and use the database for queries, transaction processing, and report generation. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 310C or 310XS) and (CS 330C or 330XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 451: Computer Graphics. 3 credits.
Basic graphics principles and programming. Topics include scan conversion, transformation, viewing, lighting, blending, texture mapping, and some advanced graphics techniques. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (MATH 203C or 203XS) and (CS 310C or 310XS) and (CS 367C or 367XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 452: Virtual Reality. 3 credits.
This course covers the concepts and techniques underlying virtual reality (VR) technologies. From display technologies, visual computing, sound, haptics, to navigation, and 3D interaction techniques, students will learn about the pipeline of techniques applied to devise a practical VR system. This course will also cover other immersive technologies such as augmented reality and holographic displays. Students will also learn about the applications of VR technologies for training, serious games, design, exhibitions, and education. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 325C, 325, 325XS, 351C, 351, 351XS, 451C, 451 or 451XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 455: Computer Communications and Networking. 3 credits.
Data communications and networking protocols, with study organized to follow layers of Internet Protocol Suite (TCP/IP family of protocols). Topics include role of various media and software components, local and wide area network protocols, network performance, and emerging advanced commercial technologies. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 310C or 310XS) and (CS 367C or 367XS) and (STAT 344C or 344XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 463: Comparative Programming Languages. 3 credits.
Key programming mechanisms described independently of particular machines or languages, including control, binding, procedural abstraction, types, and concurrency. Includes basic programming competence in several different types of programming languages, including a language that provides concurrency. Notes: Students who have taken CS 363 may not receive credit for CS 463. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 330C or 330XS) and (CS 367C or 367XS) and (CS 310C or 310XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 465: Computer Systems Architecture. 3 credits.
Computer subsystems and instruction set architectures. Single-cycle, multiple-cycle, and pipeline architectures. Memory hierarchy, cache, and virtual memory input-output processing. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 367C or 367XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 468: Secure Programming and Systems. 3 credits.
Fundamental principles and techniques for implementing secure computer systems. Topics include security and cryptography basics, vulnerability analysis, secure software development, and distributed system security. Projects involve designing and programming basic security tools, secure programs, and distributed systems. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 310C or 310XS) and (CS 367C or 367XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 469: Security Engineering. 3 credits.
Covers the software subsystems that are involved in defending computer systems. Studies threats and architecting solutions against them, including but not limited to access control and identity management, network and system security, intrusion detection and recovery systems, monitoring and forensic systems. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 330C or 330XS) and (CS 367C or 367XS) and (STAT 344C or 344XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 471: Operating Systems. 3 credits.
Issues in multiprogramming. Covers concurrent processes and synchronization mechanisms; processor scheduling; memory, file, I/O, and deadlock management; performance of operating systems; and projects dealing with synchronization in multiprogrammed OS and virtual memory management. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: ((CS 310C, 310XS, ECE 340C or 340XS) and (CS 367C, 367XS, ECE 445C or 445XS)).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 475: Concurrent and Distributed Systems. 3 credits.
Practical issues in designing and implementing concurrent and distributed software. Topics include concurrent programming, synchronization, multithreading, local and wide-area network protocols, distributed computation, systems integration, and techniques for expressing coarsegrained parallelism at the application level. Projects involve network programming at application level. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 310C or 310XS) and (CS 367C or 367XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 477: Mobile Application Development. 3 credits.
This project based course will teach fundamental principles of software development for the mobile device environment, emphasizing the application of numerous academic concepts and the new design and programming paradigms that stem from the use of mobile devices. Topics include user interfaces, event-based programming, interprocess communications, networking, mobile-specific capabilities and performance in a resource restricted environment. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 310C or 310XS) and (CS 367C or 367XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 478: Natural Language Processing. 3 credits.
This covers the core concepts and algorithms for the theory and practice of natural language processing (NLP), the creation of computer programs that aim to understand, generate, and learn natural language. Topics include language modeling, word and sentence representations, sentiment analysis, POS tagging, and syntactic parsing. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: ((CS 310C, 310XS or 310) and (CS 330C, 330XS or 330)).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 480: Introduction to Artificial Intelligence. 3 credits.
Principles and methods for knowledge representation, reasoning, learning, problem solving, planning, heuristic search, and natural language processing and their application to building intelligent systems in a variety of domains. Uses LISP, PROLOG, or expert system programming language. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 310C or 310XS) and (CS 330C or 330XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 482: Computer Vision. 3 credits.
Basic principles of visual perception and their implementation on computer systems. Topics include early visual processing, edge detection, segmentation, intrinsic images, image modeling, representation of visual knowledge, and image understanding. Students complete projects involving real images. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 310C or 310XS) and (MATH 203C or 203XS) and (STAT 344C or 344XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 483: Analysis of Algorithms. 3 credits.
Analyzes computational resources for important problem types by alternative algorithms and their associated data structures, using mathematically rigorous techniques. Specific algorithms analyzed and improved. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 310C or 310XS) and (CS 330C or 330XS) and (MATH 125C or 125XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 484: Data Mining. 3 credits.
Basic principles and methods for data analysis and knowledge discovery. Emphasizes developing basic skills for modeling and prediction and performance evaluation. Topics include system design; data quality, preprocessing, and association; event classification; clustering; biometrics; business intelligence; and mining complex types of data. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: ((CS 310C or 310XS) and ((STAT 344C, 344XS, 334C, 334XS or 346C) or (MATH 351C and 352C))).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 485: Autonomous Robotics. 3 credits.
Covers various basic topics in autonomous robotics, such as autonomous architectures and their interaction with physical hardware, elementary kinematics and robot control, motion and trajectory planning, localization, task planning, learning and adaptation, modeling, and sensor fusion. Includes projects involving physical robots. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 262C or 262XS) and (CS 310C or 310XS) and (MATH 203C or 203XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 487: Introduction to Cryptography. 3 credits.
Covers formal definitions of security for the most common tasks: data encryption and authentication, in both the private key and public key settings. Covers the process of formally proving that constructions meet the appropriate security definitions. Also covers practical constructions and applications, such as how to correctly use block ciphers and hash functions for the tasks above. In addition, several current topics in cryptography may also be covered. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: ((CS 310C or 310XS) and (CS 330C or 330XS) and (STAT 344C or 344XS)).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 490: Design Exhibition. 3 credits.
Capstone course focusing on design and successful implementation of major software project, encompassing broad spectrum of knowledge and skills, developed by team of students. Requires final exhibition to faculty-industry panel. Offered by Computer Science. May be repeated within the degree for a maximum 12 credits.
Recommended Prerequisite: Two other CS 400-level courses; and senior standing.
Registration Restrictions:

Required Prerequisites: (CS 321C, 321XS or 421C) and (CS 483C or 483XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
CS 491: Industry-Sponsored Senior Design Project. 3 credits.
Senior design project course focusing on design and successful implementation of major software project specified by an industry sponsor, encompassing broad spectrum of knowledge and skills, developed by team of students. Requires final exhibition to faculty-industry panel. Students are matched to group projects with industry partners at the start of the course; students must enroll in the two-semester Fall/Spring sequence to receive credit. Three credits may count towards the Senior Computer Science requirements, and the second three credits may count towards Computer Science-Related requirements. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Recommended Corequisite: CS 367, CS 483
Registration Restrictions:

Required Prerequisites: (CS 321C, 321XS or 321).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Enrollment is limited to students with a major, minor, or concentration in Applied Computer Science or Computer Science.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Special scale.
CS 498: Independent Study in Computer Science. 1-3 credits.
Research and analysis of selected problems or topics in computer science. Topic must be arranged with instructor and approved by department chair before registering. Notes: May be repeated if topics substantially different. Offered by Computer Science. May be repeated within the term for a maximum 6 credits.
Specialized Designation: Topic Varies
Recommended Prerequisite: 60 credits, CS major, and Permission of Instructor.
Registration Restrictions:

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Independent Study
Grading:
This course is graded on the Undergraduate Regular scale.
CS 499: Special Topics in Computer Science. 3 credits.
Topics of special interest to undergraduates. Notes: May be repeated if topics substantially different. Offered by Computer Science. May be repeated within the term for a maximum 24 credits.
Specialized Designation: Topic Varies
Recommended Prerequisite: 60 credits. Additional prerequisites may vary with nature of topic.
Registration Restrictions:

Required Prerequisites: (CS 310C or 310XS) and (CS 330C or 330XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.

500 Level Courses

CS 500: Special Topics. 0-4 credits.
Select contemporary topics in Engineering and Computing. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Specialized Designation: Topic Varies
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Students in a Non-Degree Undergraduate degree may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Special scale.
CS 504: Principles of Data Management and Mining. 3 credits.
Techniques to store, manage, and use data including databases, relational model, schemas, queries and transactions. On Line Transaction Processing, Data Warehousing, star schema, On Line Analytical Processing. MOLAP, HOLAP, and hybrid systems. Overview of Data Mining principles, models, supervised and unsupervised learning, pattern finding. Massively parallel architectures and Hadoop. Notes: This course cannot be taken for credit by students of the MS CS, MS ISA, MS SWE, CS PhD or IT PhD programs. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 530: Mathematical Foundations of Computer Science. 3 credits.
This course focuses on the topics of basic mathematical structures, mathematical logic and probability theory; and application of these concepts to problem solving and formal reasoning through hand-on practice with the use of computational tools. Note: May not be taken for credit by students in the PhD CS program, or by students who went through the Bachelor's-Accelerated Master's in Computer Science or the Bachelor's-Accelerated Master's in Software Engineering programs. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: MATH 125 and STAT 344.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 531: Computer Systems and Fundamentals of Systems Programming. 3 credits.
This course is a hands-on introduction to the systems level of programming with an emphasis on data structures and interfacing with operating systems. This course focuses on fundamental data structures needed to design and implement systems applications and continues with an introduction to the Unix Application Programming Interface, signals, threads, and interprocess communications. This course is taught from a programmatic perspective using C, with special topics in both Java and Python. Note: May not be taken for credit by students in the PhD CS program, or by students who went through the Bachelor's-Accelerated Master's in Computer Science or the Bachelor's-Accelerated Master's in Software Engineering programs. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: CS 310 and CS 367 or equivalent.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 540: Compilers. 3 credits.
Survey of basic programming language processors and software development tools with an emphasis on compiler generation. Topics covered include: lexical analysis; parsing theory; semantic analysis; intermediate representations; runtime environments; code generation; and basic program analysis and optimization. This class is project intensive and will include having students implement a compiler for a simple language. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: CS 310 and CS 330 and CS 367
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Students cannot enroll who have a major in Computing Foundations.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 550: Database Systems. 3 credits.
An introduction to database management with focus on architecting databases and using them in applications. Topics to be covered include: data modeling with the Entity-Relationship model, the relational data model and its formal languages, SQL, the theory of database design, object databases, XML and Web data. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: (CS 310 or INFS 519) and CS 330
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 551: Computer Graphics. 3 credits.
Graphics principles and programming. Topics include graphics hardware, antialiasing, transformations, viewing, illumination, blending, texture mapping, color models, curves, surfaces, and animation. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: CS 310 and CS 367.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Students cannot enroll who have a major in Computing Foundations.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 555: Computer Communications and Networking. 3 credits.
Techniques and systems for communication of data between computational devices and layers of Internet Protocol Suite. Topics include role of various media and software components, local and wide area network protocols, network design, performance and cost considerations, and emerging advanced commercial technologies. Emphasizes TCP/IP family of protocols. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: CS 310 and CS 367 and STAT 344.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Students cannot enroll who have a major in Computing Foundations.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 571: Operating Systems. 3 credits.
Models of operating systems. Major functions including processes, memory management, I/O, interprocess communication, files, directories, shells, distributed systems, performance, and user interface. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: CS 310 and CS 367, or CS 310 and ECE 445
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Students cannot enroll who have a major in Computing Foundations.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 580: Introduction to Artificial Intelligence. 3 credits.
Artificial Intelligence principles and methods. Topics will include uninformed search, informed search, adversarial search, probabilistic reasoning and models, Bayes networks, machine learning fundamentals, classification and clustering, and neural networks. Additional topics may include knowledge representation, constraint satisfaction search, agent architectures, and Markov decision problems, among others. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: CS 310 and CS 330.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Students cannot enroll who have a major in Computing Foundations.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 583: Analysis of Algorithms. 3 credits.
Topics include analyzing sequential and parallel algorithmic strategies such as greedy methods, divide and conquer strategies, dynamic programming, search and traversal techniques, and approximation algorithms; and analyzing specific algorithms falling into these classes, NP-Hard and NP-Complete problems. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: CS 310 and CS 330 and MATH 125.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 584: Theory and Applications of Data Mining. 3 credits.
Concepts and techniques in data mining and multidisciplinary applications. Topics include databases; data cleaning and transformation; concept description; association and correlation rules; data classification and predictive modeling; performance analysis and scalability; data mining in advanced database systems, including text, audio, and images; and emerging themes and future challenges. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: CS 310 and STAT 344.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Students cannot enroll who have a major in Computing Foundations.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 587: Introduction to Cryptography. 3 credits.
Covers formal definitions of security for the most common tasks: data encryption and authentication, in both the private key and public key settings. Covers the process of formally proving that constructions meet the appropriate security definitions. Also covers practical constructions and applications, such as how to correctly use block ciphers and hash functions for the tasks above. In addition, several current topics in cryptography may also be covered. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: CS 330
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Students in a Non-Degree Undergraduate degree may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 595: Basic Topics in Computer Science. 3 credits.
Special topics in computer science not occurring in existing courses. Offered by Computer Science. May be repeated within the degree for a maximum 9 credits.
Specialized Designation: Topic Varies
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Students in a Non-Degree Undergraduate degree may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.

600 Level Courses

CS 600: Theory of Computation. 3 credits.
Introduction to logic and proof techniques, formal languages, automata theory, and computational complexity. Specific topics include regular and context-free languages, Turing machines, NP-completeness, and undecidability. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 583B- or 583XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 630: Advanced Algorithms. 3 credits.
Provides an overview of advanced algorithm design and analysis techniques. Topics include algorithms for hash tables, matrix operations, number theory, string matching, computational geometry, combinatorial optimization, and linear programming; also the areas of NP-completeness and approximation algorithms. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 583B- or 583XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 633: Computational Geometry. 3 credits.
Basic principles and methods for computing in field of geometric modeling. Emphasizes data structures used to represent geometric objects and algorithms for manipulating those data structures. Topics include range searching, polygon triangulation, convex hulls, motion-planning, visibility, and mesh generation. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 583B- or 583XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 635: Foundations of Parallel Computation. 3 credits.
Covers three major parallel computing paradigms: MIMD computation, SIMD computation, and data flow computation. Emphasizes interfaces between algorithm design and implementation, architecture, and software. Examines parallel algorithms and parallel programming languages relative to architecture of particular parallel computers. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: Proficiency in C programming language.
Registration Restrictions:

Required Prerequisites: (CS 583B- or 583XS) and (CS 571B- or 571XS).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 640: Advanced Compilers. 3 credits.
Examines advanced compiler techniques such as code optimizations for sequential and parallel machines; compilers for logical, functional, or object-oriented languages; and other topics in current literature. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: (CS 540B- or 540XS) and (CS 583B- or 583XS).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 650: Advanced Database Management. 3 credits.
Study of the internal architecture of database systems. Topics include: physical data organization and indexing, query processing and optimization, transaction processing, database system architectures, Web services and Web data security. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 550B-, 550XS, INFS 614B- or 614XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 655: Wireless and Mobile Computing. 3 credits.
This course provides an introduction to wireless and mobile networking. Topics include principles and architectures of wireless and mobile networking and fundamental issues of wireless communications with energy-constrained, mobile devices. It discusses physical, data link, and network layer protocols including IEEE 802.11, and emerging wireless networks such as Internet-of-Things, high-speed millimeter-waves, vehicular networks, and mobile and IoT sensing applications including indoor localization, smart-homes, and smart-cities. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 555B- or 555XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Students in a Non-Degree Undergraduate degree may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 657: Mining Massive Datasets with MapReduce. 3 credits.
Covers the techniques to mine large datasets, including Distributed File Systems and Map-Reduce, similarity search, and data stream processing. Covers classic problems in data mining, such as clustering, association rule mining, and others from the point of view of scalability. Includes a final project to exercise concepts covered in class. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 584B- or 584XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 658: Networked Virtual Environments. 3 credits.
Networked virtual environment overview, networking and multimedia concepts, virtual simulation concepts, efficiency/performance issues, and online conferencing/virtual classrooms. Course is based around a project with multiple segments, each covering one aspect of networked virtual environments, plus a final session where one- or two-person teams create a minimally functional networked virtual environment over the Internet using multicast network software. Lectures available online/recorded. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 555B- or 555XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 662: Computer Graphics Game Technologies. 3 credits.
Addresses some graphics game techniques including collision detection, levels of detail, physics-based simulations, textures, maps, and shadows. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 551B- or 551XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 663: Computational Design. 3 credits.
This course will cover the fundamentals of computational design. Students will learn how to design a computational design framework to generate different types of designs such as interior design, 3D product design, and user interface design. Topics to discuss include 3D representation, 3D modeling, procedural modeling, simulation, and interaction techniques. Students will also learn how to carry out user studies and hypothesis testing to evaluate designs. The course will also include advanced topics on using optimization and artificial intelligence techniques to generate designs. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 583B- or 583XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Students in a Non-Degree Undergraduate degree may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 667: Biometrics and Identity Management. 3 credits.
Basic principles and methods for automatic authentication of individuals. Technologies include face, fingerprint, and iris recognition; and speaker verification. Additional topics cover multimodal biometrics, system design, performance evaluation, and privacy concerns. Term project required. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 580B- or 580XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 672: Computer System Performance Evaluation. 3 credits.
Theory and practice of analytical models of computer systems. Topics include open and closed multiclass queuing networks, single and multiple class Mean Value Analysis, Markov Chains, performance and availability models of Internet data centers, software performance engineering, and e-commerce performance. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 571B- or 571XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 673: Multimedia Computing and Systems. 3 credits.
Focuses on technological and development environments in developing multimedia applications. Projects involve experience with multimedia authoring tools and simulations to assess performance. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 571B- or 571XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 675: Distributed Systems. 3 credits.
Issues in design and implementation of distributed systems and applications. Topics include distributed communication paradigms, middleware, coordination and synchronization, distributed transactions, consistency and replication, fault-tolerance and reliability, and peer-to-peer systems. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 571B- or 571XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 678: Advanced Natural Language Processing. 3 credits.
The course covers recent advances in the field of natural language processing (NLP). Topics include language generation; language understanding; multilingual learning; transfer learning; active learning; multitask and multimodal learning; semantics; representation learning for language data; machine reading and question answering. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: Undergraduate statistics course such as STAT 344
Registration Restrictions:

Required Prerequisites: (CS 580B-, 580XS, 584B- or 584XS).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Students in a Non-Degree Undergraduate degree may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 681: Instructable Cognitive Agents. 3 credits.
Design and development of cognitive agents that learn problem-solving expertise directly from domain experts. Topics include modeling expert's knowledge, mixed-initiative reasoning based on knowledge and evidence, ontology design and development, multistrategy rule learning, and knowledge-based maintenance. Projects include development of specific cognitive agents through teaching and learning. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 580B- or 580XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 682: Computer Vision. 3 credits.
Study of computational models of visual perception and their implementation in computer systems. Topics include early visual processing, edge detection, segmentation, intrinsic images, image modeling, representation of visual knowledge, and image understanding. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: (CS 580B-, 580XS, 584B- or 584XS) and (CS 583B- or 583XS).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 683: Parallel Algorithms. 3 credits.
Examines design and analysis of parallel algorithms. Material focuses on algorithms for both theoretical and practical models of parallel computation. Considers algorithm design and analysis for PRAM and existing SIMD and MIMD type architectures. Topics include sorting, graph algorithms, numerical algorithms, and computational complexity. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 583B- or 583XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 684: Graph Algorithms. 3 credits.
Data structures and analytical techniques to study graph algorithms. Data structures include disjoint sets, heaps, and dynamic trees. Algorithms include minimum spanning trees, shortest path, maximum flow, and graph planarity. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 583B- or 583XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 685: Autonomous Robotics. 3 credits.
Reviews developments in intelligent autonomous systems. Studies applications of artificial intelligence, computer vision, and machine learning to robotics. Topics include analysis and design of algorithms and architectures for planning, navigation, sensory data understanding, sensor fusion, spatial reasoning, motion control, knowledge acquisition, learning concepts and procedures, self-organization, and adaptation to environment. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 580B- or 580XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 686: Image Processing and Applications. 3 credits.
Concepts and techniques in image processing. Discusses methods for image capture, transformation, enhancement, restoration, and encoding. Students complete projects involving naturally occurring images. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 583B- or 583XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 687: Advanced Artificial Intelligence. 3 credits.
Explores foundational issues of artificial intelligence, such as roles of knowledge and search, formalization of knowledge and inference, and symbolic versus emergent approaches to intelligence. Studies advanced programming techniques for artificial intelligence, relationship to foundational issues, and important application areas for artificial intelligence. Notes: Major programming project required. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 580B- or 580XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 688: Machine Learning. 3 credits.
This course covers the theory and principles underlying different machine learning paradigms. The emphasis is on statistical theory and methodology. Topics include: Model selection and generalization; Overfitting and under fitting; Bayesian theory and Decision theory; Maximum Likelihood estimation, MAP; Regularization; Bias-variance tradeoff; Curse of dimensionality; Dimensionality reduction; Linear Models for classification; Probabilistic Generative Models; Probabilistic Discriminative Models; Neural Networks (Backpropagation); Deep Learning (CNNs); Kernel methods; Support Vector Machines; Ensemble Methods; Unsupervised Learning (Clustering, EM, Mixture Modeling); Reinforcement learning. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 580B-, 580XS, 584B- or 584XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 689: Planning Motions of Robots and Molecules. 3 credits.
Covers topics from artificial intelligence, algorithms and databases. Presents algorithms that model and simulate physical and biological systems and focuses on motion-planning algorithms for robotic systems in the presence of obstacles. Simple deterministic and sampling-based approaches to motion planning will be covered, as well as advanced planning methods including planning with kinematics and dynamic constraints. Selected topics include sensor-based motion planning, manipulation planning, assembly planning, planning under uncertainty and robotics-inspired methods to compute functionally-relevant motions of molecular chains. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 583B- or 583XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 690: Special Topics in Artificial Intelligence and Databases. 3 credits.
Special topics in artificial intelligence and databases not occurring in regular computer science sequence. Notes: May be repeated for credit when topics are distinctly different. Offered by Computer Science. May be repeated within the term.
Specialized Designation: Topic Varies
Recommended Prerequisite: Completion of at least two core courses and permission of the instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 691: Special Topics in Programming Languages and Software Engineering. 3 credits.
Special topics in programming languages and software engineering not occurring in regular computer science sequence. Notes: May be repeated for credit when topics are distinctly different. Offered by Computer Science. May be repeated within the term.
Specialized Designation: Topic Varies
Recommended Prerequisite: Completion of at least two core courses and permission of the instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 692: Special Topics in Systems and Networks. 3 credits.
Special topics in systems and networks not occurring in regular computer science sequence. Notes: May be repeated for credit when topics are distinctly different. Offered by Computer Science. May be repeated within the term.
Specialized Designation: Topic Varies
Recommended Prerequisite: Completion of at least two core courses and permission of the instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 693: Special Topics in Theoretical Computer Science. 3 credits.
Special topics in theoretical computer science not occurring in regular computer science sequence. Notes: May be repeated for credit when topics are distinctly different. Offered by Computer Science. May be repeated within the term.
Specialized Designation: Topic Varies
Recommended Prerequisite: Completion of at least two core courses and permission of the instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 694: Special Topics in Visual Computing. 3 credits.
Special topics in visual computing not occurring in regular computer science sequence. Notes: May be repeated for credit when topics are distinctly different. Offered by Computer Science. May be repeated within the term.
Specialized Designation: Topic Varies
Recommended Prerequisite: Completion of at least two core courses and permission of the instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 695: Special Topics in Computer Science. 3 credits.
Special topics in Computer Science not occurring in regular computer science sequence. Notes: May be repeated for credit when topics are distinctly different. Offered by Computer Science. May be repeated within the term.
Specialized Designation: Topic Varies
Recommended Prerequisite: Completion of at least two core courses and permission of the instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 697: Independent Reading and Research. 3 credits.
Analysis and investigation of contemporary problem in Computer Science. Must be supervised by a fulltime faculty member or affiliate faculty member of the Computer Science department. To register, students must complete an individualized section form available on the department’s website. The form must include course outcomes, course content, and a reading list. A written report is required. Must be approved by the faculty member, MS-CS program director, and chair or associate chair. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Recommended Prerequisite: Completion of at least two core courses, and permission of the instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Research
Grading:
This course is graded on the Graduate Regular scale.

700 Level Courses

CS 700: Research Methodology in Computer Science. 3 credits.
Topics include approaches for evaluating, writing, and presenting scholarly papers, research integrity issues, and quantitative models and methods in experimental computer science. Techniques for the use of analytic and simulation models, design of experiments, hypothesis testing, and statistical analysis of data are presented. Students apply these techniques to a project, write a report, and make a presentation to the class. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: Admission to PhD in Computer Science or PhD in Information Technology programs.
Registration Restrictions:

Enrollment is limited to students with a major in Computer Science or Information Technology.

Enrollment limited to students in a Doctor of Philosophy degree.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 701: Research Experience in Computer Science. 3 credits.
Readings and research for early stage PhD students under the direction of a Computer Science faculty member. Research findings must be reported in a professionally prepared document and presented in a public meeting at the end of the semester. Offered by Computer Science. May be repeated within the term for a maximum 3 credits.
Specialized Designation: Topic Varies
Recommended Prerequisite: CS 700
Registration Restrictions:

Enrollment is limited to students with a major in Computer Science or Information Technology.

Enrollment limited to students in a Doctor of Philosophy degree.

Schedule Type: Research
Grading:
This course is graded on the Graduate Regular scale.
CS 706: Concurrent Software Systems. 3 credits.
Topics include concurrent programming languages and constructs, and specification, design, verification, and validation of concurrent programs. Students required to solve concurrent programming problems and check solutions by using verification, testing, and debugging tools. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 571B- or 571XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 719: Scalable Internet Services. 3 credits.
Discusses, from quantitative point of view, characteristics of most important technologies used to support implementation of e-business sites. Includes topics such as hardware and software architectures of e-business sites, authentication, payment services, understanding customer behavior, workload characterization, scalability analysis, and performance prediction. Notes: Term paper and project required. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: (CS 555B- or 555XS) and (CS 571B- or 571XS).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 747: Deep Learning. 3 credits.
This course presents the theory, underlying principles and applications of Deep Learning (DL). Deep learning is a Machine Learning approach based on learning data representations as opposed to designing task-specific algorithms. The course covers the concepts of Multilayer Perceptrons (MLPs) and algorithms to train them (gradient descent, backpropagation), Regularization of DL, Convolutional Networks (CNNs), Autoencoders, Recurrent Networks (RNNs), and Deep Generative Models including Generative Adversarial Methods. Problems from various application domains such as natural language processing and computer vision will be discussed. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: CS 688
Registration Restrictions:

Required Prerequisites: CS 580B-, 580XS, 584B- or 584XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Graduate or Non-Degree.

Undergraduate level students may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 752: Interactive Graphics Software. 3 credits.
Advanced graphics methods and tools. Topics include visualization, modeling, rendering, animation, simulation, virtual reality, graphics software tools, and current research topics. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: (CS 551B- or 551XS) and (CS 583B- or 583XS).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 755: Advanced Computer Networks. 3 credits.
Current and emerging issues in advanced computer networks and applications. Topics include software systems associated with packet and cell-switched networking architectures and protocols, high-performance LANs, scheduling and congestion control, mobile networking, multimedia applications, and next generation of Internet. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 555B- or 555XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 756: Performance Analysis of Computer Networks. 3 credits.
Analytical, measurement, and simulation techniques for modeling and analyzing computer networks. Examines elementary queuing analysis; networks of queues; routing and flow controls; and applications to local and wide area networks, Internet, and emerging networking technologies. A large portion of the course is devoted to projects, normally performed in student teams, who apply the techniques presented. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 555B- or 555XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 757: Generative Deep Learning. 3 credits.
This course focuses on the theory and applications of generative models in Machine Learning. A generative model describes how a dataset is generated in probabilistic terms, allowing the generation of new data. Generative models are receiving a lot of attention in both the research and industrial community, with new applications surfacing continuously. This course covers the theoretical aspects behind the Deep Learning models utilized to generate data, plus their practical applications. Offered by Computer Science. May not be repeated for credit. Equivalent to CS 657.
Recommended Prerequisite: CS 747.
Registration Restrictions:

Required Prerequisite: CS 688B-.
B- Requires minimum grade of B-.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the College of Science, Engineering Computing or Schar School of Policy and Gov colleges.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 773: Real-Time Systems Design and Development. 3 credits.
Real-time systems and principles supporting design and implementation. Emphasizes fundamental results from real-time scheduling theory and relevance to computer system design. Topics include system design issues for real-time applications involving operating systems, communication networks, databases, and multimedia Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 571B- or 571XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 774: Computational Vision. 3 credits.
Studies recent advances in development of machine vision algorithms and knowledge-based vision systems. Topics include scalespace; Gabor and wavelet processing; distributed and hierarchical processing using neural networks; motion analysis; active, functional, and selective perception; object and target recognition; expert systems; data fusion; and machine learning. Emphasizes system integration in terms of perception, control, action, and adaptation. Presents applications to robotics, intelligent highways, inspection, forensic, and data compression. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: (CS 682B- or 682XS).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 775: Advanced Pattern Recognition. 3 credits.
Covers statistical pattern recognition, neural network, and statistical learning theory approaches. Topics include decision theory and Bayes' theorem, density (parametric and nonparametric) estimation, linear and nonlinear discriminant analysis, SVM and kernel methods, SRM and model selection, performance evaluation, mixture of experts (AdaBoost), dimensionality reduction, feature selection and extraction, and clustering. Emphasizes experimental design, applications, and performance evaluation. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 688B- or 688XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 777: Human-Computer Intelligent Interaction. 3 credits.
Current and emerging issues in human-computer intelligent interaction, and human-centered systems and their applications. Topics include video processing, visualization, virtual environments, adaptation and tutoring, image and scene modeling, analysis and synthesis, face and gesture recognition, and speech and natural language processing. Notes: Term project and topical review required. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: ((CS 580B- or 580XS) and (CS 551B- or 551XS)) or (CS 682B- or 682XS).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 779: Topics in Resilient and Secure Computer Systems. 3 credits.
Covers study of alternate computer security, including how these methods can be combined in a layered defense and factors that affect the selection of the architectures. Reviews recent papers and reports. Offered by Computer Science. May not be repeated for credit.
Specialized Designation: Topic Varies
Registration Restrictions:

Required Prerequisites: CS 571B-, 571XS, ISA 562B- or 562XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 782: Advanced Machine Learning. 3 credits.
The course covers recent advances in the field of machine learning. Possible topics include: Learning Theory (PAC, error bounds, VC-dimension); Learning manifolds; Transfer learning; Active learning; Learning with structured data (e.g. graphs); Topic modeling; Learning with text; Graphical Models (Bayesian Networks); Learning HMMs. Topics may change depending on the instructor. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 681B-, 681XS, 687B-, 687XS, 688B- or 688XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 787: Decision Guidance Systems. 3 credits.
Decision-guidance systems support an iterative process of giving actionable recommendations to and extracting feedbacks from human decision-makers, with the goal of arriving at the best possible course of action. Focuses on models, languages, algorithms and applications of Decision-Guidance Management Systems, used for fast development of decision-guidance applications. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: INFS 614B-, 614XS, CS 550B- or 550XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 788: Autonomic Computing. 3 credits.
Studies self-managing, self-optimizing, self-configuring, self-tuning, self-healing, and self-protecting computing systems. This course analyzes many examples of autonomic systems as well as various techniques to design and build such systems. This is a doctoral seminar based on reading and analysis of current papers. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: CS 555B-, 555XS, 571B-, 571XS, ISA 562B- or 562XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 795: Advanced Topics in CS. 3 credits.
Advanced topics not occurring in regular sequence. Notes: May be repeated for credit when subject differs. Satisfies MS breadth requirement only if explicitly stated in syllabus in given section. Only one such course should be used for breadth requirements. Offered by Computer Science. May be repeated within the term.
Specialized Designation: Topic Varies
Recommended Prerequisite: Admission into computer science PhD program.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 798: Research Project. 3 credits.
Master's student undertake a project using knowledge gained in prior MS courses. Topic chosen under the guidance of a member of the Graduate Faculty of the department, resulting in written technical report. Prior approval is required by the faculty sponsor. To register, student must complete a Master's Project form available from the department. It must be signed by the faculty sponsor and approved by the department chair or delegate. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Recommended Prerequisite: 18 hours of credit applicable toward the MS degree.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Thesis
Grading:
This course is graded on the Satisfactory/No Credit scale.
CS 799: MS Thesis. 1-6 credits.
Research project completed under supervision of a member of the Graduate Faculty of the department, resulting in a technical report accepted by three-member faculty committee. Thesis must be defended in an oral presentation. To register, students must complete thesis form available from the department. It must be signed by all committee members and the department chair or delegate. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Recommended Prerequisite: 18 hours of credit applicable toward the MS degree.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Thesis
Grading:
This course is graded on the Satisfactory/No Credit scale.

800 Level Courses

CS 800: Computer Science Colloquium. 0 credits.
Students are required to attend colloquia including talks by distinguished speakers, faculty candidates, and Mason faculty. This course introduces PhD students to research topics in computer science. Offered by Computer Science. May be repeated within the degree for a maximum 0 credits.
Registration Restrictions:

Enrollment is limited to students with a major in Computer Science.

Enrollment is limited to Graduate level students.

Enrollment limited to students in a Doctor of Philosophy degree.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Seminar
Grading:
This course is graded on the Satisfactory/No Credit scale.
CS 895: Research Topics in CS. 3 credits.
Advanced topics not occurring in regular sequence. Notes: May be repeated for credit when subject differs. Only one such course should be used for breadth requirements. Offered by Computer Science. May be repeated within the term.
Specialized Designation: Topic Varies
Recommended Prerequisite: Doctoral status.
Registration Restrictions:

Enrollment is limited to Graduate level students.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
CS 896: Directed Reading and Research. 1-6 credits.
Reading and research on a specific topic under the direction of a faculty member. Students can sign up for this class only after satisfying the CS PhD breadth requirement. Must be supervised by a fulltime faculty member or affiliate faculty member of the Computer Science department. To register, students must complete an individualized section form available on the department’s website. The form must include course outcomes, course content, and a reading list. A written report is required. Must be approved by the faculty member, PhD-CS program director, and chair or associate chair. Offered by Computer Science. May be repeated within the degree for a maximum 18 credits.
Recommended Prerequisite: Permission of Instructor.
Registration Restrictions:

Enrollment limited to students in the EC-PHD-CS program.

Enrollment is limited to Graduate level students.

Enrollment limited to students in a Doctor of Philosophy degree.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Research
Grading:
This course is graded on the Graduate Regular scale.

900 Level Courses

CS 998: Doctoral Dissertation Proposal. 1-12 credits.
Work on a research proposal that forms the basis for a doctoral dissertation. Notes: No more than 24 credits of CS 998 and 999 may be applied to the doctoral degree requirements. Offered by Computer Science. May be repeated within the degree.
Recommended Prerequisite: Student must have passed the PhD qualifying examinations and must have a dissertation advisor.
Registration Restrictions:

Enrollment is limited to Graduate level students.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Dissertation
Grading:
This course is graded on the Satisfactory/No Credit scale.
CS 999: Doctoral Dissertation. 1-12 credits.
Dissertation research under the supervision of the dissertation director. Notes: No more than 24 credits of CS 998 and 999 may be applied to the doctoral degree requirements. Offered by Computer Science. May be repeated within the degree.
Recommended Prerequisite: Admission to candidacy.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy.

Enrollment is limited to Graduate level students.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Dissertation
Grading:
This course is graded on the Satisfactory/No Credit scale.

Information Security and Assurance (ISA)

500 Level Courses

ISA 562: Information Security Theory and Practice. 3 credits.
A technical introduction to the theory and practice of information security, which serves as the first security course for the MS-ISA degree, is required as a prerequisite for all subsequent ISA courses (at the 600 and 700 levels) and subsumes most topics covered by the CISSP examination. Also serves as an entry-level course available to non-ISA students, including MS-CS, MS-IS, and MS-SWE students. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: INFS 501, 515, 519, and SWE 510, or permission of instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
ISA 564: Security Laboratory. 3 credits.
Provides hands-on experience in configuring and experimenting with commodity-networked systems and security software in a live laboratory environment, with the purpose of understanding real-world security threats. Takes both offensive and defensive approaches and exposes students to a variety of real-world attacks, including viruses, worms, rootkits, and botnets. Possible mitigation and defending mechanisms, such as firewalls and intrusion detection software, also covered. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: ISA 562 and CS 531 or equivalent.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Laboratory
Grading:
This course is graded on the Graduate Regular scale.

600 Level Courses

ISA 650: Security Policy. 3 credits.
Focuses on security policy and its management for information systems having national and international connectivity. Issues include legal, international, cultural, and local factors. Students are expected to participate regularly in presenting material, in discussion of recent security issues, and by writing short papers on major current issues. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: (ISA 562B- or 562XS).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
ISA 652: Security Audit and Compliance Testing. 3 credits.
Presents the fundamental concepts of the IT-security audit and control process that is being conducted in a plethora of environments, including government, the financial industry, and the healthcare industry. The goal of this course is to enable the students to structure and perform audits based on the specifications of Sarbanes-Oxley, HIPAA, and FISMA audit programs. Covers all the CISA certification requirements in depth. Students completing the course are encouraged to attempt the certification exam on their own. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: (ISA 562B- or 562XS).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
ISA 656: Network Security. 3 credits.
An in-depth introduction to the theory and practice of network security. It assumes basic knowledge of cryptography and its applications in modern network protocols. Studies firewalls architectures and virtual private networks and provides deep coverage of widely used network security protocols such as SSL, TLS, SSH, Kerberos, IPSec, IKE, and LDAP. It covers countermeasures to distributed denial of service attacks, security of routing protocols and the Domain Name System, e-mail security and spam countermeasures, wireless security, multicast security, and trust negotiation. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: (((ISA 562B- or 562XS) and (INFS 612B- or 612XS)) or (CS 555B- or 555XS)).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
ISA 673: Operating Systems Security. 3 credits.
Covers fundamentals and advanced topics in operating system (OS) security, including OS-level security mechanisms and policies in investigating and defending against real-world attacks on computer systems, such as self-propagating worms and large-scale botnets. Basic OS security techniques, such as logging, system call auditing, and memory protection, will be discussed. Recent advanced techniques, such as honeypots and honeyfarms, system randomization, vulnerability fingerprinting, and virtualization, will also be introduced. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: ISA 562.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
ISA 674: Intrusion Detection. 3 credits.
Studies methodologies, techniques, and tools for monitoring events in computer system or network, with the objective of preventing and detecting unwanted process activity and recovering from malicious behavior. Topics include types of threats, host-based and network-based information sources, vulnerability analysis, denial of service, deploying and managing intrusion detection systems, passive versus active responses, and designing recovery solutions. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: ((ISA 564B- or 564XS) and (ISA 656B- or 656XS)).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
ISA 681: Secure Software Design and Programming. 3 credits.
Theory and practice of software security, focusing in particular on some common software security risks, including buffer overflows, race conditions and random number generation, and the identification of potential threats and vulnerabilities early in the design cycle. Emphasis is on methodologies and tools for identifying and eliminating security vulnerabilities, techniques to prove the absence of vulnerabilities, and ways to avoid security holes in new software and on essential guidelines for building secure software. Explores how to design software with security in mind from the ground up and integrate analysis and risk management throughout the software life cycle. Offered by Computer Science. May not be repeated for credit. Equivalent to SWE 681.
Recommended Prerequisite: SWE 619 or CS 531
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
ISA 697: Topics in Information Security. 1-6 credits.
Special topics in information security and assurance not occurring in regular ISA sequence. Notes: May be repeated for credit when distinct offerings of course differ in subject. Offered by Computer Science. May be repeated within the term for a maximum 12 credits.
Specialized Designation: Topic Varies
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.

700 Level Courses

ISA 763: Security Protocol Analysis. 3 credits.
Teaches how to design, understand, verify, and test communication protocols so they meet their objectives of recognizing the basic components of a communication protocol; specifying security properties accurately; modeling actors and mal-actors against which a protocol ought to be secure; discussing verification and testing methods and their limitations by ensuring that the specified protocol satisfies stated security objectives in the presence of specified mal-actions; designing a medium-size protocol that satisfies a specification of requirement; using existing tools to specify and verify security protocols; and testing protocols for satisfying their security objectives. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: ISA 656B- or 656XS.
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
ISA 764: Security Experimentation. 3 credits.
Teaches how to conduct security experimentations and empirically demonstrate, validate, and evaluate security vulnerabilities, exploits, and defense mechanisms. By the end of the course, students will gain a deeper understanding and first-hand experience on capturing packets of interests from both wired and wireless networks, and replying interested network flows and how shellcode various buffer overflows attacks, worms, spyware, rootkits, botnets, anonymous communication and traceback mechanisms work. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: ((ISA 564B- or 564XS) and (ISA 656B- or 656XS)).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
ISA 785: Research in Digital Forensics. 3 credits.
Focuses on research-related aspects of digital forensics including open problems in digital forensics, countermeasures against digital forensics, and fundamental and practical limitations of current digital forensics techniques. Also covers currently established techniques and tools for digital forensics as well as common legal and ethical issues. Offered by Computer Science. May not be repeated for credit.
Registration Restrictions:

Required Prerequisites: (((ISA 562B- or 562XS) and (INFS 612B- or 612XS)) or (CS 555B- or 555XS)).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
ISA 796: Directed Readings in Information Security. 3 credits.
Research and analysis of contemporary problem in information security. Must be supervised by a fulltime faculty member or affiliate faculty member of the Computer Science department. To register, students must complete an individualized section form available on the department’s website. The form must include course outcomes, course content, and a reading list. A written report is required. Must be approved by the faculty member, MS-ISA program director, and chair or associate chair. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Recommended Prerequisite: Graduate standing in information security and assurance, with at least 12 prior credits in MS.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Research
Grading:
This course is graded on the Graduate Special scale.
ISA 797: Advanced Topics in Information Security. 3 credits.
Special advanced topics not occurring in regular ISA sequence. Notes: May be repeated for credit when distinct offerings of course differ in subject. Offered by Computer Science. May be repeated within the term for a maximum 9 credits.
Specialized Designation: Topic Varies
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
ISA 798: Research Project. 3 credits.
Master's student undertake a project using knowledge gained in prior MS courses. Topic chosen under the guidance of a member of the Graduate Faculty of the department, resulting in written technical report. Prior approval is required by the faculty sponsor. To register, student must complete a Master's Project form available from the department. It must be signed by the faculty sponsor and approved by the department chair or delegate. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Recommended Prerequisite: 18 credits applicable toward MS.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Thesis
Grading:
This course is graded on the Satisfactory/No Credit scale.
ISA 799: MS Thesis. 1-6 credits.
Research project completed under supervision of a member of the Graduate Faculty of the department, resulting in a technical report accepted by three-member faculty committee. Thesis must be defended in an oral presentation. To register, students must complete thesis form available from the department. It must be signed by all committee members and the department chair or delegate. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Recommended Prerequisite: 18 hours of credit applicable toward the MS degree.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Thesis
Grading:
This course is graded on the Satisfactory/No Credit scale.

800 Level Courses

ISA 862: Models for Computer Security. 3 credits.
This class will be focused on current research in Security with emphasis in Network and Software Security. Notes: May be repeated with change in topic. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Registration Restrictions:

Required Prerequisites: (ISA 562B- or 562XS).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate level students.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
ISA 863: Advanced Topics in Computer Security. 3 credits.
Current topics of advanced research. Content varies depending on faculty interests, research developments, and student demand. Requires substantial student participation. May include formal models for computer security, multilevel data models, multilevel database management system architectures, secure concurrency control protocols, distributed secure system architectures, integrity models and mechanisms, security policy, and requirements analysis. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Specialized Designation: Topic Varies
Registration Restrictions:

Required Prerequisites: (ISA 562B- or 562XS).
B- Requires minimum grade of B-.
XS Requires minimum grade of XS.

Enrollment is limited to Graduate level students.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.

Software Engineering (SWE)

200 Level Courses

SWE 205: Software Usability Analysis and Design. 3 credits.
Principles of user interface design. Concepts for objectively and quantitatively assessing the usability of software user interfaces. Outcomes include knowledge of quantitative engineering principles for designing usable software interfaces and an understanding that usability is more important than efficiency for almost all modern software projects, and often the primary factor that leads to product success. Major topics include cognitive models for human perceptions and needs, which are used as a basis for analytical and critical thinking about user interfaces; specific engineering principles for designing usable menus, forms, command languages, web sites, graphical user interfaces and web-based user interfaces. Assessments will include written analytical evaluations of existing user interfaces, exams, and HTML-based design projects. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (ENGH 100C or 100XS) or (ENGH 101C or 101XS) or HNRS 110C.
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.

300 Level Courses

SWE 301: Internship Preparation. 0 credits.
Preparation for Internship Educational Experience. Intended for, but not limited to, students planning internships in the Applied Computer Science Software Engineering Program. Internship employment opportunities. Basic interview skills. Techniques for applying academic knowledge to practical software development. Techniques for extracting knowledge from practical experience. Peer presentation from students who have completed internships. Offered by Computer Science. Limited to two attempts.
Recommended Prerequisite: Limited to ACS or CS majors with junior standing or permission of instructor.
Registration Restrictions:

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Satisfactory/No Credit scale.

400 Level Courses

SWE 401: Internship Reflection. 1 credit.
Reflection on Internship Educational Experience. Intended for, but not limited to, students completing internships in the Applied Computer Science Software Engineering Program. Analysis of techniques for applying academic knowledge to practical software development. Analysis of techniques for extracting knowledge from practical experience. Student presentations summarizing internships relating them to academic program goals. Offered by Computer Science. Limited to two attempts.
Recommended Prerequisite: Completion of internship.
Registration Restrictions:

Required Prerequisites: SWE 301 or 301XS.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Satisfactory/No Credit scale.
SWE 419: Object-Oriented Software Design and Implementation. 3 credits.
In-depth study of software design and implementation using a modern, object-oriented language with support for graphical user interfaces and complex data structures. Topics covered are specifications, design patterns, and abstraction techniques, including typing, access control, inheritance, and polymorphism. Students will learn the proper engineering use of techniques such as information hiding, classes, objects, inheritance, exception handling, event-based systems, and concurrency. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: ((CS 310C or 310XS) and (MATH 125C or 125XS)).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Enrollment is limited to students with a major in Applied Computer Science or Computer Science.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
SWE 432: Web Application Development. 3 credits.
A comprehensive introduction to the design and implementation of applications for the web, including client and server-side development. Exploration of principles for the design of web applications that are robust, scalable, and secure, that enable change and reuse, and that are usable for their intended purpose. Topics include client-server communication, asynchronous programming, persistence, security, web development tools, the document object model, templates and data-binding, interaction techniques, and site design for the web. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (MATH 125C or 125XS) and (CS 321C or 321XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
SWE 437: Software Testing and Maintenance. 3 credits.
Concepts and techniques for testing and modifying software in evolving environments. Topics include software testing at the unit, module, subsystem, and system levels; developer testing; automatic and manual techniques for generating test data; testing concurrent and distributed software; designing and implementing software to increase maintainability and reuse; evaluating software for change; and validating software changes. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (MATH 125C or 125XS) and (CS 310C or 310XS).
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.
SWE 443: Software Architectures. 3 credits.
Teaches how to design, understand, and evaluate software systems at an architectural level of abstraction. By end of course, students will be able to recognize major architectural styles in existing software systems, describe a system's architecture accurately, generate architectural alternatives to address a problem and choose from among them, design a medium-size software system that satisfies a specification of requirements, use existing tools to expedite software design, and evaluate the suitability of a given architecture in meeting a set of system requirements. Offered by Computer Science. Limited to two attempts.
Registration Restrictions:

Required Prerequisites: (CS 321C or 321XS) or CS 421C, SWE 321C or 421C.
C Requires minimum grade of C.
XS Requires minimum grade of XS.

Students with the terminated from CEC major attribute may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Undergraduate Regular scale.

500 Level Courses

SWE 510: Object-Oriented Programming in Java. 3 credits.
Introduces students to programming in the Java language. Topics include problem-solving methods and algorithm development, program structures, abstract data types, simple data and file structures and program development in a modular, object-oriented manner. Introductory use of OO language features, including data hiding, inheritance, polymorphism, and exception handling. Goals include design and development of Java classes and class type hierarchies. An introduction to Java servlets and applets is included. Emphasis on program development is reinforced through several programming projects. Notes: Credit cannot be applied to a graduate degree in the Volgenau School or the BS degree in computer science. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: Undergraduate courses or equivalent knowledge in programming in a high-level language.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.

600 Level Courses

SWE 619: Object-Oriented Software Specification and Construction. 3 credits.
In-depth study of software construction using modern, object-oriented language with support for graphical user interfaces and complex data structures. Specifications, design patterns, and abstraction techniques, including procedural, data, iteration, type, and polymorphic. Information hiding, classes, objects, and inheritance. Exception handling, event-based systems, and concurrency. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE foundation courses or equivalent.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 620: Software Requirements Analysis and Specification. 3 credits.
In-depth study of object-oriented requirements modeling, including use case modeling, static modeling and dynamic modeling with Unified Modeling Language (UML) notation. Students participate in group project on software requirements and specification using modern method. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE foundation courses or equivalent.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 621: Software Design and Architecture. 3 credits.
An examination of the methods, processes, and notations for working with architecture and design in software. Exploration of design as the enumeration, evaluation, and selection of design alternatives to achieve quality attributes. Surveys perspectives on design from risk minimization, domain modeling, abstraction, architectural styles, design patterns, and reuse. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE foundation courses or equivalent.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 622: Distributed Software Engineering. 3 credits.
Hands-on introduction to techniques and programming interfaces for distributed software engineering. Networking protocols at several layers. Construction of distributed and concurrent software using network protocol services. Applications of Internet and web-based software. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE foundation courses or equivalent.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 625: Software Project Management. 3 credits.
Lifecycle and process models; process metrics; planning for a software project; mechanisms for monitoring and controlling schedule, budget, quality, and productivity; and leadership, motivation, and team building. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE foundation courses or equivalent.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 626: Software Project Laboratory. 3 credits.
Covers requirements analysis, design, implementation, and management of software development project. Students work in teams to develop or modify software product, applying sound principles of software engineering. Uses both industrial and academic standards to assess quality of work products. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE 619,620, and 621; or permission of instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 631: Software Design Patterns. 3 credits.
Principles of software design patterns. Design patterns as solutions to recurring design problems. Categories of software design patterns; structure patterns, communication patterns. Design patterns in software architectures. Designing software applications using design patterns. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE 621.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 632: User Interface Design and Development. 3 credits.
Principles of user interface design, development, and programming. Includes user psychology and cognitive science, menu system design, command language design, icon and window design, graphical user interfaces, web-based user interfaces. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE 621 or CS 531, or permission of instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 637: Software Testing. 3 credits.
Students learn to test software effectively. Programmers learn practical ways to design high quality tests during all phases of software development. Students learn the theory behind criteria-based test design and to apply that theory in practice. Topics include test design, test automation, test coverage criteria, and how to test software in cutting-edge software development environments. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE 619 or CS 530, or permission of instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 642: Software Engineering for the World Wide Web. 3 credits.
Detailed study of engineering methods and technologies for building highly interactive web sites for e-commerce and other web-based applications. Presents engineering principles for building web sites that exhibit high reliability, usability, security, availability, scalability, and maintainability. Teaches methods such as client-server programming, component-based software development, middleware, and reusable components. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE 619 or CS 531, or permission of instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 645: Component-Based Software Development. 3 credits.
Introduces concepts and foundations of software component and component-based software. Detailed study of engineering principles of modeling, designing, implementing, testing, and deploying component-based software. Also explores state-of-the-art component technologies. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE 619 or CS 531, or permission of instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 660: Software Engineering for Real-Time Embedded Systems. 3 credits.
This course teaches software engineering for real-time, embedded, and cyber-physical systems. Students will develop real-time, concurrent software applications on embedded hardware. Topics include development environments, embedded computer architectures, real-time and embedded operating systems, real-time scheduling, and multi-tasking development with priority preemption. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE 619 or CS 531 or COMP 513
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 681: Secure Software Design and Programming. 3 credits.
Theory and practice of software security, focusing in particular on some common software security risks, including buffer overflows, race conditions and random number generation, and the identification of potential threats and vulnerabilities early in the design cycle. Emphasis is on methodologies and tools for identifying and eliminating security vulnerabilities, techniques to prove the absence of vulnerabilities, and ways to avoid security holes in new software and on essential guidelines for building secure software. Explores how to design software with security in mind from the ground up and integrate analysis and risk management throughout the software life cycle. Offered by Computer Science. May not be repeated for credit. Equivalent to ISA 681.
Recommended Prerequisite: SWE 619 or CS 531
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 699: Special Topics in Software Engineering. 3 credits.
Special topics not occurring in regular SWE sequence. Notes: May be repeated for credit when semester topic is different. Offered by Computer Science. May be repeated within the term.
Specialized Designation: Topic Varies
Recommended Prerequisite: Completion of at least two core courses and permission of the instructor.
Registration Restrictions:

Enrollment limited to students with a class of Advanced to Candidacy, Graduate, Junior Plus, Non-Degree or Senior Plus.

Enrollment is limited to Graduate, Non-Degree or Undergraduate level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.

700 Level Courses

SWE 721: Reusable Software Architectures. 3 credits.
Investigates software concepts that promote reuse of software architectures. Studies influence of object technology on software design and reuse. Investigates domain modeling methods, which model the application domain as a software product family from which target systems can be configured. Covers reusable software patterns including architecture patterns and design patterns, software components, and object-oriented frameworks. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE 621.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 724: Program Analysis for Software Testing. 3 credits.
Different methods for analyzing software, primarily for purpose of testing. Analysis techniques, algorithms, tools, and applications. Goals are to explore current research issues, learn how to build analysis tools, and understand how these techniques can be applied to software-related activities such as maintenance, reuse and optimization. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: A compiler class (e.g. CS 540) OR a testing class (e.g. SWE 637) or permission of the instructor.
Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 737: Advanced Software Testing. 3 credits.
Cutting edge concepts and techniques in software testing. An in-depth study of existing approaches to testing software as well as development of new approaches. Applications of existing concepts and techniques to new technologies. Advanced MS students learn in-depth knowledge for how to apply testing in difficult and challenging real-world scenarios. PhD students learn current research trends, both theoretical and practical. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE 637.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 760: Software Analysis and Design of Real-Time Systems. 3 credits.
Background for students who want to conduct research in software engineering of real-time systems. Provides understanding of key real-time software system analysis, design concepts and methods, and how they are used in developing large-scale, real-time software systems. Also explores potential impact of emerging technologies. Includes term project in design and analysis of complex, real-time software system. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE 621.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 763: Software Engineering Experimentation. 3 credits.
Detailed study of scientific process, particularly using experimental method. Examines how empirical studies are carried out in software engineering. Reviews distinction between analytical techniques and empirical techniques. Other topics include experimentation required in software engineering, problems that can be solved using experimentation, methods used to control variables and eliminate bias in experimentation, and analysis and presentation of empirical data for decision making. Offered by Computer Science. May not be repeated for credit.
Recommended Prerequisite: SWE 621, or permission of instructor.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 795: Advanced Topics in Software Engineering. 3 credits.
Advanced topics not occurring in existing courses. Topics normally assume knowledge in one or more existing MS SWE courses. Notes: Repeatable within degree for credit when subject differs. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Specialized Designation: Topic Varies
Recommended Prerequisite: 12 credits applicable toward MS.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Schedule Type: Lecture
Grading:
This course is graded on the Graduate Regular scale.
SWE 796: Directed Readings in Software Engineering. 3 credits.
Analysis and investigation of a contemporary problem in software engineering. Must be supervised by a fulltime faculty member or affiliate faculty member of the Computer Science department. To register, students must complete an individualized section form available on the department’s website. The form must include course outcomes, course content, and a reading list. A written report is required. Must be approved by the faculty member, MS-SWE program director, and chair or associate chair. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Research
Grading:
This course is graded on the Graduate Regular scale.
SWE 798: Research Project. 3 credits.
Master's student undertake a project using knowledge gained in prior MS courses. Topic chosen under the guidance of a member of the Graduate Faculty of the department, resulting in written technical report. Prior approval is required by the faculty sponsor. To register, student must complete a Master's Project form available from the department. It must be signed by the faculty sponsor and approved by the department chair or delegate. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Recommended Prerequisite: 18 credits applicable towards MS degree.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Thesis
Grading:
This course is graded on the Satisfactory/No Credit scale.
SWE 799: MS Thesis. 1-6 credits.
Research project completed under supervision of a member of the Graduate Faculty of the department, resulting in a technical report accepted by three-member faculty committee. Thesis must be defended in an oral presentation. To register, students must complete thesis form available from the department. It must be signed by all committee members and the department chair or delegate. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Recommended Prerequisite: 18 hours of credit applicable toward the MS degree.
Registration Restrictions:

Enrollment is limited to Graduate or Non-Degree level students.

Students in a Non-Degree Undergraduate degree may not enroll.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Thesis
Grading:
This course is graded on the Satisfactory/No Credit scale.

800 Level Courses

SWE 821: Software Engineering Seminar. 3 credits.
Study of application of software engineering principles, design methods, and support tools through real-life problems extracted from faculty and industry projects. Notes: May be repeated with change in topic. Offered by Computer Science. May be repeated within the degree for a maximum 6 credits.
Recommended Prerequisite: SWE 621
Registration Restrictions:

Enrollment is limited to Graduate level students.

Enrollment limited to students in the Engineering Computing college.

Schedule Type: Seminar
Grading:
This course is graded on the Graduate Regular scale.