CS-Computer Science
CS 499L. Senior Capstone Laboratory. 0 Hours.
Laboratory to accompany CS 499.
CS 500. Advanced Object-Oriented Programming in C++. 3 Hours.
Object-oriented programming concepts in C++ including templates, multiple inheritance, const correctness. Types, streams, containers, references, pointers, iterators, lambdas, operator overloading, evolution of C++ in C++11/14/17/20, using the Standard Template Library (STL). Current techniques and tools for software development in C++: unit testing, compilation, version control using git, numerical libraries, linters, and generating documentation from annotated C++ sources.
CS 500L. Advanced Object-Oriented Programming in C++ Lab. 0 Hours.
Laboratory to accompany CS500.
CS 501. Programming Paradigms. 3 Hours.
The course will introduce students to major programming paradigms, such as functional programming and logic programming, and their realization in programming languages. Students will solve problems using different paradigms and study the impact on program design and implementation. The course enables students to assess strengths and weaknesses of different languages for problem solving. Other topics to be covered include lexing, parsing, type systems, and ways to formalize a language's semantics.
CS 501L. Programming Paradigms Laboratory. 0 Hours.
Laboratory to accompany CS501.
CS 510. Database Application Development. 3 Hours.
Relational model of databases, structured query language, relational database design and application development, database normal forms, and security and integrity of databases.
CS 519. Investigating Online Crimes. 3 Hours.
Introduction to cyber-investigative techniques involving network forensics. Students will develop and learn to apply new programs and techniques to automatically evaluate digital evidence from network packet captures, emails, server logs, social media, darknets and online forums related to cyber crime cases from both a law enforcement and incident response perspective.
CS 520. Software Engineering. 3 Hours.
Design and implementation of large-scale software systems, software development life cycle, software requirements and specifications, software design and implementation, verification and validation, project management and team-oriented software development.
CS 520L. Software Engineering Laboratory. 0 Hours.
Laboratory to accompany CS520.
CS 522. Mobile Application Development. 3 Hours.
Fundamental concepts of mobile application development. Focused on native application development for Android and iOS. Understand application architecture and lifecycle best practices. UX considerations for mobile devices. Interact with device sensors. Compare native vs hybrid frameworks. This course has a laboratory component.
CS 522L. Mobile App Development Lab. 0 Hours.
Laboratory to accompany CS522.
CS 532. Systems Programming. 3 Hours.
Unix architecture and internals with an emphasis on Linux, shell scripting, distributions of Linux for various computing platforms including large and desktop computers, and embedded computing devices, introduction to the C programming language, systems programming in C covering signals and process control, networking, I/O, concurrency and synchronization, memory allocation, threads, debugging, library development and usage.
CS 532L. Systems Programming Lab. 0 Hours.
Laboratory to accompany CS532.
CS 533. Operating Systems. 3 Hours.
Internal design and operation of a modern operating system, including interrupt handling, process scheduling, memory management, virtual memory, demand paging, file space allocation, file and directory management, file/user security and file access methods. Computer Networks.
CS 533L. Operating Systems Laboratory. 0 Hours.
Laboratory to accompany CS 533.
CS 534. Networking. 3 Hours.
Underlying network technology, including IEEE 802.11. Interconnecting networks using bridges and routers. IP addresses and datagram formats. Static and dynamic routing algorithms. Control messages. Subnet and supernet extensions. UDP and TCP. File transfer protocols. E-mail and the World Wide Web. Network address translation and firewalls. Mandatory weekly Linux-based lab.
CS 534L. Networking Laboratory. 0 Hours.
Project oriented hands-on approach.
CS 537. Digital Media Forensics. 3 Hours.
Digital media forensics addresses all stored digital evidence types faced by cyber security professionals and computer forensics examiners. Students will learn to analyze character encoding, file formats, and digital media, including hard drives, smartphones and other portable devices, and cloud-hosted evidence, as well as disk acquisition, duplication and evidence preservation techniques and how to apply these techniques in typical criminal investigation scenarios.
CS 537L. Digital Media Forensics Lab. 0 Hours.
Laboratory to accompany CS 537.
CS 538. Exploring the Dark Web. 3 Hours.
The course provides an in-depth exploration of the advanced technical architecture, tools, and analysis techniques used in the Dark Web. Students will gain a comprehensive understanding of the underlying network and computing infrastructure of the Dark Web, explore various tools and technologies used by threat actors, and learn techniques for analyzing activities and transactions on the Dark Web and gathering intelligence through artificial intelligence tools.
CS 550. Automata and Formal Language Theory. 3 Hours.
Finite-state automata and regular expressions, context-free grammars and pushdown automata, turing machines, computability and decidability, and complexity classes.
CS 555. Probability & Statistics in Computer Science. 3 Hours.
Introduction to Probability and Statistics with applications in Computer Science. Counting, permutations and combinations. Probability, conditional probability, Bayes Theorem. Standard probability distributions. Measures of central tendency and dispersion. Central Limit Theorem. Regression and correlation. Hypothesis testing. Random number generation. Random algorithms. Estimating probabilities by simulation. Genetic algorithms.
CS 591. Special Topics. 1-3 Hour.
Selected Topics in Computer Science.
CS 592. Special Topics. 1-3 Hour.
Selected Topics in Computer Science.
CS 597. Competitive Programming Techniques. 1 Hour.
This course will help students become more competitive in a programming competition such as the ACM programming contest by exploring numerous problem solving techniques and algorithms not covered in the traditional curriculum.
CS 598. Practical Work Experience. 1-9 Hour.
Credit for working in the Computer Science field.
CS 600. Formal Semantics of Programming Languages. 3 Hours.
Context-sensitive and semantic aspects of programming languages, denotational semantics, mathematical foundations.
CS 601. Program Verification. 3 Hours.
Proving properties of programs, termination and correctness, computability and decidability, role of formal methods in software design.
CS 602. Compiler Design. 3 Hours.
Lexical and syntactical scan, semantics, code generation and optimization, dataflow analysis, parallelizing compilers, automatic compiler generation, and other advanced topics.
CS 610. Database Systems. 3 Hours.
This course offers an introduction to the advanced topics of database management systems. The following topics are addressed: System and file structure, efficient data manipulation using indexing and hashing, query processing, crash recovery, concurrency control, transaction processing, database security and integrity, distributed databases.
CS 613. Emerging Database Technologies. 3 Hours.
This course explores new technological and theoretical foundations for storing and organizing data for "Big Data" applications. Topics include emerging database technologies for high-velocity transaction processing, stream processing, real time analytics, and high-volume data processing. The discussions will focus on several real-world application domains, such as Internet advertising, health care, and social network analysis.
CS 614. Distributed Database Systems. 3 Hours.
Concepts of Distributed Database Systems and Architectures, Distributed Database Design, Distributed Query Processing and Optimization, Transaction Management and Concurrency Control, Heterogeneous and Multidatabase Systems.
CS 615. Multimedia Databases. 3 Hours.
This course introduces the principles of multimedia databases including multimedia information processing, modeling, and retrieval. The media to be considered include text, image, audio and video. At the conclusion of this course, the students should understand what multimedia data retrieval is, the principles, which allow the location of relevant information from amongst a large corpus of multimedia data, and the applications of multimedia information retrieval. The students should also have the expertise and competence to design and implement retrieval software for multimedia data.
CS 616. Big Data Programming. 3 Hours.
Introduction to Big Data, Properties of Big Data, platforms, programming models, applications, business analytics programming, big data processing with Python, R, and SAS, MapReduce programming with Hadoop.
CS 617. Database Security. 3 Hours.
Database fundamentals, introduction to database security, overview of security models, access control models, covert channels and inference channels, MySQL security, Oracle security, Oracle label security, developing a database security plan, SQL server security, security of statistical databases, security and privacy issues of data mining, database applications security, SQL injection, defensive programming, database intrusion prevention, audit, fault tolerance and recovery, Hippocratic databases, XML security, network security, biometrics, cloud database security, big database security.
CS 620. Software Design and Integration. 3 Hours.
This course provides hands-on experience in the design and integration of software systems. Component-based technology, model-driven technology, service-oriented technology, and cloud technology are all explored. Software design basics, including the decomposition of systems into recognizable patterns, the role of patterns in designing software and design refactoring, and attributes of good design. Agile culture, CASE tools, tools for continuous integration, build, testing, and version control.
CS 621. Advanced Web Application Development. 3 Hours.
Introduction to web application design and development. Includes traditional web applications utilizing server-side scripting as well as client/server platforms. Covers responsive design for both mobile and desktop users, as well as hands on server provisioning and configuration. Other topics include web security problems and practices, authentication, database access, application deployment and Web API design, such as REpresentational State Transfer (REST).
CS 621L. Advanced Web Application Development Laboratory. 0 Hours.
Laboratory to accompany CS621.
CS 622. Reflective and Adaptive Systems. 3 Hours.
This course examines the principles of compile-time and run-time adaptation in several contexts, including: reflection, metaprogramming, aspect-oriented software development, and metamodeling (applied to model-driven engineering).
CS 623. Network Security. 3 Hours.
Conventional network security (symmetric and public-key cryptography). Message encryption and authentication. Secure communication between computers in a hostile environment, including E-mail (PGP), virtual private networks (IPSec), remote access (SSH), and E-commerce (SSL), firewalls, intrusion detection and prevention, security of IEEE 802.11 wireless networks (WEP, WPA). Mandatory weekly Linux-based lab.
CS 623L. Network Security Laboratory. 0 Hours.
Laboratory to accompany CS 623.
CS 624. Formal Specification of Software Systems. 3 Hours.
Formal methods for software requirements specification, including VDM, Z, and object-oriented extensions; the relationship among formal requirements, design, and implementation.
CS 625. Metrics and Performance. 3 Hours.
Theory and practice of metrics for performance and scalability of software systems. The course will introduce students to the principles of queuing theory and statistical analysis relevant to analyzing the performance of software products. Students will use profiling frameworks to identify a range of performance problems in existing software. The course will enable students to improve the design of software and eliminate many common design oversights that hamper a system’s performance and scalability.
CS 626. Secure Software Development. 3 Hours.
Why and how software fails, characteristics of secure and resilient software, life cycle of secure software development, metrics and models for secure software maturity, design methodology, best practices for secure programming, secure software for mobile computing, cloud computing and embedded systems, methodology for testing and validation.
CS 629. GPU Programming. 3 Hours.
GPU architecture, GPU programming models, GPU parallel algorithms, GPU communication models, GPU performance optimizations, GPU debugging, GPU libraries, multi-GPU program design, and applications of GPU computing.
CS 629L. GPU Programming Lab. 0 Hours.
Laboratory to accompany CS629 GPU Programming.
CS 630. Computer Architecture. 3 Hours.
Introduction to computer architecture, including memory subsystems, direct-mapped and set-associative cache and multi-level cache subsystems, direct-access devices including RAID and SCSI disk drives, processor pipelining including super-scalar and vector machines, parallel architectures including SMP, NUMA and distributed memory systems, Interrupt mechanisms, and future microprocessor design issues.
CS 631. Distributed Systems. 3 Hours.
Object-oriented distributed systems design, distributed software architecture, data and resource access, communication, client-server computing, web technologies, enterprise technologies.
CS 632. Parallel Computing. 3 Hours.
Overview of parallel computing hardware, architectures, & programming paradigms; parallel programming using MPI, Ptureads, and OpenMP; design, development, and analysis of parallel algorithms for matrix computations, FFTs, and Sorting.
CS 633. Cloud Computing. 3 Hours.
Introduction to cloud computing architectures and programming paradigms. Theoretical and practical aspects of cloud programming and problem-solving involving compute, storage and network virtualization. Design, development, analysis, and evaluation of solutions in cloud computing space including machine and container virtualization technologies.
CS 633L. Cloud Computing Lab. 0 Hours.
Laboratory to accompany CS633.
CS 634. Virtualization. 3 Hours.
Theory and practice of virtualization. Origins, history, technical and economic motivations. Relationship to network operating systems and operating system architecture. Simulation, Emulation, Virtualization of CPUs, networks, storage, desktops, memory, devices, and combinations thereof. Different approaches to virtualization, including hardware assists and software-only techniques. Techniques, approaches, and methodologies for scale-out and scale-up computing, including security, performance and economic concerns.
CS 635. Network Programming. 3 Hours.
Remote procedure call and client-server mechanisms. Protocol definition and compilation; client and server stubs and application code; transport independence; multiple client and server systems. Applications, e.g., remote database query and update and image filtering and archiving; systems programming and file systems contexts.
CS 636. Computer Security. 3 Hours.
Study of the breadth of major computer security topics including cyber threats, malware, information assurance, authorization, applied cryptography, web security, mobile and wireless security, network security, systems/software security, database and storage security, user-centered security, and best security practices and countermeasures.
CS 640. Foundations in Bioinformatics. 3 Hours.
Foundations in bioinformatics, emphasizing the application of computational tools and methodology in genomics, analysis of protein functions and structures, and DNA sequencing. Students learn how to use a high level programming language such as Python together with software tools such as BLAST and ArrayTrack to solve bioinformatics problems.
CS 641. Algorithms in Bioinformatics. 3 Hours.
This course covers the design and analysis of algorithmic techniques applied in bioinformatics. Topics include sequence comparison, alignment and matching, suffix tree, sequence database search, phylogenetic tree, genome rearrangement, motif finding, RNA prediction, and peptide sequencing.
Prerequisites: CS 640 [Min Grade: B]
CS 642. Mobile and Wireless Security. 3 Hours.
Mobile/wireless devices are ubiquitous, raising the potential for many cyber threats. This course examines security vulnerabilities inherent in many existing and emerging mobile and wireless systems, ranging from smartphones to wearables and RFID tags. In addition to exposing security vulnerabilities, defensive mechanisms to address these vulnerabilities drawn from existing deployments and research literature will be studied.
CS 643. Cloud Security. 3 Hours.
Definition of cloud computing, cloud computing models, privacy, authenticity and integrity of outsourced data, proof of data possession / retrievability, cloud forensics, malware analysis as a service, remote verification of capability and reliability, proof of availability, economic attacks on clouds and outsourced computing, virtual machine security, trusted computing technology and clouds, verifiable resource accounting, cloud-centric regulatory compliance issues and mechanisms, business and security risk models, secure MapReduce, applications of secure cloud computing, private information retrieval and cloud cartography.
CS 645. Modern Cryptography. 3 Hours.
Theory and practices of modern cryptographic techniques, algorithms and protocols, including formal analysis. Secret key encryption algorithms, public key encryption algorithms, stream ciphers, one-way hashing algorithms, authentication and identification, digital signatures, signcryption, key establishment and management, secret sharing and data recovery, zero-knowledge proofs, public key infrastructures, efficient implementation, cryptanalytic attacks and countermeasures, security models, assumptions and proofs.
CS 646. Blockchain and Cryptocurrency. 3 Hours.
Fundamental principles of blockchains and their applications in digital cash systems including Bitcoin, Ethereum and other notable cryptocurrencies. Topics to be covered include how a cryptocurrency works, blockchain and other decentralized consensus protocols, proof of work, proof of stake, smart contracts, security and privacy of cryptocurrencies, cryptographic techniques for digital currency, and applications of blockchain in peer-to-peer trust establishment, digital asset management, financial exchanges and distributed autonomous organization.
CS 647. Biomedical Modeling. 3 Hours.
Modeling from biomedical datasets. Acquisition, segmentation; registration and fusion; construction of shame models; measurement; illustration modeling techniques for surgical planning.
CS 650. Theory of Computation. 3 Hours.
Topics include Turing machines, computability, computational complexity, complexity classes, P vs. NP, circuit complexity, randomized computation, interactive proofs, quantum, decidability, primality testing, and other computational models.
CS 651. Formal Language Theory. 3 Hours.
Parsing and translation theory, formal syntax, proof properties and complexity measures.
CS 652. Advanced Algorithms and Applications. 3 Hours.
The design and analysis of fundamental algorithms that underpin many fields of importance ranging from data science, business intelligence, finance and cyber security to bioinformatics. Algorithms to be covered include dynamic programming, greedy technique, linear programming, network flow, sequence matching, search and alignment, randomized algorithms, page ranking, data compression, and quantum algorithms. Both time and space complexity of the algorithms are analyzed.
CS 653. Computational Geometry. 3 Hours.
Basic methods and data structures, geometric searching, convex hulls, proximity, intersections.
CS 654. Malware Analysis. 3 Hours.
Hands-on course teaching static, dynamic and contextual analysis of malware. Malware analysis and reverse-engineering techniques are taught through interaction with both "classroom" and "wild" malware samples. Defensive and counter-measure techniques for both corporate and law enforcement environments are explored.
CS 654L. Malware Analysis Lab. 0 Hours.
Laboratory to accompany CS 654.
CS 655. Quantum Computing. 3 Hours.
Quantum mechanics, mathematical foundations, quantum gates, quantum circuits, quantum computer, quantum programming, quantum algorithms, quantum computing methods, and applications of quantum computing.
CS 656. Web Security. 3 Hours.
The web uses advanced applications that run on a large variety of browsers that may be built using programming languages such as JavaScript, AJAX, Google Web Toolkit and Apache Struts, to name a few. This course studies how core web technologies work, the common security vulnerabilities associated with them, and how to build secure web applications that are free from these vulnerabilities.
CS 657. Penetration Testing and Vulnerability Assessment. 3 Hours.
This course focuses on penetration testing and vulnerability analysis. It introduces methodologies, techniques and tools to analyze and identify vulnerabilities in stand-alone and networked applications. It also covers methodologies for legal and standards compliance.
CS 659. Multiprocessor Programming. 3 Hours.
This course examines synchronization in concurrent systems, available atomic primitives, non-blocking programming techniques, lock-/wait-freedom, transactional memory, and memory models in hardware and software. The application of these techniques to the development of scalable data structures for multi-core architectures will be a central topic of this course.
CS 660. Artificial Intelligence. 3 Hours.
Programming methodologies, logic foundations, natural language applications, expert systems.
CS 662. Natural Language Processing. 3 Hours.
This course provides a broad introduction to Natural Language Processing (Computational Linguistics) and its applications. Topics covered include language modeling with neural networks, sequence labelling algorithms (segmentation, chunking, tokenization, part-of-speech tagging and others ), syntactic and dependency parsing, vector-based representation models and using Deep Learning in NLP applications. Some application areas covered include information extraction and named entity recognition, semantic role labelling, word sense disambiguation, text generation, information retrieval, question answering, machine translation and other areas as time permits. There will be a focus on Deep Learning approaches using Tensorflow, PyTorch and keras for a major student project. Jupyter Notebooks will be used for assignments.
CS 663. Data Mining. 3 Hours.
Techniques used in data mining (such as frequent sets and association rules, decision trees, Bayesian networks, classification, clustering), algorithms underlying these techniques, and applications.
CS 665. Deep Learning. 3 Hours.
Deep Learning is a rapidly growing area of machine learning that has revolutionized speech recognition, image recognition and natural language processing. This course teaches you deep learning basics such as logistic regression, stochastic gradient descent, deep neural networks, convolutional neural networks and deep models for text and sequences. Students will also gain hands-on experience of using deep learning systems such as TensorFlow.
CS 667. Machine Learning. 3 Hours.
The course covers important issues in supervised learning, unsupervised learning and reinforcement learning. Topics include graphical models and Bayesian inference, hidden Markov model, mixture models and expectation maximization, density estimation, dimensionality reduction, logistic regression and neural network, support vector machines and kernel methods, and bagging and boosting.
CS 669. Introduction to the Internet of Things. 3 Hours.
Definition of the Internet of Things (IoT), history, IoT components, device specifications and examples, architectures, protocols, applications, security and privacy issues, programming and development environments for IoT, interoperability, interfacing IoT devices via web and mobile applications.
CS 670. Computer Graphics. 3 Hours.
Computer graphics is the study of the creation, manipulation, and rendering of shape models and images, for visualization, modeling, shape analysis, and animation. Topics include matrix transforms for motion and viewing, shading, viewing and camera modeling, shape modeling including meshes and smooth parametric curves and surfaces, visibility analysis, sampling, nonphotorealistic rendering, shape analysis, and texture mapping. Topics are explored through code, including OpenGL and GLSL.
CS 671. Shape Design. 3 Hours.
This course covers various aspects of the design of mathematical descriptions of shape. These geometric models are used in computer graphics, game design, automobile and aircraft design, robotics, anatomical modeling, and many other disciplines. Building geometry from images. Bezier and B-spline curves and surfaces.
CS 672. Geometric Modeling for Computer Graphics. 3 Hours.
The formal description of a motion is necessary in computer animation for graphics, game design, robotics, and many other disciplines. This course covers various aspects of the design of motions. Typical topics include position control along Bezier curves, orientation control with quaternion splines, motion planning, motion capture, camera control, collision detection, visibility analysis.
CS 673. Computer Vision and Convolutional Neural Networks. 3 Hours.
Computer vision, the study of the interpretation of images, is central to many areas of computer science, including data science and machine learning, driverless cars, biomedical computing, image computation for social media, and face detection in security. Recent algorithms for vision also leverage deep learning with convolutional neural networks for object recognition. Topics in this course include image smoothing and filtering, edge detection, segmentation, clustering, Hough transform, deformable contours, object recognition, and machine learning for object recognition using large image datasets.
CS 675. Data Visualization. 3 Hours.
The amount and complexity of data produced everyday is increasing at a staggering rate. Visualization presents an intuitive way to explore and interpret data. This course will be an introduction to the principles, and methods for effective visual analysis of data. Techniques to facilitate information visualization for non-spatial data (eg. graphs, text, high-dimensional data) and scientific visualization for spatial data (eg. gridded data from simulations and scanners and sensors) will be covered. Emphasis will be given to interactive approaches, especially while dealing with massive volumes of data. Topics in the domain of data analytics tightly coupled with visualization will also be covered. Students will learn fundamentals of perception, visualization techniques and methods for a broad range of data types, good practices for visualization, and will ultimately be able to develop their own visualization system.
CS 676. Structure from Motion. 3 Hours.
Structure from motion extracts geometric information from a series of images of an object, either still photographs or video streams. The position of the camera may also be computed, yielding camera paths. This topic has powerful applications in many areas, including computer graphics, computer vision, photography, visualization, and video augmentation. Projective geometry, multiple view geometry, feature extraction.
CS 677. Big Data Privacy and Security. 3 Hours.
The course covers topics pertinent to privacy and security of big data applications in practice. Topics include legal and policy aspects, privacy v.s. convenience and usefulness, ethics, compliance with GDPR, CCPA and other regional, national and global privacy regulations; techniques and best practices for security, privacy and compliance including secure and reliable tracking, tagging, audit and monitoring, storage and transmission, integration and governance, sharing, erasure, provenance, risk analysis, and privacy preservation; fairness, accountability, transparency and explainability in machine learning and artificial intelligence.
CS 680. Matrix Algorithms for Data Science. 3 Hours.
Computation with matrices and tensors is at the heart of many areas of computer science, including machine learning, computer vision, computer graphics, and self-driving cars. This course studies matrix computation (solution of linear systems, least squares, spectral analysis, and singular value decomposition) and its applications. These applications will be explored through code.
CS 681. Simulation Models. 3 Hours.
Model development using popular simulation languages, e.g., Excel or OpenOffice.org Calc Spreadsheet; interfacing to an animation system such as Proof Animation or Open_GL.
CS 683. Open Source Security Systems. 3 Hours.
An introduction to the design, implementation, evaluation and maintenance of secure software systems and applications using open source technologies, with an emphasis on hands-on experience. Topics include: open source ecosystems, open source security methodologies and models, notable open source software systems and projects, quality and security assurance through open source, open source supply chain security, major open source cryptographic packages; designing, implementing and maintaining security systems using open source technologies; assessment and regulatory compliance using open source tools, and open source hardware.
CS 684. Robot Motion. 3 Hours.
Path planning algorithms. Configuration space, potential functions, roadmaps, cell decomposition, probabilistic motion planning, compliant motion.
CS 685. Foundations of Data Science. 3 Hours.
Fundamental concepts and techniques in statistical inference and big data analytics. Topics include high-dimensional space, singular value decomposition, random graphs, random walks and Markov chains, data streaming and sketching, and basics of data mining and machine learning.
CS 686. Software-Defined Networking. 3 Hours.
Software defined networking (SDN) allows a logically centralized software component to manage and control the behavior of an entire network. Topics to be covered include abstractions and layered architecture of SDN, data, control and management planes, network virtualization, programming SDN, network functions (e.g. routing, load balancing and security), comparison of OpenFlow and proprietary SDN technologies, and network optimization with SDN.
CS 687. Complex Networks. 3 Hours.
Introduction to complex network theory and real-world applications in biology, physics, sociology, national security and cyber enabled technology systems such as social networks. Essential network models including small world networks, scale free networks, spatial and hierarchical networks together with methods to generate them with a computer will be discussed. In addition, various techniques for the analysis of networks including network modeling and evolution, community structure, dynamic network analysis, and network visualization will be explored.
CS 689. Cyber Risk Management. 3 Hours.
This course develops knowledge and skills in risk based information security management geared toward preventive management and assurance of security of information and information systems in technology-enabled environments. It focuses on risk assessments, risk mitigation strategies, risk profiling and sensitivity, quantitative and qualitative models of calculating risk exposures, security controls and services, threat and vulnerability management, financing the cost of security risks, and return on investment for information security initiatives. The course presents several risk assessment models with an ultimate goal of identifying and realizing the unique and acceptable level of information risk for an organization.
CS 690. Special Topics. 1-3 Hour.
Selected topics in Computer Science.
CS 691. Special Topics. 1-3 Hour.
Selected topics in Computer Science.
CS 692. Special Topics. 1-3 Hour.
Selected topics in Computer Science.
CS 695. Digital Image Processing. 3 Hours.
Human visual system, image acquisition, binary image processing, image transformation, Fourier Transform, segmentation, edge detection, medical imaging modalities, image reconstruction from projections, 3D modelling algorithms, and imaging artifacts.
CS 697. Directed Readings. 1-6 Hour.
Selected readings, research and project development under direction of a faculty member. Must have permission of instructor and graduate program director.
CS 698. Master's Plan II. 1-9 Hour.
Masters student registration.
CS 699. Master's Thesis Research. 1-6 Hour.
Research for M.S. candidates writing a thesis.
Prerequisites: GAC M
CS 700. Formal Semantics of Programming Languages. 2,3 Hours.
Context-sensitive and semantic aspects of programming languages, denotational semantics, mathematical foundations.
CS 701. Program Verification. 3 Hours.
Proving properties of programs, termination and correctness, computability and decidability, role of formal methods in software design.
CS 702. Compiler Design. 3 Hours.
Lexical and syntactical scan, semantics, code generation and optimization, dataflow analysis, parallelizing compilers, automatic compiler generation, and other advanced topics.
CS 710. Database Systems. 3 Hours.
This course offers an introduction to the advanced topics of database management systems. The following topics are addressed: System and file structure, efficient data manipulation using indexing and hashing, query processing, crash recovery, concurrency control, transaction processing, database security and integrity, distributed databases.
CS 713. Emerging Database Technologies. 3 Hours.
This course explores new technological and theoretical foundations for storing and organizing data for "Big Data" applications. Topics include emerging database technologies for high-velocity transaction processing, stream processing, real time analytics, and high-volume data processing. The discussions will focus on several real-world application domains, such as Internet advertising, health care, and social network analysis.
CS 714. Distributed Database Systems. 3 Hours.
Concepts of Distributed Database Systems and Architectures, Distributed Database Design, Distributed Query Processing and Optimization, Transaction Management and Concurrency Control, Heterogeneous and Multidatabase Systems.
CS 715. Multimedia Databases. 3 Hours.
This course introduces the principles of multimedia databases including multimedia information processing, modeling, and retrieval. The media to be considered include text, image, audio and video. At the conclusion of this course, the students should understand what multimedia data retrieval is, the principles, which allow the location of relevant information from amongst a large corpus of multimedia data, and the applications of multimedia information retrieval. The students should also have the expertise and competence to design and implement retrieval software for multimedia data.
CS 716. Big Data Programming. 3 Hours.
Introduction to Big Data, Properties of Big Data, platforms, programming models, applications, business analytics programming, big data processing with Python, R, and SAS, MapReduce programming with Hadoop.
CS 717. Database Security. 3 Hours.
Database fundamentals, introduction to database security, overview of security models, access control models, covert channels and inference channels, MySQL security, Oracle security, Oracle label security, developing a database security plan, SQL server security, security of statistical databases, security and privacy issues of data mining, database applications security, SQL injection, defensive programming, database intrusion prevention, audit, fault tolerance and recovery, Hippocratic databases, XML security, network security, biometrics, cloud database security, big database security.
CS 720. Software Design and Integration. 3 Hours.
This course provides hands-on experience in the design and integration of software systems. Component-based technology, model-driven technology, service-oriented technology, and cloud technology are all explored. Software design basics, including the decomposition of systems into recognizable patterns, the role of patterns in designing software and design refactoring, and attributes of good design. Agile culture, CASE tools, tools for continuous integration, build, testing, and version control.
CS 722. Reflective and Adaptive Systems. 3 Hours.
This course examines the principles of compile-time and run-time adaptation in several contexts, including: reflection, metaprogramming, aspect-oriented software development, and metamodeling (applied to model-driven engineering).
CS 723. Network Security. 3 Hours.
Conventional network security (symmetric and public-key cryptography). Message encryption and authentication. Secure communication between computers in a hostile environment, including E-mail (PGP), virtual private networks (IPSec), remote access (SSH), and E-commerce (SSL), firewalls, intrusion detection and prevention, security of IEEE 802.11 wireless networks (WEP, WPA). Mandatory weekly Linux-based lab.
CS 723L. Network Security Laboratory. 0 Hours.
Laboratory to accompany CS 723.
CS 724. Formal Specification of Software Systems. 3 Hours.
Formal methods for software requirements specification, including VDM, Z, and object-oriented extensions; the relationship among formal requirements, design, and implementation.
CS 725. Metrics and Performance. 3 Hours.
Theory and practice of metrics for performance and scalability of software systems. The course will introduce students to the principles of queuing theory and statistical analysis relevant to analyzing the performance of software products. Students will use profiling frameworks to identify a range of performance problems in existing software. The course will enable students to improve the design of software and eliminate many common design oversights that hamper a system’s performance and scalability.
CS 726. Secure Software Development. 3 Hours.
Why and how software fails, characteristics of secure and resilient software, life cycle of secure software development, metrics and models for secure software maturity, design methodology, best practices for secure programming, secure software for mobile computing, cloud computing and embedded systems, methodology for testing and validation.
CS 729. GPU Programming. 3 Hours.
GPU architecture, GPU programming models, GPU parallel algorithms, GPU communication models, GPU performance optimizations, GPU debugging, GPU libraries, multi-GPU program design, and applications of GPU computing.
CS 729L. GPU Programming Lab. 0 Hours.
Laboratory to accompany CS729 GPU Programming.
CS 730. Computer Architecture. 3 Hours.
Introduction to computer architecture, including memory subsystems, direct-mapped and set-associative cache and multi-level cache subsystems, direct-access devices including RAID and SCSI disk drives, processor pipelining including super-scalar and vector machines, parallel architectures including SMP, NUMA and distributed memory systems, Interrupt mechanisms, and future microprocessor design issues.
CS 731. Distributed Systems. 3 Hours.
Object-oriented distributed systems design, distributed software architecture, data and resource access, communication, client-server computing, web technologies, enterprise technologies.
CS 732. Parallel Computing. 3 Hours.
Overview of parallel computing hardware, architectures, & programming paradigms; parallel programming using MPI, Ptureads, and OpenMP; design, development, and analysis of parallel algorithms for matrix computations, FFTs, and Sorting.
CS 733. Cloud Computing. 3 Hours.
Introduction to cloud computing architectures and programming paradigms. Theoretical and practical aspects of cloud programming and problem-solving involving compute, storage and network virtualization. Design, development, analysis, and evaluation of solutions in cloud computing space including machine and container virtualization technologies.
CS 733L. Cloud Computing Lab. 0 Hours.
Laboratory to accompany CS733.
CS 734. Virtualization. 3 Hours.
Theory and practice of virtualization. Origins, history, technical and economic motivations. Relationship to network operating systems and operating system architecture. Simulation, Emulation, Virtualization of CPUs, networks, storage, desktops, memory, devices, and combinations thereof. Different approaches to virtualization, including hardware assists and software-only techniques. Techniques, approaches, and methodologies for scale-out and scale-up computing, including security, performance and economic concerns.
CS 735. Network Programming. 3 Hours.
Remote procedure call and client-server mechanisms. Protocol definition and compilation; client and server stubs and application code; transport independence; multiple client and server systems. Applications, e.g., remote database query and update and image filtering and archiving; systems programming and file systems contexts.
CS 736. Computer Security. 3 Hours.
Study of the breadth of major computer security topics including cyber threats, malware, information assurance, authorization, applied cryptography, web security, mobile and wireless security, network security, systems/software security, database and storage security, user-centered security, and best security practices and countermeasures.
CS 740. Foundations in Bioinformatics. 3 Hours.
Foundations in bioinformatics, emphasizing the application of computational tools and methodology in genomics, analysis of protein functions and structures, and DNA sequencing. Students learn how to use a high level programming language such as Python together with software tools such as BLAST and ArrayTrack to solve bioinformatics problems.
CS 741. Algorithms in Bioinformatics. 3 Hours.
This course covers the design and analysis of algorithmic techniques applied in bioinformatics. Topics include sequence comparison, alignment and matching, suffix tree, sequence database search, phylogenetic tree, genome rearrangement, motif finding, RNA prediction, and peptide sequencing.
CS 742. Mobile and Wireless Security. 3 Hours.
Mobile/wireless devices are ubiquitous, raising the potential for many cyber threats. This course examines security vulnerabilities inherent in many existing and emerging mobile and wireless systems, ranging from smartphones to wearables and RFID tags. In addition to exposing security vulnerabilities, defensive mechanisms to address these vulnerabilities drawn from existing deployments and research literature will be studied.
CS 743. Cloud Security. 3 Hours.
Definition of cloud computing, cloud computing models, privacy, authenticity and integrity of outsourced data, proof of data possession / retrievability, cloud forensics, malware analysis as a service, remote verification of capability and reliability, proof of availability, economic attacks on clouds and outsourced computing, virtual machine security, trusted computing technology and clouds, verifiable resource accounting, cloud-centric regulatory compliance issues and mechanisms, business and security risk models, secure MapReduce, applications of secure cloud computing, private information retrieval and cloud cartography.
CS 745. Modern Cryptography. 3 Hours.
Theory and practices of modern cryptographic techniques, algorithms and protocols, including formal analysis. Secret key encryption algorithms, public key encryption algorithms, stream ciphers, one-way hashing algorithms, authentication and identification, digital signatures, signcryption, key establishment and management, secret sharing and data recovery, zero-knowledge proofs, public key infrastructures, efficient implementation, cryptanalytic attacks and countermeasures, security models, assumptions and proofs.
CS 746. Blockchain and Cryptocurrency. 3 Hours.
Fundamental principles of digital cash systems including Bitcoin, Ripple and other notable cryptocurrencies. Topics to be covered include how a cryptocurrency works, blockchain and other decentralized consensus protocols, proof of work, proof of stake, security and privacy of cryptocurrencies, cryptographic techniques for digital currency, and applications of blockchain in peer-to-peer trust establishment, smart contracts, digital asset management, financial exchanges and distributed autonomous organization.
CS 747. Biomedical Modeling. 3 Hours.
Modeling from biomedical datasets. Acquisition, segmentation; registration and fusion; construction of shape models; measurement; illustration modeling techniques for surgical planning.
CS 750. Theory of Computation. 3 Hours.
Topics include Turing machines, computability, computational complexity, complexity classes, P vs. NP, circuit complexity, randomized computation, interactive proofs, quantum, decidability, primality testing, and other computational models.
CS 751. Formal Language Theory. 3 Hours.
Parsing and translation theory, formal syntax, proof properties and complexity measures.
CS 752. Advanced Algorithms and Applications. 3 Hours.
The design and analysis of fundamental algorithms that underpin all fields of importance ranging from data science, business intelligence, finance and cyber security to bioinformatics. Algorithms to be covered include dynamic programming, greedy technique, linear programming, network flow,sequence matching, search and alignment, randomized algorithms, page ranking, data compression, and quantum algorithms. Efficiency of algorithms is analyzed in both memory and time costs.
CS 753. Computational Geometry. 3 Hours.
Basic methods and data structures, geometric searching, convex hulls, proximity, intersections.
CS 755. Quantum Computing. 3 Hours.
Quantum mechanics, mathematical foundations, quantum gates, quantum circuits, quantum computer, quantum programming, quantum algorithms, quantum computing methods, and applications of quantum computing.
CS 756. Web Security. 3 Hours.
The web uses advanced applications that run on a large variety of browsers that may be built using programming languages such as JavaScript, AJAX, Google Web Toolkit and Apache Struts, to name a few. This course studies how core web technologies work, the common security vulnerabilities associated with them, and how to build secure web applications that are free from these vulnerabilities.
CS 757. Penetration Testing and Vulnerability Assessment. 3 Hours.
This course focuses on penetration testing and vulnerability analysis. It introduces methodologies, techniques and tools to analyze and identify vulnerabilities in stand-alone and networked applications. It also covers methodologies for legal and standards compliance.
CS 759. Multiprocessor Programming. 3 Hours.
This course examines synchronization in concurrent systems, available atomic primitives, non-blocking programming techniques, lock-/wait-freedom, transactional memory, and memory models in hardware and software. The application of these techniques to the development of scalable data structures for multi-core architectures will be a central topic of this course.
CS 760. Artificial Intelligence. 3 Hours.
Programming methodologies, logic foundations, natural language applications, expert systems.
CS 762. Natural Language Processing. 3 Hours.
This course provides a broad introduction to Natural Language Processing (Computational Linguistics) and its applications. Topics covered include language modeling with neural networks, sequence labelling algorithms (segmentation, chunking, tokenization, part-of-speech tagging and others ), syntactic and dependency parsing, vector-based representation models and using Deep Learning in NLP applications. Some application areas covered include information extraction and named entity recognition, semantic role labelling, word sense disambiguation, text generation, information retrieval, question answering, machine translation and other areas as time permits. There will be a focus on Deep Learning approaches using Tensorflow, PyTorch and keras for a major student project. Jupyter Notebooks will be used for assignments.
CS 763. Data Mining. 3 Hours.
Techniques used in data mining (such as frequent sets and association rules, decision trees, Bayesian networks, classification, clustering), algorithms underlying these techniques, and applications.
CS 765. Deep Learning. 3 Hours.
Deep Learning is a rapidly growing area of machine learning that has revolutionized speech recognition, image recognition and natural language processing. This course teaches deep learning basics such as logistic regression, stochastic gradient descent, deep neural networks, convolutional neural networks and deep models for text and sequences. Students will also gain hands-on experience of using deep learning systems such as TensorFlow.
CS 767. Machine Learning. 3 Hours.
The course covers important issues in supervised learning, unsupervised learning and reinforcement learning. Topics include graphical models and Bayesian inference, hidden Markov model, mixture models and expectation maximization, density estimation, dimensionality reduction, logistic regression and neural network, support vector machines and kernel methods, and bagging and boosting.
CS 769. Introduction to the Internet of Things. 3 Hours.
Definition of the Internet of Things (IoT), history, IoT components, device specifications and examples, architectures, protocols, applications, security and privacy issues, programming and development environments for IoT, interoperability, interfacing IoT devices via web and mobile applications.
CS 770. Computer Graphics. 3 Hours.
Computer graphics is the study of the creation, manipulation, and rendering of shape models and images, for visualization, modeling, shape analysis, and animation. Topics include matrix transforms for motion and viewing, shading, viewing and camera modeling, shape modeling including meshes and smooth parametric curves and surfaces, visibility analysis, sampling, nonphotorealistic rendering, shape analysis, and texture mapping. Topics are explored through code, including OpenGL and GLSL.
CS 771. Shape Design. 3 Hours.
This course covers various aspects of the design of mathematical descriptions of shape. These geometric models are used in computer graphics, game design, automobile and aircraft design, robotics, anatomical modeling, and many other disciplines. Building geometry from images. Bezier and B-spline curves and surfaces.
CS 772. Geometric Modeling for Computer Graphics. 3 Hours.
The formal description of a motion is necessary in computer animation for graphics, game design, robotics, and many other disciplines. This course covers various aspects of the design of motions. Typical topics include position control along Bezier curves, orientation control with quaternion splines, motion planning, motion capture, camera control, collision detection, visibility analysis.
CS 773. Computer Vision and Convolutional Neural Networks. 3 Hours.
Computer vision, the study of the interpretation of images, is central to many areas of computer science, including data science and machine learning, driverless cars, biomedical computing, image computation for social media, and face detection in security. Recent algorithms for vision also leverage deep learning with convolutional neural networks for object recognition. Topics in this course include image smoothing and filtering, edge detection, segmentation, clustering, Hough transform, deformable contours, object recognition, and machine learning for object recognition using large image datasets.
CS 775. Data Visualization. 3 Hours.
The amount and complexity of data produced everyday is increasing at a staggering rate. Visualization presents an intuitive way to explore and interpret data. This course will be an introduction to the principles, and methods for effective visual analysis of data. Techniques to facilitate information visualization for non-spatial data (eg. graphs, text, high-dimensional data) and scientific visualization for spatial data (eg. gridded data from simulations and scanners and sensors) will be covered. Emphasis will be given to interactive approaches, especially while dealing with massive volumes of data. Topics in the domain of data analytics tightly coupled with visualization will also be covered. Students will learn fundamentals of perception, visualization techniques and methods for a broad range of data types, good practices for visualization, and will ultimately be able to develop their own visualization system.
CS 776. Structure from Motion. 3 Hours.
Structure from motion extracts geometric information from a series of images of an object, either still photographs or video streams. The position of the camera may also be computed, yielding camera paths. This topic has powerful applications in many areas, including computer graphics, computer vision, photography, visualization, and video augmentation. Projective geometry, multiple view geometry, feature extraction.
CS 777. Big Data Privacy and Security. 3 Hours.
The course covers topics pertinent to privacy and security of big data applications in practice. Topics include legal and policy aspects, privacy v.s. convenience and usefulness, ethics, compliance with GDPR, CCPA and other regional, national and global privacy regulations; techniques and best practices for security, privacy and compliance including secure and reliable tracking, tagging, audit and monitoring, storage and transmission, integration and governance, sharing, erasure, provenance, risk analysis, and privacy preservation; fairness, accountability, transparency and explainability in machine learning and artificial intelligence.
CS 780. Matrix Algorithms for Data Science. 3 Hours.
Computation with matrices and tensors is at the heart of many areas of computer science, including machine learning, computer vision, computer graphics, and self-driving cars. This course studies matrix computation (solution of linear systems, least squares, spectral analysis, and singular value decomposition) and its applications. These applications will be explored through code.
CS 781. Simulation Models and Animations. 3 Hours.
Model development using popular simulation languages, e.g., Excel or OpenOffice.org Calc Spreadsheet; interfacing to an animation system such as Proof Animation or Open_GL.
CS 783. Open Source Security Systems. 3 Hours.
An introduction to the design, implementation, evaluation and maintenance of secure software systems and applications using open source technologies, with an emphasis on hands-on experience. Topics include: open source ecosystems, open source security methodologies and models, notable open source software systems and projects, quality and security assurance through open source, open source supply chain security, major open source cryptographic packages; designing, implementing and maintaining security systems using open source technologies; assessment and regulatory compliance using open source tools, and open source hardware.
CS 784. Robot Motion. 3 Hours.
Path planning algorithms. Configuration space, potential functions, roadmaps, cell decomposition, probabilistic motion planning, compliant motion.
CS 785. Foundations of Data Science. 3 Hours.
Fundamental concepts and techniques in statistical inference and big data analytics. Topics include high-dimensional space, singular value decomposition, random graphs, random walks and Markov chains, data streaming and sketching, and basics of data mining and machine learning.
CS 786. Software-Defined Networking. 3 Hours.
Software defined networking (SDN) allows a logically centralized software component to manage and control the behavior of an entire network. Topics to be covered include abstractions and layered architecture of SDN, data, control and management planes, network virtualization, programming SDN, network functions (e.g. routing, load balancing and security), comparison of OpenFlow and proprietary SDN technologies, and network optimization with SDN.
CS 787. Complex Networks. 3 Hours.
Introduction to complex network theory and real-world applications in biology, physics, sociology, national security and cyber enabled technology systems such as social networks. Essential network models including small world networks, scale free networks, spatial and hierarchical networks together with methods to generate them with a computer will be discussed. In addition, various techniques for the analysis of networks including network modeling and evolution, community structure, dynamic network analysis, and network visualization will be explored.
CS 790. Special Topics. 3 Hours.
Selected Topics in Computer Science.
CS 791. Special Topics. 3 Hours.
Selected Topics in Computer Science.
CS 792. Special Topics. 3 Hours.
Selected Topics in Computer Science.
CS 795. Digital Image Processing. 3 Hours.
Human visual system, image acquisition, binary image processing, image transformation, Fourier Transform, segmentation, edge detection, medical imaging modalities, image reconstruction from projections, 3D modelling algorithms, and imaging artifacts.
CS 796. Directed Readings and Research. 1-9 Hour.
Selected readings, research and project development under direction of a faculty member. Must have permission of instructor and graduate program director.
CS 799. Dissertation Research. 1-9 Hour.
Prerequisite: Admission to candidacy.
Prerequisites: GAC Z