Master of Engineering Courses

This option, offered in collaboration with Electrical and Computer Engineering, Computer Science, and the Maryland Cybersecurity Center, recommends six core courses and four technical electives. Specifically, the Cybersecurity students could take all six courses from this area, a minimum of two courses from the Cybersecurity Technical Electives, and if appropriate two courses from the Other Technical Electives. The elective courses are selected by the student, but require the approval of their academic advisor prior to registering.


Cybersecurity Engineering

ENPM685 Security Tools for Information Security (3)
Previously offered as ENPM808D. Prerequisites: familiarity with Linux and Windows operating systems, as well as TCP/IP and basic networking concepts.
Students will perform host- and network-based security tasks relating to security, investigation, compliance verification and auditing using a wide selection of commonly used tools on both Windows and Linux platforms, with emphasis on open source tools.
ENPM686 Information Assurance (3)
Previously offered as ENPM808E.
The first half of lectures provides an overview of cybersecurity. One third of these lectures focuses on the fundamentals of cybersecurity like authentication, access control, and security models. The second third focuses on the practice of cybersecurity using Unix and Windows NT as case studies. The last third is dedicated to security in distributed systems including network security, and World Wide Web security. The second half of the lectures focuses on the information assurance process. First, information assets are enumerated and classified. Second, the main vulnerabilities and threats are identified. Third, a risk assessment is conducted by considering the probability and impact of the undesired events. Finally, a risk management plan is developed that includes countermeasures involving mitigating, eliminating, accepting, or transferring the risks, and considers prevention, detection, and response.
ENPM691 Secure Programming in C (3)
This course teaches the fundamentals of secure programming in C. An in depth discussion on various security vulnerabilities (e.g., buffer overflows) in C applications will be taught with hands-on demo of concepts during the class. Students will learn how a C program runs “under-the-hood”. The course will teach nitty-gritty of C programs by analyzing at the assembly level. The course discusses best practices (e.g., coding standards) and design principles for secure programming so that security can be built-in during design time. In addition to assignments, students are required to present papers related to this course.
ENPM693 Network Security (3)
Prerequisite: An operating systems and/or network protocol course or equivalent. Formerly: ENPM808N.
This course provides the necessary foundation on network security and an in-depth review of commonly-used security mechanisms and techniques. Specific topics that will be covered include network attacks, firewalls, intrusion detection and response, security protocols (in particular, IPsec, SSL, and Kerberos), Denial of Service (DoS) attacks/ detection/prevention, viruses and worms, DNS, email & Voice Over IP (VoIP) security, wireless infrastructure security, web security, and privacy.
ENPM694 Networks and Protocols (3)
Note: Previously offered as ENPM808A
This course provides a deep understanding of TCP/IP protocol suit and routing in the internet. The course topics are: overview of TCP/IP, basics of IP protocol, basics of TCP protocol, Network Address Translation (NAT), Dynamic Host Configuration Protocol (DHCP), Internet Protocol Security (IPsec), Internet Control Message Protocol (ICMP), Simple Mail Transfer Protocol (SMTP), Domain Name Service (DNS), IPv6, Concepts of routing (Bellman-Ford and Dijkstra algorithms), Routing Information Protocol (RIP), Open Shortest Path First (OSPF), Interior Gateway Routing Protocol (IGRP), Enhance Gateway Routing Protocol (EIGRP), and Border Gateway Protocol (BGP).
ENPM695 Secure Operating Systems (3)
Prerequisite: ENPM691 and CMSC106
Operating systems are the basic building block on which programmers build applications and on which security-minded professionals rely, whether they are monitoring activity on a computer, testing applications for security, or determining how malicious code affected their network. This course covers advanced topics in operating systems including process management and communication, remote procedure calls, memory management (including shared memory and virtual memory), checkpointing and recovery, file system, I/O subsystem and device management, distributed file systems and security. The course consists of reading and discussing research papers and includes a course project. Please note: This course assumes knowledge of C programming and a previous operating systems class or knowledge in various issues such as process management, process synchronization, the critical section problem, CPU scheduling, memory management, secondary storage management.

Cybersecurity Engineering

