Graduate Courses

Definition of Prefixes

 

CAP – Computer Applications
CDA – Computer Design/Architecture
CEN – Computer Engineering Software
CGS – Computer General Studies
CIS – Computer and Information Systems (special topics)
CNT – Computer Networks
COP – Computer Programming (languages, data structures, software systems, operating systems, compiling)
COT – Computer Theory

 

Special Course Offerings

There are various special courses offered every term. Special topics courses may evolve into regularly offered courses if they are successful, but they may also be once-only offerings. The latter is especially true if the enrollment of the first offering is low.

5000 Level

CAP 5137. Software Reverse Engineering and Malware Analysis (3). Prerequisite: CDA 3100. This course covers fundamental problems, principles, and techniques in software reverse engineering of binaries including static analysis techniques, disassembly algorithms, dynamic analysis techniques, automated static and dynamic analysis techniques, malware analysis techniques, anti-analysis techniques, and malware obfuscation and packing techniques; many of the techniques will be demonstrated and practiced using IDA. The course also involves research opportunities to analyze new malware samples and firmwares and develop new analysis tools.

CAP 5540. Bioinformatics: Sequence Analysis (3). This is an interdisciplinary course between computer science and biology. Students do not have the prior knowledge of the algorithms and biology for taking this course. All algorithms and biology will be covered from scratch.

CAP 5605. Artificial Intelligence (3). Prerequisite: COP 4530. This course is an introduction, representing knowledge, controlling attention, exploiting constraints, basic LISP programming, basic graph searching methods, game-playing and dealing with adversaries, understanding vision, theorem proving by computer, computer programs utilizing artificial intelligence techniques.

CAP 5619. Deep and Reinforcement Learning Fundamentals (3). Prerequisite: Senior or grad standing in science or engineering; or instructor permission. Requires some familiarity with basic concepts in linear algebra and probability theory, some basic knowledge of algorithm design, and programming experience with Python. This course covers fundamental principles and techniques in deep and reinforcement learning, as well as convolutional neural networks, recurrent and recursive neural networks, backpropagation algorithms, regularization and optimization techniques for training such networks, dynamic programming, Monte Carlo, and temporal difference, and function approximation reinforcement learning algorithms, and applications of deep and reinforcement learning. The course also covers active research topics in deep and reinforcement learning areas.

CAP 5638. Pattern Recognition (3). Prerequisites: Knowledge of probability and at least one programming language. This course explores applications of mathematical tools, in particular, probabilistic, algebraic, and linguistic tools, to problems in pattern recognition and classification. Feature selection procedures, syntactic pattern recognition. Applications of fuzzy set theory to pattern recognition and classification.

CAP 5726. Introduction to Computer Graphics (3). Prerequisite: COP 4530. This course covers fundamental principles and algorithms underlying computer graphics, and also provides a brief introduction to openGL. The course is intended for computer-science graduate students who are interested in computer-graphics related careers or in learning and applying computer-graphics techniques.

CAP 5768. Introduction to Data Science (3). Prerequisite: Graduate standing in science or engineering, or instructor permission. Students should be familiar with basic linear algebra concepts, probability theory, algorithm designs, and should have some Python or Java programming skills. This course is an introduction and overview of the fundamentals of Data Science. In this course, students become familiar with the Data Science process and how to use the methodologies and algorithms to approach real world problems.

CAP 5769. Advanced Data Science (3). Prerequisite: COP 4530 (Computer Science undergraduate students); or IDC 4104 and graduate standing in science or engineering majors; or instructor permission. Familiarity with basic linear algebra probability, algorithms, some Python or Java skills. This course is an intensive, advanced guide to Data Science. In this course, students become data scientists, capable of bother advanced data analysis and critical evaluation of the results.

CAP 5778. Advanced Data Mining (3). Prerequisite: Students should have working knowledge of probability theory, linear algebra and common data mining algorithms; and should have taken a course covering the fundamentals of data structures, algorithms, and generic programing. This course discusses advanced techniques for processing and mining large-scale digital data.

CAP 5795. Data Science for Smart Cities (3). Prerequisite: COP 3330. This course introduces foundations, principles, and applications of smart cities from a data science and computing perspective. It includes fundamental and state-of-the-art techniques for urban data processing, sensing, measurement, prediction, decision making, synthesis, and visualization. Different societal issues in innovative smart city applications are also introduced.

CDA 5125. Parallel and Distributed Systems (3). Prerequisite: COP 4610. This course introduces various systems aspects of parallel and distributed computing. Topics include parallel computer architectures, interconnects, parallel programming paradigms, compilation techniques, runtime libraries, performance evaluation, performance monitoring and tuning, as well as tools for parallel and distributed computing.

