Course DescriptionsCourse DescriptionsCourse Descriptions

Online Courses From the College of Engineering and Computer Science

Courses from the College of Engineering and Computer Science online programs are designed by our expert faculty with years of experience across a variety of fields. All course descriptions are listed below for the M.S. in Cybersecurity, M.S. in Computer Science and M.S. in Computer Engineering.

CSE 664: Introduction to System-on-Chip Design

Design principles and fabrication of computer chips. Standard cell based system-on-chip design, top down design flow, RT level design and synthesis, pipelining and performance analysis, software-hardware co-design and co-simulation.

CSE 661: Advanced Computer Architecture

Students will explore advanced concepts and state-of-the-art developments in computer architecture: memory systems, pipelining, simultaneous multithreading, run-time optimization, array processing, parallel processing, multiprocessing, abstract analytic models, power-aware computing, embedded computing, relationship between computer design and application requirements, cost/performance tradeoffs, and many example computers of interesting and unusual features.

This coursework and student projects will cover the principles, characteristics, and trends of computer systems design at a level appropriate for all computer scientists and computer engineers. The course focuses largely on hardware design, to include aspects of the complete system, comprising the hardware, operating system, compilers, and application software. Students will also gain an understanding of the hardware technology that has fueled the rapid progress of computer systems and complete case studies of current systems.

Areas of Study
Advanced computer architecture, including discussion of instruction set design (RISC and CISC); virtual memory system design; memory hierarchies; cache memories; pipelining; vector processing; I/O subsystems; co-processors; and multiprocessor architectures.

CSE 674: Advanced Data Structures and Algorithms

In this course, students will explore the internals of all major data structures. Topics will include algorithms for sorting, balancing trees, graph querying, hashing, and compression. Students will also develop expertise in cache effects and using parallel algorithms.

Watch the Advanced Data Structures and Algorithms course overview.

CIS 634: Assurance Foundations

In this course, students will explore the foundational theories, concepts, and computer-assisted reasoning tools necessary for creating assured systems.

Areas of Study
Functional programming; theorem proving; and logic for reasoning about access control, security, and trust.

CIS 663: Biometrics

This course exposes students to the technical and behavioral reasons why computers and computer networks increasingly need to have adequate security measures that can safeguard sensitive information. Students begin by investigating the security measures that can be employed to safeguard information, with a focus on the theory that goes into designing these measures, as well as studying common and proven security tools and techniques.

Areas of Study
Operating system security, Unix security, trusted computing base, authentication, access control, security models, capability, sandboxing, software vulnerabilities, worms, viruses, secure engineering principles, secure programming, auditing, and forensics.

Watch the Computer Security course overview.

CIS 600: Fundamentals of Data and Knowledge Mining

This course will introduce popular data mining and statistical methods for extracting knowledge from data. The principles and theories of data mining methods will be discussed and will be related to the issues in applying data mining to real-world problems. Students will also acquire hands-on experience using R programming language and Weka software to develop data mining solutions to scientific, social, or business problems.

The focus of this course is understanding data and how to identify the right data mining techniques and formulate data mining tasks in order to solve problems using the data aided by data mining techniques.

Watch the Fundamentals of Data and Knowledge Mining course overview.

CIS 675: Design and Analysis of Algorithms

This course covers topics related to algorithm design and analysis. Students will develop the skills to divide and conquer algorithms, greedy algorithms, graph algorithms, algorithms for social networks, computational biology, optimization algorithms, randomization, and algorithm analysis.

Assignments and project work will be broad in scope but will emphasize algorithmic thinking, performance guarantees and boundary cases, efficient solutions to practical problems, and understanding how to analyze algorithms. More advanced topics will have students working with modern algorithms for real-world applications.

Areas of Study
Asymptotic analysis and recurrences; classical numeric algorithms; advanced data structures; graph algorithms; divide-and-conquer, greedy choice, dynamic programming, and other computational strategies; and NP-completeness.

Watch the Design and Analysis of Algorithms course overview.

CSE 644: Internet Security

This course provides an in-depth study of various network attack techniques and methods to defend against them. A number of threats and vulnerabilities of the Internet will be covered, including various vulnerabilities of TCP/IP protocols, denial of service (DOS), attacks on routing, attacks on DNS servers, and TCP session hijacking.

This course will also cover defending mechanisms, including intrusion detection, firewalls, tracing the source of attacks, anonymous communication, IPsec, virtual private network, and PKI. To make it easy for students to understand these attacks, basics of the TCP/IP protocols will also be covered in the course.

