- CS401 - Computer Architecture
Review of logical circuit design. Hardware description languages. Algorithms for high-speed addition, multiplication and division. Pipelined arithmetic. Implementation and control issues using PLA's and microprogramming control. Cache and main memory design. Input/Output. Introduction to interconnection networks and multiprocessor organization. Prerequisite: CS 320 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS404 - Autonomous Mobile Robots
This course is a comprehensive introduction to modern robotics with an emphasis on autonomous mobile robotics. Fundamentals of sensors and actuators as well as algorithms for top level control are discussed. Multi-robotics and human-robot interaction issues are explored. A group project is an integral part of this course. Prerequisite: CS 330 with a grade of C or better or graduate standing. CS fee: $125.
Credit Hours: 3
- CS406 - Basic Linux System Administration
This course will be an introduction to the administration of Linux systems, with emphasis on security for networked systems. Topics to be covered include: installation and configuration of Linux distributions, typical maintenance activities, and security measures for networked systems. Students will have access to lab machines for hands on practice. Prerequisite: CS 306 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS407 - Advanced Linux/UNIX Programming
This course builds on the knowledge gained in CS 306, to prepare students to do advanced development on Linux/UNIX platforms. The topics studied are critical for achieving high performance in large-scale, high-load networked software systems. These topics include development techniques such as profiling, concurrent programming and synchronization, network programming for high-load servers, advanced I/O alternatives, and IPC such as shared memory. The course will involve the study of code from Open Source projects like Apache and Nginx. The focus will be on the C language, but other languages will also be considered. Students must complete a significant network software project. Prerequisites: CS 306 and CS 335, with grades of C or better, or graduate standing with C language and Linux system programming experience.
Credit Hours: 3
- CS408 - Applied Cryptography
This course is a comprehensive introduction to modern cryptography, with an emphasis on the application and implementation of various techniques for achieving message confidentiality, integrity, authentication and non-repudiation. Applications to Internet security and electronic commerce will be discussed. All background mathematics will be covered in the course. Prerequisite: CS 330 with a grade of C or better and MATH 221 or graduate standing.
Credit Hours: 3
- CS409 - Ethical Hacking
This course will explore the various means that an intruder has available to gain access to computer resources. We will investigate weaknesses by discussing the theoretical background, and whenever possible, actually performing the attack. We will then discuss methods to prevent/reduce the vulnerabilities. This course is targeted specifically for Certified Ethical Hacking (CEH) exam candidates, matching the CEH exam objectives with the effective and popular Cert Guide method of study. Prerequisite: CS 202 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS410 - Computer Security
A broad overview of the principles, mechanisms, and implementations of computer security. Topics include cryptography, access control, software security and malicious code, trusted systems, network security and electronic commerce, audit and monitoring, risk management and disaster recovery, military security and information warfare, physical security, privacy and copyrights, and legal issues. Prerequisite: CS 306 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS412 - Programming Distributed Applications
This course uses advanced features of the Java programming language to develop networked, distributed, and web-based applications. Topics covered include, but are not limited to, sockets, datagrams, the Java security model, threads, multi-tier architectures, Java RMI, Java database connectivity, and Java-based mobile agents. Prerequisite: CS 306 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS413 - Digital Forensics
Cybersecurity has become a ubiquitous concern well beyond finding solutions to post-mortem threat analysis. The course provides a broad overview of security objectives and will cover fundamentals in confidentiality, integrity, and availability. Lectures will offer a broad range of topics on digital forensics. Students will be trained for an investigation mindset. Contemporary tools and techniques for digital forensics and investigations are reviewed. Security for stationary and mobile platforms are foci of current course in both forensic and active modes. There will be multiple hands-on homework and laboratories as well as a practical project as an integral part of this course. Prerequisite: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS415 - Network Forensics
With the proliferation of wireless networks, security is at odds with privacy and integrity. The course provides a broad overview of security strategies for wireless networks. Topics will range from intrusion detection and network security protocols to collaborative computing. Contemporary tools and techniques for wireless network security are reviewed. A hands-on project will be an integral part of this course. Prerequisite: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS416 - Compiler Construction
Introduction to compiler construction. Design of a simple complete compiler, including lexical analysis, syntactical analysis, type checking, and code generation. Prerequisite: CS 306 and 311 each with a grade of C or better or graduate standing.
Credit Hours: 3
- CS420 - Distributed Systems
A top-down approach addressing the issues to be resolved in the design of distributed systems. Concepts and existing approaches are described using a variety of methods including case studies, abstract models, algorithms and implementation exercises. Prerequisite: CS 335 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS425 - Principles of Virtualization and Cloud Computing
Cloud Computing (CC) represents a recent major strategic shift in computing and Information Technology. This course explores fundamental principles, foundational technologies, architecture, design, and business values of CC. Understanding will be reinforced through multiple angles including: analysis of real world case studies, hands-on projects and in-depth study of research developments. Prerequisites: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS430 - Database Systems
The course concentrates on the relational model, database design, and database programming. Topics include relational model, relational algebra, SQL, constraints and integrity, transaction support, concurrency control, database design, normalization, backup, recovery, and security. A comprehensive product-like project is an integral part of the course. Prerequisite: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS431 - Cyber-Physical Systems
The goal of this course is to introduce and develop an understanding of the computing and communication for Internet of Things as a subset of Cyber-Physical systems. Connectivity among devices in our daily lives such as WiFi-enabled thermostats, smart grids, and driverless cars is ushering in an era of sociality that transcends human social networks to machine to machine networks. Prerequisites: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS434 - Learning From Data
An introduction to classical machine learning theory and practical techniques. Topics to be covered include computational learning theory (VC theory), linear classification and regression models, SVMs and kernel methods, decision trees, the bias-variance tradeoff, overfitting, and regularization. Prerequisites: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS435 - Software Engineering
Principles, practices and methodology for development of large software systems. Object-oriented principles, design notations, design patterns and coping with changing requirements in the software process. Experiences with modern development tools and methodologies. A team project is an integral part of this course. Prerequisite: CS 330 with a grade of C or better or graduate standing; CS 306 with a grade of C or better recommended.
Credit Hours: 3
- CS436 - Artificial Intelligence I
Search and heuristics, problem reduction. Predicate calculus, automated theorem proving. Knowledge representation. Applications of artificial intelligence. Parallel processing in artificial intelligence. Prerequisite: CS 311 and 330 each with a grade of C or better or graduate standing.
Credit Hours: 3
- CS437 - Machine Learning and Soft Computing
An introduction to the field of machine learning and soft computing. It covers rule-based expert systems, fuzzy expert systems, artificial neural networks, evolutionary computation, and hybrid systems. Students will develop rule-based expert systems, design a fuzzy system, explore artificial neural networks, and implement genetic algorithms. Prerequisite: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS438 - Bioinformatics Algorithms
This course is an introductory course on bioinformatics algorithms and the computational ideas that have driven them. The course includes discussions of different techniques that can be used to solve a large number of practical problems in biology. Prerequisite: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS440 - Computer Networks
Design and analysis of computer communication networks. Topics to be covered include queuing systems, data transmission, data link protocols, topological design, routing, flow control, security and privacy, and network performance evaluation. Prerequisite: CS 330 with a grade of C or better or graduate standing; CS 306 recommended.
Credit Hours: 3
- CS441 - Mobile and Wireless Computing
Concepts of mobile and wireless systems are presented. These concepts include, but are not limited to, Routing and Medium Access for Mobile Ad hoc and Wireless Sensor Networks, Mobile IP, Wireless LAN and IEEE 802.11. Hands-on group lab experience is an integral component in the course. Prerequisite: CS 330 with a grade of C or better, or graduate standing or consent of the instructor.
Credit Hours: 3
- CS447 - Introduction to Graph Theory
(Same as MATH 447) Graph theory is an area of mathematics which is fundamental to future problems such as computer security, parallel processing, the structure of the World Wide Web, traffic flow and scheduling problems. It also plays an increasingly important role within computer science. Topics include: trees, coverings, planarity, colorability, digraphs, depth-first and breadth-first searches. Prerequisite: MATH 349 with C or better.
Credit Hours: 3
- CS449 - Introduction to Combinatorics
(Same as MATH 449) This course will introduce the student to various basic topics in combinatorics that are widely used throughout applicable mathematics. Possible topics include: elementary counting techniques, pigeonhole principle, multinomial principle, inclusion and exclusion, recurrence relations, generating functions, partitions, designs, graphs, finite geometry, codes and cryptography. Prerequisite: MATH 349 with C or better.
Credit Hours: 3
- CS451 - Theory of Computing
The fundamental concepts of the theory of computation including finite state acceptors, formal grammars, Turing machines, and recursive functions. The relationship between grammars and machines with emphasis on regular expressions and context-free languages. Prerequisite: CS 311 and 330 each with a grade of C or better or graduate standing.
Credit Hours: 3
- CS455 - Advanced Algorithm Design and Analysis
An in-depth treatment of the design, analysis and complexity of algorithms with an emphasis on problem analysis and design techniques. Prerequisites: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS471 - Optimization Techniques
(Same as MATH 471) Introduction to algorithms for finding extreme values of nonlinear multivariable functions with or without constraints. Topics include: convex sets and functions; the arithmetic-geometric mean inequality; Taylor's theorem for multivariable functions; positive definite, negative definite, and indefinite matrices; iterative methods for unconstrained optimization. Prerequisite: MATH 221 and MATH 250 with C or better.
Credit Hours: 3
- CS472 - Linear Programming
(Same as MATH 472) Introduction to finding extreme values of linear functionals subject to linear constraints. Topics include: recognition, formulation, and solution of real problems via the simplex algorithm; development of the simplex algorithm; artificial variables; the dual problem and duality theorem; complementary slackness; sensitivity analysis; and selected applications of linear programming. Prerequisite: MATH 221 with C or better.
Credit Hours: 3
- CS475 - Numerical Analysis I
(Same as MATH 475) Introduction to theory & techniques for computation with digital computers. Topics include: solution of nonlinear equations; interpolation & approximation; solution of systems of linear equations; numerical integration. Students will use MATLAB to study the numerical performance of the algorithms introduced in the course. Prerequisites: MATH 221 and MATH 250 with C or better.
Credit Hours: 3
- CS480 - Computational Statistics II
This course utilizes computational and graphical approaches to solve statistical problems. A comprehensive coverage on modern and classical methods of statistical computing will be given. Case studies in various disciplines such as science, engineering and education will be discussed. Various topics such as numerical integration and simulation, optimization and maximum likelihood estimation, density estimation and smoothing as well as re-sampling will be presented. Students will be able to create graphical and numerical display based on their data analysis results using R programming language. Prerequisite: MATH 250 and CS 306 or CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS484 - User Interface Design and Development
Problems and processes in the design of highly usable systems. Understanding stakeholders, requirements, tasks, prototyping, evaluation, guidelines and design process and heuristics. Interactive software concepts and implementation considerations. A group project is an integral part of this course. Prerequisite: CS 306 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS485 - Computer Graphics
Principles and techniques of computer graphics. Interactive graphics software development using a modern graphics standard. Topics include: primitives, transforms, clipping, modeling, viewing, rendering, texture, animation and ray tracing. A group project is an integral part of this course. Prerequisite: CS 306 with a grade of C or better or graduate standing; MATH 150 and 221 are recommended.
Credit Hours: 3
- CS487 - Software Aspects of Game Development
This course focuses on software implementation and development aspects of game production including: software process, system architecture, frameworks, entity management and interaction design, game design, production and business issues as well as technical foundations in graphics modeling and rendering, collision detection, physics, artificial intelligence, and multiplayer techniques. Prerequisite: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS491 - Special Topics
Selected advanced topics from the various fields of computer science.
Credit Hours: 1-6
- CS492 - Special Problems
Individual projects involving independent work. Special approval needed from the instructor.
Credit Hours: 1-6
- CS493 - Seminar
Supervised study. Preparation and presentation of reports. Special approval needed from the instructor.
Credit Hours: 1-6
- CS501 - Advanced Computer Architecture
Hardware and software elements of multiprocessors, multicomputers, pipeline and array machines, data flow architecture and other state-of-the-art architectures. Design principles related to machine structures, interconnection networks, control software and hardware, data storage and access. Prerequisite: CS 401.
Credit Hours: 3
- CS503 - Fault-Tolerant Computing Systems
An introduction to different aspects of fault-tolerance in computing systems. Redundancy techniques with an emphasis on information redundancy, software fault-tolerance, coding techniques, algorithm-based fault-tolerance, fault-tolerant interconnection network architecture, DFT techniques, and quantitative evaluation methods. Prerequisite: CS 401.
Credit Hours: 3
- CS510 - Wireless and Network Security
Advanced security concepts of distributed systems and wireless networks are presented. Topics include IEEE 802.11 security, Wireless Encryption and Authentication, Key Management in Networks, Distributed Denial of Service Attacks, Routing Security, Intrusion Detection and Mobile Code Security. Prerequisite: CS 410 with a grade of C or better or consent of the instructor.
Credit Hours: 3
- CS511 - Formal Specification of Programming Languages
A survey of modeling techniques and Meta languages for the formal specification of the syntax and semantics of high-level programming languages. Prerequisite: CS 311.
Credit Hours: 3
- CS512 - Declarative Programming
An advanced level course on nonprocedural programming with emphasis on logic programming, pure functional programming, and the characteristics of the declarative style common to these two paradigms. Topics include logic programming, functional programming, implementation consideration for each along with current research topics in the areas. Prerequisite: CS 311.
Credit Hours: 3
- CS514 - Advanced Operating Systems
Rigorous treatment of advanced topics in operating systems. Multiprocessors and distributed operating systems. Highly concurrent machines. Performance analysis of memory management and scheduling algorithms. Recovery techniques in distributed computation. Security in operating systems. Prerequisite: CS 335 with a grade of C or better.
Credit Hours: 3
- CS515 - Computational Blockchain
This course introduces fundamentals of modern blockchain-based systems as well as cryptocurrency applications. Topics for discussion include consensus and distributed computing, smart contracts, privacy and secrecy, and other relevant computational platforms. Non-currency applications of blockchains, and legal and social implications will be outlined. Students will be required to develop a term project. Prerequisites: CS 330 with grade of C or better or CS 410 or graduate standing.
Credit Hours: 3
- CS516 - Advanced Compilers
A continuation of 416 including advanced topics in lexical and syntax analysis, error recovery, sematic analysis, code optimization and compiler compilers. Prerequisite: CS 416.
Credit Hours: 3
- CS520 - Advanced Topics in Parallel & Distributed Computing
An advanced treatment of parallel and distributed computing; review of hardware and software considerations for parallel computation; development and analysis of parallel algorithms (with particular attention to the communication and synchronization costs associated with parallel algorithms); effect of granularity on performance; a comparison of the parallel and distributed programming paradigms including a detailed study of the central features of each approach; software systems for distributed computing including exposure to one or more distributed programming environments; the direction of parallel computing as suggested by recent, high level parallel languages; parallelizing serial programs; parallelizing compilers; future directions of parallel and distributed computing systems. The course will include a student project. Prerequisite: CS 420.
Credit Hours: 3
- CS525 - Security Issues in Cloud Computing
This course offers a survey of security and privacy issues in Cloud Computing systems along with an overview of current best practices and available technologies. Threat model as well as practical applications of secure Cloud Computing are explored. Prerequisite: CS 410 or graduate standing.
Credit Hours: 3
- CS529 - Natural Language Processing
This course combines essential ideas from linguistics and artificial intelligence to for machine understanding and generation of language. We will cover language syntax, semantics, and pragmatics and discuss the applications such as information extraction, question answering and dialog systems. Machine learning is the main computational tool to solve NLP problems and will devote a part of the course to discussing ML approaches that model NLP tasks. Deep Neural Networks and their ability in learning representations are also part of our approach to NLP problems. We will discuss learning representations and learn about transformer-based architectures that help in learning rich representations. This course is suitable for students who are willing and able to learn abstract concepts, complete programming assignments, develop a project, and produce a term paper. Prerequisite: CS 330 with a grade of C or better.
Credit Hours: 3
- CS530 - Advanced Database Systems
A detailed treatment of advanced topics in data base systems including, but not limited or restricted to, relational database theory, query optimization, recovery techniques, concurrency control, distributed database systems, security and integrity and database machines. Prerequisite: CS 430.
Credit Hours: 3
- CS531 - Security in Cyber-Physical Systems
The course covers introductory topics in cyber-physical systems security. The goal is to expose students to fundamental security primitives specific to cyber-physical systems and to apply them to a broad range of current and future security challenges. Various tools and techniques used by hackers to compromise computer systems or otherwise interfere with normal operations are explored using tools that are unique to interacting with cyber-physical systems. Restricted to graduate standing or consent of the instructor.
Credit Hours: 3
- CS532 - Topics in Information Systems
A detailed study of two or three topics relevant to information systems. Topics may include but are not limited to sorting, searching, information retrieval and automatic text processing, database security and encryption, distributed databases and data communication. Prerequisite: CS 430. Special approval needed from the instructor.
Credit Hours: 3-6
- CS533 - Data Mining and Big Data Analysis
This course provides a series of comprehensive and in-depth lectures on the core techniques in data mining and knowledge discovery; addresses the unique issues of big data; and discusses potential applications of data mining particularly on big data analysis. Major topics include: data preparation, association mining, classification (and prediction), clustering, characteristics and challenges of big data, and strategies of big data mining and analysis. Prerequisites: CS 330 and CS 430 with grades of C or better or consent of instructor.
Credit Hours: 3
- CS534 - Big Data Management and Analytics
This course provides comprehensive and in-depth discussions of big data management and analytics. Main subjects include computation and programming models, management and analytics algorithms, and platforms/frameworks especially designed for big data. The objective of this course is to equip students with the ability to understand, use, and build big data management and analytics systems or tools. Prerequisites: CS 430 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS535 - Advanced Machine Learning
The purpose of this course is for students to acquire in-depth knowledge of advanced aspects of machine learning. This course will cover topics including classification, clustering, the foundation of deep learning, convolutional Neural Networks, recurrent Neural Networks, and some other advanced topics-deep reinforcement learning and deep generative models. Students will learn the foundations of machine learning, deep learning, and develop skills for performing research to advance the state of knowledge in machine learning. Prerequisites: CS 434 or CS 437 with a grade of C or better. Concurrent enrollment in CS 434 or CS 437 is allowed.
Credit Hours: 3
- CS536 - Artificial Intelligence II
Theorem proving, the Resolution Principle, strategies, and achievements. Program verification. Natural language processing. Other selected topics. Prerequisite: CS 436.
Credit Hours: 3
- CS537 - Advanced Topics in Expert Systems
This course is designed to provide students with advanced topics in expert systems theory. Topics covered include: knowledge representation, methods of inference, reasoning under uncertainty, and inexact reasoning (fuzzy logic). A practical introduction to expert systems programming serves to reinforce and clarify the theoretical concepts. Prerequisite: CS 330 or consent of instructor.
Credit Hours: 3
- CS538 - Game Theory in Networks
Game theoretic concepts apply whenever actions of several players are interdependent. This course will provide an introduction to classic game theory and strategic thinking including dominance, Nash equilibrium, and stability. Social choice, social learning, and online mechanism design are then discussed. We will examine how game theoretic concepts can be used in developing reasoning strategies, i.e., algorithms. Application of game theoretic framework to telecommunication and human networks is an integral part of this course. Restricted to graduate standing or consent of instructor.
Credit Hours: 3
- CS539 - Agents and Multiagent Systems
This is an advanced treatment of fundamental concepts in the design of intelligent autonomous agents and agent systems. Classic agent theories, architectures, algorithms, and languages are discussed. An agent-based project is an integral part of this course. Restricted to graduate standing or consent of instructor.
Credit Hours: 3
- CS540 - Advanced Computer Networks
Topics include routing protocols used in internet; data compression techniques; telecommunication systems - its services, architecture and protocols; high speed networks; routing protocols in mobile ad-hoc networks; and a detailed performance analysis of different window flow control and congestion control mechanisms using queuing theory. Prerequisite: CS 440 with a grade of C or better, or consent of the instructor.
Credit Hours: 3
- CS553 - Formal Languages and Automata
The Chomsky hierarchy of formal grammars and the corresponding classes of automata. Turing machines and basic concepts of computability. Recursive and recursively enumerable languages. Closure properties. Undecidable problems about Turing machines and context-free languages. Deterministic context-free languages and the construction of LR parsers. Prerequisite: CS 451.
Credit Hours: 3
- CS555 - Computability and Complexity
Turing machines and other models of computation. Computable functions. Church's thesis. Solvable and unsolvable problems. Introduction to complexity theory including the classes P and NP. Polynomial time approximation algorithms for NP-complete problems. Prerequisite: CS 451.
Credit Hours: 3
- CS572 - Advanced Topics in Numerical Analysis
(Same as MATH 572) Selected advanced topics in Numerical Analysis chosen from such areas as: approximation theory; spline theory; special functions; wavelets; numerical solution of initial value problems; numerical solution of boundary value problems; numerical linear algebra; numerical methods of optimization; and functional analytic methods. Special approval needed from the instructor.
Credit Hours: 1-12
- CS585 - Advanced Topics in Computer Graphics
Study of computer graphics for realistic image synthesis. Object modeling and associated date structures. Advanced rendering techniques such as raytracing and radiosity. Efficiency considerations. Image composition and compression. Current advances and research problems in realistic computer graphics. Prerequisite: CS 485.
Credit Hours: 3
- CS586 - Pattern Recognition
An introduction to the area of pattern recognition and data science. This course will cover basic and advanced theories, algorithms, and practical solutions of statistical pattern recognition. It covers bayesian learning, parametric and non-parametric learning, data clustering, component analysis, boosting techniques, sequential data, reinforcement learning, and deep learning with neural networks.
Credit Hours: 3
- CS590 - Readings
Supervised readings in selected subjects. Graded S/U only. Special approval needed from the instructor.
Credit Hours: 1-6
- CS591 - Special Topics
Selected advanced topics from the various fields of computer science. Repeatable on different topics toward degree credit.
Credit Hours: 1-3
- CS593 - Seminar
Preparation and presentation of reports. Graded S/U only. Special approval needed from the instructor.
Credit Hours: 1-4
- CS598 - Graduate Project
A practical exercise in the design, implementation, documentation and deployment of a project. A project may be completed through internship, work/study, or a supervised project. For Ph.D. students only, an internship could include face-to-face or online teaching.
Credit Hours: 3-9
- CS599 - Thesis
Special approval needed from the instructor.
Credit Hours: 3-9
- CS600 - Doctoral Dissertation
Dissertation research. Hours and credit to be arranged by the student's academic advisor. Graded S/U only. Restricted to admission to Ph.D. in computer science program.
Credit Hours: 1-9
- CS601 - Continuing Enrollment
For those graduate students who have not finished their degree programs and who are in the process of working on their dissertation, thesis, or graduate project. The student must have completed a minimum of 24 hours of dissertation research, or the minimum thesis or graduate project hours before being eligible to register for this course. Concurrent enrollment in any other course is not permitted. Graded S/U or DEF only.
Credit Hours: 1