CDA 5155. Computer Architecture (3). Prerequisite: CDA 3101. This course focuses on computer system components; microprocessor and minicomputer architecture; stack computers; parallel computers; overlap and pipeline processing; networks and protocols; performance evaluation; architecture studies of selected systems.

CEN 5035. Software Engineering (3). Prerequisites: CEN 4021, COP 4020, and COP 4530. This course surveys software engineering and a detailed study of topics from requirements analysis and specification, programming methodology, software testing and validation, performance and design evaluation, software project management, and programming tools and standards.

CEN 5526. Wireless and Mobile Computing (3). This course introduces students to the design, implementation, and analysis of mobile systems and applications in various domains, including urban sensing, mobile healthcare monitoring, security and privacy, location-aware services, and vehicular computing. Integral to the course are the course projects in which students develop mobile applications on mobile devices. Through the course projects, students gain hands-on experience on building mobile applications and validate their research ideas in practice.

CGS 5267. Principles of Computer Organization (3). (S/U grade only). Corequisites: COP 3330 and MAD 2104. This course is for graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Basic computer structure and design, register transfer and micro operations, central processor organization, microprogramming, arithmetic processor design, input-output, memory organization, virtual memory, microprocessors and microcomputer architecture.

CGS 5268. Principles of Computer Organization II (3). (S/U grade only). Prerequisite: CDA 3100 or CGS 5267. This course explores fundamental concepts in processor design, including data path and control, pipelining, memory hierarchies, and I/O.

CGS 5409. Object-Oriented Programming in C++ for Non-majors (2). Prerequisite: COP 3014 or a comparable course in C or C++ Programming. Pre- or corequisite: COP 3353. In this course, topics include basics of C++ language, objects and classes, programming with classes, constructors and destructors, dynamic memory allocation, function and operator overloading, master classes, the class iostream, base and derived classes, and templates. May not be applied toward a degree in computer science.

CGS 5425. Object-Oriented Programming with Data Structures (3). (S/U grade only). Prerequisites: COP 3330 and MAD 2104. Pre- or corequisite: CDA 3100. This course is for graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Structured and object-oriented programming; invariant relations, stepwise refinement; text processing, internal sorting methods, linear tables, pointers and linked data structures, recursive programming and recursion elimination, sequential file processing; trees and graphs; program verification and running time analysis; application of concepts through programming projects.

CGS 5426. Programming Language Concepts (3). (S/U grade only). Corequisite: COP 4530. This course is for graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. A survey of programming languages and language features and an introduction to compilers. Languages to be discussed include FORTRAN, Pascal, Ada, PL/1, APL, and LISP. An oral presentation is required.

CGS 5427. Algorithm Design and Analysis (3). (S/U grade only). Prerequisites: COP 4530, MAD 3105, or MAD 3107. Corequisite: STA 4442, STA 4321 or STA 3032. This course is for graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Techniques for the analysis of computer algorithms; examples of well-designed algorithms and associated data structures; principles of algorithm design and application of programming projects.

CGS 5428. Relational Database Theory (3). (S/U grade only). Prerequisite: COP 3330 and MAD 2104. This course is for graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Basic file organization methods, indexed files, multi-key processing; architecture of database management systems; relational, hierarchical network, and semantic database models; normalization, distributed databases and file systems; practical use of a DBMS and the building of a database application.

CGS 5429. Introduction to Computer Theory (3). (S/U grade only). Prerequisite: MAD 3105. This course is for graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Regular expressions; regular, context-free, context-sensitive, and unrestricted grammars; foundations of language theory; finite automata and linear grammars; pushdown automata; Turing machines and non-solvability.

CGS 5466. Programming for Non-Majors (3). (S/U grade only). Prerequisite: MAC 1140. This course examines fundamental concepts and skills of programming in a high-level language. Flow of control topics such as sequence, selection, iteration, and subprograms are covered. Data structures topics such as arrays, strings, structs, and ADT lists and tables are also covered, along with algorithms using selection and iteration (decision making, finding maxima and minima, basic searching and sorting, simulation, etc). Good program design using a procedural paradigm, structure, and style are emphasized.

CGS 5765. Principles of Operating Systems (3). (S/U grade only). Prerequisites: CDA 3100 and COP 4530. This class if for graduate non-majors and graduate majors needing foundational work in computer science; credit may not be applied toward a graduate degree in computer science. Design principles of batch multi-programming and time-sharing operating systems. Linking, loading, input-output systems, interacting processes, storage management, process and resource control, file systems.