The course adopts the “learning by doing” principle. Students will learn the attacks by performing them in a restricted environment or a simulated environment. They will also play with a number of security tools to understand how they work and what security guarantee they provide. The experiments will be conducted in the virtual machine environments.

Areas of Study
Internet architecture; security and attacks on TCP/IP, DNS, and BGP protocols; Internet protocol security; firewalls; intrusion detection; network traceback; web security; encryption; public key infrastructure; one-way harsh function; digital signature; and security protocols.

Watch the Internet Security course overview.

CIS 628: Introduction to Cryptography

This course provides an overview of classical and public key cryptography. Topics include classical cryptosystems and their cryptanalysis, RSA and other public key cryptosystems, pseudo-random sequences, zero-knowledge protocols, and related ethical and social concerns.

CIS 735: Machine Learning for Security

This course explores the intersection of machine learning and computer security and offers an in-depth introduction to machine learning theory and methods. Students explore research problems in machine learning and its applications in security contexts. Topics include inductive learning, neural network approaches, computational learning theory, data mining, fraud detection, pattern recognition, and other contemporary applications.

Watch the Machine Learning course overview.

CSE 651: Mobile Application Programming

This course focuses on design and implementation of mobile applications for Android. The primary focus is on UI development. In addition to that, the following topics are also covered: efficient use of persistent storage, network services, GPS, maps and sensors, working with Rest API and developing web services for mobile apps, and developing and using cloud-based services for mobile apps. Students are expected to have a good understanding of object oriented programming.

CSE 687: Object Oriented Design

This course covers design and implementation of object-oriented programs using the C++ language. This is an intensive course covering: design strategies used in object oriented design, essentially all of the standard C++ programming language, and its standard library. A typical class will introduce some part of the C++ language, present a design principle that relates in some way to that part, and illustrate both with code examples.

Areas of Study
Basic methods of object oriented software design and implementation; object oriented software engineering methodologies such as specification, hierarchical decomposition, reuse, and extensibility; implementation of projects in object-oriented programming language; and analysis of design case studies.

CIS 554: Object Oriented Programming C++

Students are immersed in object-oriented programming principles and techniques using C++. Topics and project work includes classes, overloading, data abstraction, information hiding, encapsulation, inheritance, polymorphism, file processing, templates, exceptions, container classes, and low-level language features. Students will develop the skills required to map C++ to GUI, databases, and real-time programming.

Areas of Study
Survey of basic C constructs; data abstraction; classes, derived classes, types, structures, and template; access control, information hiding, and multiple inheritance; formatting stream I/O; libraries, interfaces, and modular system organization; and substantial programming assignments.

Watch the Object Oriented Programming C++ course overview.

CIS 657: Principles of Operating Systems

Students will review classical operating system concepts (process and memory management, process coordination, device drivers, file systems, starvation/deadlock) before moving into modern topics of files systems (such as log-structured file systems, distributed file systems, memory-based file systems).

Assignments and lab work are focused on operating system design (monolithic, communication-kernel, extensible/adaptable, distributed shared memory), multiprocessor issues (scheduling, synchronization, IPC), and some aspects of security (Internet attacks, encryption, defenses). Students will also gain experience with inspection and modification of actual operating system code (Linux).

The course includes a weekly lab using a Unix-like operating system.

Areas of Study
Design and implementation of operating systems, process and memory management, resource scheduling, file system management, I/O and kernel services, and structuring.

Watch the Principles of Operating Systems course overview.

CSE 682: Software Engineering

This course covers a broad spectrum of software engineering topics. Students will work through the complete software engineering process, models in software engineering, requirements and specifications, design techniques, functional decomposition, data flow, data structures, theoretical issues in testing, testing strategies, and cost and reliability models.

The course is based entirely on a practical industry perspective, including current industry standards and usages for concepts covered in class. Students will emerge from the course with the knowledge and skills necessary to quickly learn, adapt to, or modify an organization’s specific software development processes.

Areas of Study
Requirements and specifications including tools such as PSL/PSA and SREM, design techniques, functional decomposition, data flow, data structure, theoretical issues in testing and testing strategies, domains, mutation and error, and cost and reliability models.

Watch the Software Engineering course overview.

CSE 681: Software Modeling

In this course, students will learn essential project-based skills, including software modeling, architecture, design, and implementation using techniques such as diagramming, analysis tools, and common sense engineering methods. Students will also analyze performance of concurrent, message-driven systems.

Watch the Software Modeling course overview.

CIS 623: Assured Programming with Formal Methods

In this course, students will learn strategic reasoning about programs through the specification, design, and realization of provably correct programs. Students will also develop an understanding of program and data structures, binding, procedures, and recursion.

Watch the Structured Programming and Formal Methods course overview.