ENPM611 Software Engineering (3)
Prerequisite: Competency in one programming language and must have completed an undergraduate software engineering course or permission of course instructor. This course is offered on-campus and at remote sites only and is not available online.
Software engineering concepts, methods, and practices important to both the theorist and the practitioner will be covered. The entire range of responsibilities expected of a software engineer are presented. The fundamental areas of requirements development, software design, programming languages, and testing are covered extensively. Sessions on supporting areas such as systems engineering, project management, and software estimation are also included. This course is offered on-campus and at remote sites only and is not available online.
ENPM612 System and Software Requirements (3)
Prerequisite: ENPM611. This course is offered on-campus and at remote sites only and is not available online.
Focus will be placed on the theoretical and practical aspects of requirements development. Students will recognize the place of requirements, how to work with users, requirements methods and techniques, the various requirements types, how to set requirements development schedules, requirements evolution, how to model and prototype requirements, how to evaluate and manage risk in requirements, techniques to test requirements, how to manage the requirements process, and how to write an effective requirements document.
ENPM613 Software Design & Implementation (3)
Prerequisite: ENPM611. This course is offered on-campus and at remote sites only and is not available online.
Software design concepts and practices within the field important to both the practitioner and the theorist will be covered. Architectural and detailed designs are included for batch, client/server, and real-time systems. Design considerations for structured, object-oriented, and Web-based systems are covered. Design of databases, user interfaces, forms, and reports are also included. Implementation issues that affect the design, including error handling, performance, and inter-process communication, are presented.
ENPM614 Software Testing & Maintenence (3)
Prerequisite: ENPM611. This course is offered on-campus and at remote sites only and is not available online.
Aspects of software development after coding is completed will be covered. Students will understand the various levels of testing, techniques for creating test data, how to manage test cases and scenarios, testing strategies and methods, testing batch, client/server, real-time, and Internet systems, and the development of an effective test plan. Software maintenance will include the creation of easily maintained software; preventive maintenance, corrective maintenance, and enhancements; configuration management practices; and assuring quality in software manintenance.
ENPM631 TCIP/IP Networking (3)
Prerequisite: ENPM602
To describe how IP datagram travels through the internet and are routed from the source to the destination. To introduce the two transport protocols: UDP and TCP, the proper context to use each one, and related parameters and issues. To cover some other protocols, closely related to the TCP/IP that are responsible for the seamless operation of the Internet.
ENPM632 Advanced TCIP/IP Networking (3)
Prerequisite: ENPM631
Topics to be covered are: Address resolution protocol (ARP); Error and control messages (ICMP); Internet Protocol (IP); Addressing classes; Classless and subnet address extensions (CIDR); User datagram protocol (UDP); Transport Control Protocol (TCP); TCP performance; Flow control; Congestion management; Routing protocols; Internet multicasting (IGMP); Network address translation (NAT); IPv6; Domain Name Service (DNS); Virtual LANs (VLAN); Applications (Telnet, FTP, …); The Socket Interface.
ENPM641 Systems Concepts, Issues, and Processes (3)
Prerequisite: Permission of ENGR-CDL-Office of Advanced Engineering Education. Also offered as: ENSE621. Credit only granted for: ENPM641 or ENSE621. This course is offered on-campus and at remote sites only and is not available online.
An introduction to the professional and academic aspects of systems engineering. Topics include: systems engineering activities, opportunities and drivers; case studies of systems failures; models of system lifecycle development; introduction to model-based systems engineering; representations for system structure, system behavior, system interfaces and systems intergration; reactive (even-driven) systems, systems-of-systems, measures of system complexity; visual modeling of engineering systems with UML and SySML; simplified procedures for engineering optimization and tradeoff analysis. Software tools for visual modeling of systems with UML and SySML. Students will complete a project for the front-end development of an engineering system using ULM/SySML.
ENPM642 Systems Requirements, Design and Trade-Off Analysis (3)
Prerequisite: ENPM641 or ENSE621; or permission of ENGR-CDL-Office of Advanced Engineering Education. Also offered as: ENSE622. Credit only granted for: ENPM642, ENSE602, or ENSE622. This course is offered on-campus and at remote sites only and is not available online.
This course builds on material covered in ENSE621/ENPM641, emphasizing the topics of requirements engineering, system-level design and trade-off analysis. Topics include: requirements engineering processes; representation and organization of requirements; implementation and applications of traceability; capabilities of commercial requirements; engineering software; system-level design; design structure matrices; principles of modular design; component- and interface-based design methods; multi-objective optimization-based design and tradeoff; approaches to system redesign in response to changes in requirements, reliability, trade-off analysis,and optimization-based design. Students will complete a project focussing on the development of requirements and their traceability to the system-level design of an engineering system.
ENPM687 Digital Forensics and Incidence Response (3)
Previoulsy offered as ENPM808P. Prerequisites: ENPM691. Intermediate Windows and Linux skills, familiarity with file system concepts.
Students will implement a robust incident response methodology, including proper forensic handling of evidence, and cover legal aspects of national and international law regarding forensics. The bulk of the course covers evidence acquisition, preservation, analysis and reporting on multiple platforms.
ENPM696 Reverse Software Engineering (3)
Prerequisite: ENPM691 and CMSC106
This course provides in-depth understanding of reverse software engineering concepts and hands-on training with reverse engineering tools, including disassembler, decompiler, and code analyzer. Students will become familiar with both low-level software and the x86 instruction set through binary reversing sessions. This course also provides insights into many subjects such as system security, source code analysis,software design, and program understanding that will be beneficial in a variety of fields.
ENPM697 Secure Software Testing & Construction (3)
Prerequisite: ENPM691 and CMSC106
As software gets more complex, there is even more potential for vulnerabilities to remain in the production version. While traditional and emerging software testing methods are very good at detecting a large majority of "bugs" in the software, modifications to the methods are necessary to ensure vulnerabilities related to security are discovered and mitigated prior to release. In industry, there is also a cost-benefit analysis that determines the limits to pre-release testing, further enforcing the need to uniquely identify security vulnerabilities, potentially prioritizing their correction over other vulnerabilities. This course will cover methods of building security in from the beginning of development and testing the resulting software to ensure security vulnerabilities are detected. The course will use a mixture of textbook principles and research papers to cover the concepts. Students will also complete a course project.
ENPM808O Intrusion Detection: From Theory to Practice (3)
Intrusion detection systems (IDSs) constitute an essential component of any network security solution package. Underlying IDSs is a great deal of fascinating mathematics mostly taken from various fields such as Probability Theory, Statistic, and Detection Theory. A good understanding of this mathematical background will enable Security Officers to better appreciate the benefits and limitations of IDSs and prepare them to become better practitioners. The goal of this course is two-fold. First, it will provide to students a hands-on exposure to the mathematical principles and techniques used in intrusion detection. Second, students will experiment with the real-life process of going from a theoretical intrusion detection solution to its implementation. The course will proceed by introducing mathematical concepts on an "as needed" basis, motivated by their direct applications to intrusion detection.
ENPM809A Applied Cryptography (3)
The goal of this course is to provide students with a foundational understanding of cryptography as used in the real world. Students will learn about private-key encryption, message authentication codes, key-exchange protocols, public-key encryption, and digital signatures, in addition to learning about underlying primitives such as pseudorandom number generators, block ciphers, and hash functions. In addition, the course will cover the “cryptographic mindset,” including formal threat modeling and proofs of security. The course will emphasize real-world usage of cryptography by discussing standards and best practices, and through programming assignments meant to reinforce the concepts covered in class. No prior background in cryptography will be assumed; however, students will be expected to have mathematical maturity and knowledge of C programming. Learning outcomes: Understanding of basic cryptographic primitives and schemes, and when they are appropriate. Ability to carry out basic security analysis of new constructions. Knowledge of current best practices and standards for the use of cryptography. Ability to implement basic cryptographic functionality.

Office of Advanced Engineering Education

2105 J.M. Patterson Building
University of Maryland
College Park, MD 20742

Copyright © 2017 University of Maryland. All rights reserved.

English French German Italian Portuguese Russian Spanish