CGS 5935r. Special Topics in Computer Science for Non-Majors (1–3). (S/U grade only). Prerequisite: Instructor permission. This special-topics course is intended for non majors. Topics may vary. May be repeated within the same term, to a maximum of three semester hours.

CIS 5105. Computer Systems Performance Analysis (3). Prerequisite: COP 4610, MAD 3105, and STA 4442. This course covers empirical, simulation, and analytical methods to evaluate computer systems. The emphasis is on the empirical methods. Through the course project, the students gain experience measuring and evaluating a system using proper experimental design, metrics, workloads, and statistical analysis techniques.

CIS 5370. Computer Security (3). Prerequisites: COP 4610. In this course, topics include computer security threats and attacks, covert channels, trusted operating systems, access control, entity authentication, security policies, models of security, database security, administering security, physical security and TEMPEST, and brief introductions to network security and legal and ethical aspects of security. A research paper or project is required.

CIS 5371. Cryptography (3). Prerequisite: MAD 3105. This course addresses issues of modern cryptography covering theory and practice. Algorithms such as the RSA, ElGamal, and the Digital Signature Standard are covered in depth.

CIS 5379. Computer Security Fundamentals for Data Science (3). Prerequisite: CGS 3465. This course is an introduction to computer security, targeted towards graduate students in data science. This course covers a broad range of topics within computer security, such as cryptographic algorithms, security protocols, network authentication, and software security.

CIS 5627. Introduction to Offensive Computer Security (3). Prerequisite: CDA 3100. This course takes a hands-on approach to train students in the fundamental principles in computer security, including software security and web security. Its goal is to help students understand how various attacks work, what their fundamental causes are, how to defend against them, and how various defense mechanisms work. These key concepts are reinforced by various hands-on projects.

CIS 5900r. Directed Individual Study (1–9) (S/U grade only). May be repeated to a maximum of twenty-seven semester hours.

CIS 5915r. Graduate Software Project (1–12). (S/U grade only). A minimum of six semester hours of credit is required for project option MS students.

CIS 5920r. Colloquium (0-1). (S/U grade only). This course is for PhD CS students who will be required to attend a specified number of research colloquium offered by either faculty or students within the CS Department or visitors to the department. The main goal of this course is to help the PhD CS students fulfill in part the CS Department’s scholarly engagement requirement. May be repeated to a maximum of ten semester hours.

CIS 5930r. Selected Topics in Computer Science (1–3). May be repeated to a maximum of twelve semester hours.

CIS 5935. Introductory Seminar on Research (2). (S/U grade only). Prerequisite: Admission to the MS or PhD in Computer Science degree program. This seminar is a series of lectures given by faculty on the research being conducted by the Department of Computer Science. Other lectures include guidelines on the preparation of the doctoral portfolio, and on the use of library research tools.

CIS 5949r. Internship in Computer Science (0–9). (S/U grade only). Prerequisite: COP 4610. This internship is a field placement in an approved industry or government entity having a significant information technology or computer science component. May be taken for variable credit and repeated with departmental approval. Credits do not count towards graduation. Successful completion requires satisfactory job evaluation and demonstration of educational value of placement via a paper. May be repeated to a maximum of thirty-six semester hours.

CIS 5970r. Thesis (1–12). (S/U grade only). A minimum of nine semester hours of credit is required for thesis option MS students.

CNT 5412. Network Security, Active and Passive Defenses (3). Prerequisite: COP 4530. This course analyzes threats to computer networks, network vulnerabilities, techniques for strengthening passive defenses, tools for establishing an active network defense, and policies for enhancing forensic analysis of crimes and attacks on computer networks. Topics include private and public key cryptography, digital signatures, secret sharing, security protocols, formal methods for analyzing network security, electronic mail security, firewalls, intrusion detection, Internet privacy, and public key infrastructures. A research paper or project is required.

CNT 5505. Data and Computer Communications (3). Prerequisites: CDA 3100 and COP 4610. This course offers an overview of networks; data communication principles; data link layer; routing in packet switched networks; flow and congestion control; multiple access communication protocols; local area network protocols and standards; network interconnection; transport protocols; integrated services digital networks (narrowband and broadband); and switching techniques and fast packet switching

CNT 5529. Wireless Networking (3). This course is intended to cover a wide spectrum of topics on wireless networks, including the physical layer, the medium access control layer, and the network layer. The focus is on understanding, implementing, and experimenting with various wireless networking technologies in different layers with software.

CNT 5605. Computer and Network Administration (3). Prerequisite: COP 4610. This course covers UNIX user commands and shell programming. Also covered are problem solving and diagnostic methods, system startup and shutdown, device files and installing devices, disk drives and file systems, NFS, NIS, DNS, sendmail. Students also learn how to manage a WWW site, manage UNIX software applications, system security, and performance tuning. Legal and professional issues, ethics and policies are covered.

COP 5570. Concurrent, Parallel, and Distributed Programming (3). Prerequisite: COP 4610. This course covers UNIX and C standards, file I/O, file access and attributes, directories, the standard I/O library, systems administration files, the process environment, process control, process relationships, signals, terminal I/O, daemon processes, interprocess communication, and pseudo terminals.

COP 5611. Advanced Operating Systems (3). Prerequisites: CDA 3100, COP 4610, and introductory probability or statistics. This course focuses on design principles of batch, multiprogramming, and time-sharing systems; distributed systems; problems of concurrency.

COP 5621. Compiler Construction (3). Prerequisites: CDA 3100 and COT 4420. This course serves as an introduction to compiling, elements of language theory, syntax-directed translation, lexical analysis, symbol tables, LR(k) parsing, intermediate code generation, code optimization, code generation, error detection and recovery. There are a number of significant programming projects in this course.

COP 5659r. Mobile Programming (3). Prerequisite: COP 4530. This course teaches students how to program mobile devices. Students use event-based models to write and deploy an intent based application using a mobile computing software framework. May be repeated to a maximum of nine semester hours.

COP 5725. Database Systems (3). Prerequisites: COP 4610 and COP 4710. This course examines the use of a generalized database management system; characteristics of database systems; hierarchical, network, and relational models; file organizations.

COT 5310. Theory of Automata and Formal Languages (3). Prerequisites: COP 4020 and COT 4420. This course examines normal models of computation; automata; formal languages, their relationships, decidable and undecidable problems.

COT 5405. Advanced Algorithms (3). Prerequisite: COP 4530. This course covers algorithms, formal proofs of correctness, and time complexity analysis for network flow problems, approximation of NP hard combinatorial optimization problems, parallel algorithms, cache-aware algorithms, randomized algorithms, computational geometry, string algorithms, and other topics requiring advanced techniques for proof of correctness or time/space complexity analysis.

COT 5507. Analytic Methods in Computer Science (3). Prerequisite: COP 4530. This course teaches computer science students the fundamental discrete mathematics required for serious graduate work in algorithms and theoretical computer science. It specifically covers topics in recurrent problems, sums, integer functions, elementary number theory, binomial coefficients, special numbers, and generating functions.

COT 5715. Random Number Generation (3). Prerequisite: COP 4530. This course provides a graduate-level examination of all aspects of random number generation as used in simulation; specifically, the course concentrates on pseudorandom number generation and quasi-random number generation theory and practice.

ISC 5228. Monte Carlo Methods (3). Prerequisites: ISC 5305, MAC 2311, and MAC 2312. This course provides an introduction to probabilistic modeling and Monte Carlo methods (MCMs) suitable for graduate students in science, technology, and engineering. It provides an introduction to discrete event simulation, MCMs and their probabilistic foundations, and the application of MCMs to various fields. In particular, Markov chain MCMs are introduced, as are the application of MCMs to problems in linear algebra and the solution of partial differential equations.

6000 Level

CAP 6606. Fundamentals of Machine Learning Algorithms (3). Prerequisite: Familiarity with sets and logic, basic linear algebra, statistics, and calculus. Proficiency in a programming language, such as Python or C, at the level of COP 3014 or equivalent. This course is a rigorous introduction to the design and analysis of machine learning algorithms, including algorithms for supervised, unsupervised, and reinforcement learning tasks. Students explore how bounds on the generalization ability of a given algorithm are formulated and proven. A variety of classical machine learning algorithms are analyzed in depth.
COP 6622. Advanced Topics in Compilation (3). Prerequisite: COP 5621. This course covers attribute grammars and attribute grammar processors, formal methods of semantic analysis, generalized tree transformers, code selection, analysis and optimization, as well as error analysis and recovery.

CIS 6900r. Directed Individual Study (1–12). (S/U grade only). May be repeated to a maximum of twenty-four semester hours.

CIS 6930r. Advanced Topics in Computer Science (1–3). May be repeated to a maximum of twelve semester hours.

CIS 6980r. Dissertation (1–12). (S/U grade only).

 

8000 Level

CIS 8962r. Doctoral Qualifying Examination (0). (P/F grade only.) May be repeated twice at most.

CIS 8964. Preliminary Doctoral Examination (0). (P/F grade only.)

CIS 8966. Master’s Comprehensive Examination (0). (P/F grade only.)

CIS 8974. Master’s Project Defense (0). (P/F grade only.)

CIS 8976. Master’s Thesis Defense (0). (P/F grade only.)

CIS 8985. Dissertation Defense (0). (P/F grade only.)