ENPM - Engineering, Professional Masters

ENPM600 Probability and Stochastic Processes for Engineers (3 Credits)

Axioms of probability; conditional probability and Bayes' rule; random variables, probability distributions and densities; functions of random variables; definition of stochastic process; stationary processes, correlation functions, and power spectral densities; stochastic processes and linear systems; estimation and optimum filtering. Applications in communication and control systems, signal processing, and detection and estimation.

Prerequisite: Undergraduate introduction to discrete and continuous probability.

ENPM601 Analog and Digital Communication Systems (3 Credits)

Analog modulation methods including AM, DSBSC-AM, SSB, and QAM; effects of noise in analog modulation systems. Digital communication methods for the infinite bandwidth additive white Gaussian noise channel: PAM, QAM, PSK, FSK modulation; optimum receivers using the MAP principle; phase- locked loops; error probabilities. Digital communication over bandlimited channels: intersymbol interference and Nyquist's criterion, adaptive equalizers, symbol clock and carrier recovery systems, trellis coding. Spread spectrum systems: direct sequence modulation and frequency hopping.

Prerequisite: ENPM600; or students who have taken courses with comparable content may contact the department.

Restriction: Permission of Maryland Applied Graduate Engineering.

ENPM602 Data Networks (3 Credits)

Principles of network design, circuit switching and packet switching, OSI Reference Model; wireless data network design, error detection and correction codes; retransmission request protocols; MAC layer protocols, Markov chains and queuing models for delay analysis; multiaccess communication, local area networks and Ethernet standards; routing, flow control, internetworking; Mobile IP, IP Multicast, TCP and higher layer functions and protocols. There will be a course project covering different aspects of data network design.

Prerequisite: ENEE324; or students who have taken courses with comparable content may contact the department.

ENPM603 Theory and Applications of Digital Signal Processing (3 Credits)

Uniform sampling and the sampling theorem; the Z-transform and discrete-time system analysis; multi-rate systems; discrete-time random processes; methods for designing FIR and IIR digital filters; effects of quantization and finite work-length; the DFT and FFT; power spectrum estimation.

Prerequisite: Undergraduate introduction to discrete-time systems.

ENPM604 Machine Learning Techniques Applied to Cybersecurity (3 Credits)

Focuses on applying machine learning techniques to cybersecurity, and includes labs to be done independently, as well as an overview of the latest machine learning algorithms and their application to cyber. A brief overview of which techniques should be applied to particular cyber problems will be provided, and the course culminates in students researching the latest applications of Machine learning to cyber, allowing the students to each develop a niche of expertise in that specific subtopic. As such, the students should be increasingly employable in their area of cyber expertise by industries searching for solutions to their cyber problem space.

Credit Only Granted for: ENPM808R or ENPM604.

Formerly: ENPM808R.

ENPM605 Python Applications for Robotics (3 Credits)

This hands-on course will look at the use of Python 3 with the Robot Operating System (ROS) in order to control a mobile robot in Gazebo simulated environments.

Credit Only Granted for: ENPM809E or ENPM605.

Formerly: ENPM809E.

ENPM606 Data Science (3 Credits)

The purpose of this course is to teach some of the best and most general approaches to get the most out of data through clustering, classification, and regression techniques. Students will gain experience analyzing several kinds of data, including document collections, financial data, scientific data, and natural images.

Credit Only Granted for: ENPM808W or ENPM606.

Formerly: ENPM808W .

ENPM607 Computer System Design and Architecture (3 Credits)

Principles of computer design and cost/performance factors; instruction set design and implementation, RISC vs. CISC instruction sets; control unit and pipeline design; floating-point arithmetic; memory hierarchy designs, caches, memory interleaving, virtual memory; I/O device interconnections to CPUs and main memory. Additional topics include parallel system designs, SIMD, MIMD, SPMD; interconnection networks for processors and memories; optimization of pipeline operations; superscalar architectures, power management techniques.

Prerequisite: ENEE446; or students who have taken courses with comparable content may contact the department.

ENPM609 Microprocessor-Based Design (3 Credits)

Introduction to microprocessor components, software, and tools. Architectures, instruction sets, and assembly language programming for a commercial microprocessor family. Real-time programming techniques. Peripheral chips such as, parallel ports, counter-timers, DMA controllers, interrupt controllers, and serial communication units. Design projects emphasizing intergrated hardware and software solutions to engineering problems.

Prerequisite: An undergraduate course in computer organization and assembly language programming; and an undergraduate course in high-level language programming or programming experience.

ENPM610 Digital VLSI Design (3 Credits)

VLSI design with emphasis on CMOS technology. Logic functions using CMOS switches; MOSFET characteristics; BiCMOS, dynamic logic and domino logic structures; PLA's, FPLA's, and gate arrays; layout via MAGIC, use of VHDL, IRSIM, and Spice; design rules and verification techniques; packaging techniques; chip design options: standard cells, sea-of-gates, full custom; design capture and verification tools; design of CMOS datapaths, memory, and control; possible fabrication via MOSIS.

Prerequisite: Must have completed undergraduate courses in solid state devices and digital/analog circuit design.

ENPM611 Software Engineering (3 Credits)

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.

Prerequisite: Competency in one programming language; and must have completed an undergraduate software engineering course.

ENPM612 System and Software Requirements (3 Credits)

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.

Prerequisite: ENPM611.

Restriction: Permission of Maryland Applied Graduate Engineering.

ENPM613 Software Design & Implementation (3 Credits)

Covers the software design process, from understanding the need or problem, to creating suitable architecture and detailed design solutions, to preserving and evolving the design during implementation and maintenance. The main study topics include: requirements analysis models; user centered design; architecture design through decomposition and composition; architecture styles and architecture tactics for supporting various quality attributes such as security and usability; design for reuse and with reuse; detailed design object-oriented principles (such as SOLID) and design patterns; approaches for evaluating, comparing, and selecting design solutions; standard notations for documenting architecture views, detailed design, and analysis models; and industry standards for creating design deliverables. Students will acquire not only technical knowledge, but also soft skills such as communication, collaborations, critical thinking, leadership, negotiation, and time management.

Prerequisite: ENPM611.

Restriction: Permission of Maryland Applied Graduate Engineering.

ENPM614 Software Testing & Maintenence (3 Credits)

The purpose of this course is to provide an overview of software testing and maintenance and how these activities fit into the Software Engineering Life-Cycle. Many examples used in the lectures are derived from analysis of various NASA systems. Topics include various forms of testing such as Functional Testing, Combinatorial Testing, Structural Testing, Model-Based Testing, Security-oriented testing as well as Software Architecture's role in testability & maintainability, Regression Testing, Automated Testing, Testing Coverage including MC/DC coverage and testing standards.

Prerequisite: ENPM611.

Restriction: Permission of Maryland Applied Graduate Engineering.

ENPM615 Embedded Systems (3 Credits)

Introduction to embedded systems design and evaluation: requirements, specification, architecture, hardware and software components, integration and performance evaluation. Topics include instruction sets, CPU, embedded computing platform, program design and analysis, operating systems, hardware accelators, multiprocessors, networks, and system analysis. Real-life embedded systems design examples will be used throughput the course to illustrate these concepts.

Prerequisite: Must have completed undergraduate courses in logic design, computer architecture, and programming.

ENPM616 Wireless Communications: Systems and Network Design Principles (3 Credits)

Introduction to foundational concepts, solutions and design principles of wireless communication used by modern wireless technologies and standards. Topics include: key characteristics and modeling of different radio propagation effects including path loss, fading, interference effects in mobile networks, digital wireless communication techniques used to address channel effects, starting source and channel coding to modulation, link adaptation, scheduling and diversity schemes, advance multi-antenna, various multiple access schemes, multicast, unicast, sidelink communications and random access based channel access, system architecture, channelization schemes, downlink/uplink synchronization, system access and mobility management procedure in a basic cellar network, system design issues, RF coverage and capacity analysis using link budget analysis and basic traffic dimensioning and capacity analysis concepts.

ENPM617 Compilers (3 Credits)

Covers the underlying techniques of Compiler Construction. The course will introduce the theory and tools that can be employed in order to perform syntax-directed translation of a high-level programming language into an executable code. Topics covered include: lexical analysis; parsing theory; symbol tables; semantic analysis; intermediate representations; runtime environments; code generation; and basic program analysis and optimization. In the optional final project, Students will construct a compiler function for a simple object-oriented language by using LLVM which is a compiler infrastructure, written in C++, and now maintained by Apple Incorporated.

Prerequisite: Knowledge of at least one programming language (C or equivalent).

Credit Only Granted for: ENEE645 or ENPM617.

ENPM620 Computer Aided Engineering Analysis (3 Credits)

Computer assisted approach to the solution of engineering problems. Review and extension of undergraduate material in applied mathematics including linear algebra, vector calculus, differential equations, and probability and statistics.

Restriction: Permission of Maryland Applied Graduate Engineering.

Credit Only Granted for: ENPM620 or ENRE620/ENNU620.

ENPM621 Heat Pump and Refrigeration Systems Design Analysis (3 Credits)

Thermal engineering of heat pump and refrigeration systems and thermal systems modeling. Thermodynamics and heat transfer. Cycle analysis, alternative refrigerants, graphical analysis using property charts. Analysis of applications such as space conditioning, food perservation, manufacturing, heat recovery and cogeneration.

ENPM622 Energy Conversion I - Stationary Power (3 Credits)

Thermal engineering of modern power generation systems. Cycle analysis of various modern power generation technologies including gas turbine, combined cycle, waste burning and cogeneration. Energy storage and energy transport.

ENPM623 Engineering Combustion Emissions for Air Pollution Control (3 Credits)

Analysis of the sources and mechanisms of combustion generated air pollution. Air pollution due to internal combustion engines, power generation and industrial emissions. Techniques to minimize and control emission.

ENPM624 Renewable Energy Applications (3 Credits)

Thermodynamics and heat transfer of renewable energy sources for heating, power generation and transportation. Wind energy, solar thermal, photovoltaic, biomass, waste burning, and hydropower. Broad overview of the growing use of renewable energy sources in the world economy with detailed analysis of specific applications.

Prerequisite: Knowledge of thermodynamics, fluid mechanics, and heat transfer; and permission of Maryland Applied Graduate Engineering.

Credit Only Granted for: ENPM624 or ENME701.

ENPM625 Heating, Ventilation and Air Conditioning of Buildings (3 Credits)

Fundamentals of heating, ventilation and air conditioning analysis and design. Thermodynamics, heat transfer and fluid mechanics principles applied to field problems. Quantitative analyses stressed. Topics include psychometrics, thermal loads, incompressible flow in ducts and pipes, heat exchangers, cooling towers, and refrigeration.

Prerequisite: Undergraduate thermodynamics, fluid mechanics and heat transfer.

ENPM626 Waste and Biomass Energy Conversion (3 Credits)

Thermal, chemical, and biological processes for conversion of wastes (primarily solid and liquid) to reduce environmental impact and increase recovery of useful energy resources. Emphasis on solid wastes and their composition. Identification of pollution products and their control.

Prerequisite: Must have completed undergraduate courses in thermodynamics and heat transfer.

Restriction: Permission of Maryland Applied Graduate Engineering.

ENPM627 Environmental Risk Analysis (3 Credits)

Covers fundamental aspects of environmental risk analysis and methods used to perform environmental risk analyses. Topics covered in the class include: establishing the scope of an analysis, developing alternate conceptual models, representing source term release, modeling contaminant transport in environmental media (e.g., surface water, groundwater, air), modeling food chains, conducting an exposure assessment, understanding basic human toxicology, characterizing the dose-response relationship, and effectively communicating about and managing risk. This course covers fundamental aspects of designing a risk analysis as well as common pitfalls to avoid and major sources of uncertainty in environmental risk analyses.

ENPM631 TCP/IP Networking (3 Credits)

Exploration of how such a variety of devices can use a big range of technologies to connect seamlessly to each other. In the second half of the course we translate the basic knowledge of the protocols to more hands-on exercises in containerization (Docker) and at the end we give an introduction to Kubernetes, that is an open-source system for automating deployment and management of containerized applications.

Prerequisite: ENPM602; or permission of instructor.

Restriction: Permission of Maryland Applied Graduate Engineering.

ENPM632 Advanced TCP/IP Networking (3 Credits)

This course builds on the topics discussed in TCP/IP Networking (ENPM 631) and provides more in depth discussion of networking and application development. Highlights include IPv6, Socket programming, Docker, Kubernetes, Helm charts, Multi-protocol Label Switching (MPLS), and Internet security.

Prerequisite: ENPM631; or permission of instructor.

Restriction: Permission of Maryland Applied Graduate Engineering.

ENPM633 Introduction to Machine Learning (3 Credits)

Basic algorithms and techniques in machine learning and their practical implementation.

Credit Only Granted for: ENPM808A, ENME808E or ENPM633.

ENPM634 Penetration Testing (3 Credits)

This course will give students a hands-on deep dive into penetration testing tools and methodologies. Starting with reconnaissance, open source intelligence, and vulnerability scanning we will move on to exploiting both clients and servers, moving laterally through a network while evading security measures.

Prerequisite: Familiarity with Linux and Windows operating systems, as well as TCP/IP and basic networking concepts.

Credit Only Granted for: ENPM809Q or ENPM634.

Formerly: ENPM809Q.

ENPM635 Thermal Systems Design Analysis (3 Credits)

Evaluates the trade-offs associated with thermal systems. Use of software for system simulation, evaluation and optimization. Applications include power and refrigeration systems, pipe flow systems, distillation columns, dehumidifying coils, and co-generation systems.

Prerequisite: Undergraduate courses in thermodynamics, fluid mechanics and heat transfer.

Credit Only Granted for: ENPM635 or ENME635.

ENPM636 Additive Manufacturing for Aerospace, Energy and Water Applications (3 Credits)

In-depth understanding of Additive Manufacturing (AM) technologies and their applicability and limitations is important for future engineers and researchers in developing new engineering systems and identifying emerging opportunities in developing new products and processes. Real-life projects and the advancements that are realized through utilization of AM techniques will be presented in this course.

Credit Only Granted for: ENPM808G or ENPM636.

Formerly: ENPM808G.

ENPM637 Managing Software Engineering Projects (3 Credits)

Addresses the breadth of managing software engineering projects. It will help in transforming inspiring software engineers to software project leaders. The course will impart advanced principles, methods and tools for management of software projects in a realistic software engineering context. A hybrid project management will be taught with more focused on Agile Project Management paradigms. The course will also impart a cutting-edge scalable, modular, and integrated patterns of the Scaled Agile Framework (SAFe) 4.0 for the software engineering program and portfolios management. In addition, the course will also instill DevOps best practices to build much more responsible organizations that can move quickly in ever-changing circumstances. Methods for managing and optimizing the software development process are discussed along with techniques for performing each phase of the systems development lifecycle.

Credit Only Granted for: ENPM808E or ENPM637.

Formerly: ENPM808E.

ENPM640 Rehabilitation Robotics (3 Credits)

An introduction to a field of robotics dedicated to improving the lives of people with disabilities. The course is designed for students wishing to learn more about rehabilitation robotics, one of the fasting growing fields of robotics. Rehabilitation robotics is the application of robots to overcome disabilities resulting from neurologic injuries and physical trauma, and improve quality of life. This course considers not only engineering design and development, but also the human factors that make some innovative technologies successful and others commercial failures. Engineering innovation by itself, without considering other factors such as evidence-based R&D and product acceptance, may mean that some technologies don't become or remain available or are inefficacious to aid their intended beneficiaries. This course differs from medical robotics in its focus on improving the quality of life through robot-mediated rehabilitation treatments, rather than improving or enhancing applications such as surgical interventions.

Recommended: Basic understanding of linear time-invariant control systems (e.g. ENPM667) is preferred but not required. No background or previous experience in assistive robotics, human biomechanics, and/or neuroscience is required.

Credit Only Granted for: ENPM808J, ENPM640, or ENME444.

Formerly: ENPM808J.

ENPM645 Human-Robot Interaction (3 Credits)

To define the intersection of human-robot interactions to include human-computer interfaces, as well as robotic emotions and facial expressions emulations. The result will provide a basis for students to assess the best approaches for interacting effectively with robots. Areas to be covered include biologically-inspired robotics, cognitive robotics, cultural and social aspects of robotics, data mining, examples of human systems interfaces, and machine learning with respect to A.I. principles and limitations.

Recommended: Some knowledge of A.I. fundamentals and data analytics recommended, but not required.

Credit Only Granted for: ENPM808K or ENPM645.

Formerly: ENPM808K.

ENPM650 Solar Thermal Energy Systems (3 Credits)

Covers a review of related fundamentals, including limitations imposed by thermodynamics, solar spectral characteristics, measurement, and analytical models to predict solar irradiance with respect to time, location and orientation. The course will then examine the characteristics of various components in solar thermal systems with particular emphasis on flat plate and concentrating collectors, fixed and tracking collector systems, heat exchangers and thermal storage to understand how they work and how their performance is influenced by their design. The course will then lead to an examination of systems and system performance, including system design, predicted energy savings and related economics. The course will introduce low temperature applications such as solar hot water, space heating and water distillation, as well as concentrating solar energy for solar thermo-chemical processes to produce hydrogen and solar power generation systems. A project of importance to the development of Solar Thermal Power Systems will be assigned.

ENPM651 Heat Transfer for Modern Application (3 Credits)

The applications selected will vary widely: from cooling of electronics to prevention of fog and stalagmite formation in ice rinks. Multi-mode (i.e. simultaneous conduction, convection, radiation, mass transfer) problems will be emphasized. Lectures on basic principles, followed by assignments in which students formulate solutions and explain results.

ENPM652 Applied Finite Element Methods (3 Credits)

Introduces the Finite Element Method (FEM), widely used to perform analyses in areas such as structural/solid mechanics, fluid mechanics, heat transfer. This course presents an introduction to the mathematical and physical concepts underpinning the FEM framework. Additionally, ANSYS Workbench software will be used to demonstrate engineering-scale examples for stress and thermal analysis problems. There are no formal requirements for this course although students will benefit from a familiarity with basic concepts in linear algebra, calculus, differential equations, solid mechanics, and heat transfer.

Restriction: Must not have completed ENME674; and must not have completed ENAE652.

Credit Only Granted for: ENME674, ENAE652, or ENPM652.

ENPM654 Energy Systems Management (3 Credits)

Covers a wide range of energy management and energy efficiency topics including energy auditing, energy efficient lighting systems and motors, demand limiting and control, control strategies for optimization, direct digital control, integrated building automation systems, communication networks, distributed generation, cogeneration, combined heat and power, process energy management and the associated economic analyses. Included will be the latest internet based technologies for accessing real-time energy pricing and managing energy demand remotely for multiple buildings or campuses.

Recommended: Background in thermodynamics, fluid mechanics, and heat transfer is recommended.

ENPM655 AI-Based Software Systems (3 Credits)

The goal of this new course is to address the important problem of specifying, developing, and testing software systems that are based on artificial intelligence (AI) components.

Credit Only Granted for: ENPM808O or ENPM655.

Formerly: ENPM808O.

ENPM656 Energy Conversion II -- Mobile Power (3 Credits)

Presents the scientific and engineering basis for design, manufacture, and operation of thermal conversion technologies utilized for mobility power generation. The interface between fuel combustion chemistry and generated power are addressed. The practical aspects of design and operation of various alternatives for power are compared. The impact of choices with regard to power and fuel alternatives as well as air pollution potential are also considered.

Prerequisite: Must have completed undergraduate courses in thermodynamics, heat transfer, and fluid mechanics; or ENPM672.

ENPM657 Applied Cryptography (3 Credits)

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. The course will also try to convey the "cryptographic mindset," including formal threat modeling and proofs of security. We will emphasize real-world usage of cryptography by covering standards and best practices, discussing attacks on deployed systems, and giving programming assignments meant to reinforce the concepts covered in class.

Recommended: Knowledge of C programming.

Credit Only Granted for: ENPM809A or ENPM657.

Formerly: ENPM809A.

ENPM660 Wind Energy Engineering (3 Credits)

An examination of four central topics in wind energy engineering: the nature of wind energy as a resource for generating electricity; the aerodynamics of wind turbines by which the wind energy is converted into mechanical energy; the mechanics and dynamics of the wind energy system (tower, rotor, hub, drive train, and generator); and the electrical aspects of wind turbines. Additional topics to be included in the course include:Wind turbine design; wind turbine control; wind turbine siting, system design, and integration; Wind energy system economics; and wind energy systems environmental impacts and aspects. The course is intended to pass along substantial subject matter knowledge and skills, it can only be treated as an introduction to this extensive, multidisciplinary topic. However, students are expected to emerge with a substantial knowledge of wind energy systems and the methods used to analyze such systems.

ENPM661 Planning for Autonomous Robots (3 Credits)

Planning is a fundamental capability needed to realize autonomous robots. Planning in the context of autonomous robots is carried out at multiple different levels. At the top level, task planning is performed to identify and sequence the tasks needed to meet mission requirements. At the next level, planning is performed to determine a sequence of motion goals that satisfy individual task goals and constraints. Finally, at the lowest level, trajectory planning is performed to determine actuator actions to realize the motion goals. Different algorithms are used to achieve planning at different levels. This graduate course will introduce planning techniques for realizing autonomous robots. In addition to covering traditional motion planning techniques, this course will emphasize the role of physics in the planning process. This course will also discuss how the planning component is integrated with control component. Mobile robots will be used as examples to illustrate the concepts during this course. However, techniques introduced in the course will be equally applicable to robot manipulators.

ENPM662 Introduction to Robot Modeling (3 Credits)

This course introduces basic principles for modeling a robot. Most of the course is focused on modeling manipulators based on serial mechanisms. The course begins with a description of the homogenous transformation and rigid motions. It then introduces concepts related to kinematics, inverse kinematics, and Jacobians. This course then introduces Eulerian and Lagrangian Dynamics. Finally, the course concludes by introducing basic principles for modeling manipulators based on parallel mechanisms. The concepts introduced in this course are subsequently utilized in control and planning courses.

ENPM663 Building a Manufacturing Robotic Software System (3 Credits)

This hands-on course will look at the components of manufacturing robots, including architectures, planning/control, simulation, and measurement science. Students will explore the work that is being researched around the world in each of these areas, and will perform small hands-on exercises in most of the classes to gain a deeper understanding of how a selected set of these technologies can be applied to real-world challenges.

Recommended: Prior C++ or Python programming experience.

Credit Only Granted for: ENPM809B or ENPM663.

Formerly: ENPM809B.

ENPM664 Embedded System Hacking and Security (3 Credits)

The purpose of this course is to reveal the tools, techniques and procedures (TTPs) employed by adversaries to exploit and subvert the security of embedded systems. This course will cover the core concepts and techniques to analyze and characterize the behavior of embedded systems and platforms. Concepts will be introduced and discussed within the context of an adversary intent on altering or subverting the behavior of such systems. The course does not expect students to have any prior embedded systems experience.

Restriction: Must have permission of Maryland Applied Graduate Engineering.

Credit Only Granted for: ENPM809I or ENPM664.

Formerly: ENPM809I.

ENPM665 Cloud Security (3 Credits)

Covers the fundamentals of securing cloud-based workloads from the ground up with many hands-on examples. Through these hands-on exercises the course will demonstrate where the similarities and differences are when securing the cloud compared to securing traditional IT.

Credit Only Granted for: ENPM809J or ENPM665.

Formerly: ENPM809J.

ENPM667 Control of Robotic Systems (3 Credits)

This is a basic course on the design of controllers for robotic systems. The course starts with mainstay principles of linear control, including a review of elementary concepts of systems, and discusses applications to independent joint control. The second part of the course introduces a physics-based approach to control design that uses energy and optimization principles to tackle the design of controllers that exploit the underlying dynamics of robotic systems. The course ends with an introduction to force control and basic principles of geometric control if time allows.

ENPM670 Advanced Energy Audit, Modeling, and Management of Building Systems (3 Credits)

Provides students with fundamentals and applications of energy audit, modeling, and management in building energy systems. Energy audit procedures for electrical, lighting, mechanical and HVAC systems will be covered, and will include the economics/life-cycle costing analysis. Students will gain experience on conducting energy audit through real-world project(s). Building energy modeling tools, such as EnergyPlus and eQuest, will be introduced and implemented through assigned projects. The course coverage will also include contemporary topics such as energy management of mission critical facilities such as data centers, integrated building automation and control systems for energy efficiency, and real-time energy management for individual and network of buildings.

Prerequisite: Prior knowledge of undergraduate basic thermodynamics and heat transfer.

Recommended: Knowledge of electrical systems and controls is desirable.

ENPM671 Advanced Mechanics of Materials (3 Credits)

Formulate and quantitatively state the mechanical/physical responses of structural components and configurations subjected to loads, temperature, pre-strains etc. The two methods of anlysis employed are the mechanics of materials approach and the theory of elasticity approach. Analysis and design of components of structural/machine systems as experienced in aeronautical, civil, mechanical and nuclear engineering.

ENPM672 Fundamentals for Thermal Systems (3 Credits)

Included in this course is an introduction to thermodynamics, fluid mechanics and heat transfer. Emphasis is on gaining an understanding of the physical concepts through the solving of numerical problems associated with simple thermal fluid processes and cycles. Both ideal gases and multiphase fluids will be considered as the working fluids.

Prerequisite: Undergraduate engineering, physics or chemistry degree.

Restriction: Permission of Maryland Applied Graduate Engineering.

ENPM673 Perception for Autonomous Robots (3 Credits)

Image Processing and Computer Vision techniques for Mobile Robots is taught. Three topics are covered: Image Processing (Image Enhancement, Filtering, Advanced Edge and Texture ), 3D Vision (3D Geometry from Multiple view geometry, Motion Processing and Stereo) and an Introduction to Image Segmentation and Object Recognition. Students are introduced to a number of existing software toolboxes from Vision and Robotics, and will implement a number of smaller projects in Python.

Prerequisite: Proficiency in a programming language is required.

Recommended: Familiarity with Python.

ENPM674 Design and Synthesis of Digital Systems (3 Credits)

Students will be introduced to HDL-based design of modern digital systems, and will cover in depth the design and implementation of digital systems using the Verilog HDL. Students will learn fundamental concepts of the Verilog language; modeling of complex digital systems; simulation and verification; and Verilog coding styles for synthesis. Hands-on experience will be developed through practical designs, exercises, and projects. Students will use state-of-the-art EDA tools to design, simulate, and test digital systems. The latter part of the course will focus on customized programmable platforms such as graphics processors (GPUs) multicore platforms and FPGAs as well as coding, building, and debugging for such platforms.

Prerequisite: ENEE140, ENEE150, and ENEE350; or students who have taken courses with comparable content may contact the department.

Recommended: ENEE446.

ENPM675 Operating System Design (3 Credits)

An overview that covers process management (processes and threads, process scheduling, and process synchronization and communication), memory management (main and virtual), storage management (file and I/O), and protection and security.

Prerequisite: Undergraduate coursework in computer organization and assembly language programming.

ENPM676 VLSI Testing and Design for Testability (3 Credits)

An overview of VLSI test process and equipment, faults, fault modeling, fault simulation, combinational logi ATPG, sequential logic ATPG, Iddq testing, function testing, memory testing, delay testing, design for testability, BIST (Built-In Self-Test) and boundary scan.

Prerequisite: ENEE244; or students who have taken courses with comparable content may contact the department.

ENPM677 Wireless Sensor Networks (3 Credits)

Focuses on networking aspects, protocols and architectures for Wireless Sensor Networks. Provides a thorough description of the most important issues and questions that have to be addressed in a wireless sensor neto work.

Prerequisite: ENPM601.

Restriction: Permission of Maryland Applied Graduate Engineering.

ENPM680 Introduction to Secure Coding for Software Engineering (3 Credits)

Covers core concepts and techniques to analyze and characterize such security bugs, and potential ways to mitigate them. Concepts will be introduced and discussed within the context of an adversary intent on altering or subverting the behavior of the software with security impacts.

Credit Only Granted for: ENPM809W or ENPM680.

Formerly: ENPM809W.

ENPM685 Security Tools for Information Security (3 Credits)

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.

Prerequisite: Familiarity with Linux and Windows operating systems, as well as TCP/IP and basic networking concepts.

ENPM686 Information Assurance (3 Credits)

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.

ENPM687 Digital Forensics and Incidence Responses (3 Credits)

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.

Prerequisite: Experience with both Windows and Unix-based operating systems, including using the command line.

ENPM691 Hacking of C programs and Unix Binaries (3 Credits)

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 Credits)

Introduction to various approaches to design; specify and verify security protocols used in large systems and networks; familiarization with some current technologies. Security threats and countermeasures, communication security and basic encryption techniques, authentication protocols, data confidentiality and integrity, analysis of cryptographic protocols, and access control in large systems and networks.

Prerequisite: An operating systems and/or network protocol course or equivalent.

Formerly: ENPM808N.

ENPM694 Networks and Protocols (3 Credits)

Provides an in-depth review of the Internet with a focus on the end-to-end effects of technologies and protocols that operate in different layers. All protocols and technologies are covered in a holistic framework with an emphasis on their effect on the network and application performance. The course also includes a brief introduction of more modern concepts in the field of networking such as SDN and NFV to encourage deeper study of those topics.

ENPM695 Secure Operating Systems (3 Credits)

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.

Prerequisite: ENPM691 and CMSC106; or permission of instructor. And permission of ENGR-CDL-Office of Advanced Engineering Education.

Credit Only Granted for: ENPM695 or ENPM808B.

Formerly: ENPM808B.

Additional Information: 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.

ENPM696 Reverse Software Engineering (3 Credits)

An in-depth understanding of software reverse engineering concepts and hands-on training with reverse engineering tools, including disassemblers, decompilers, and code analyzers. 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.

Prerequisite: ENEE150 or equivalent.

ENPM697 Secure Software Testing and Construction (3 Credits)

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.

Prerequisite: Permission of instructor; or (ENPM691 and CMSC106).

Restriction: Must have permission of the Maryland Applied Graduate Engineering office.

ENPM700 Software Development for Robotics (3 Credits)

Teaches the tools and processes to develop professional quality software for deployed systems and products. Students will learn the best practices of taking new ideas or prototypes, and understanding what it takes to build the complex software that is so important to today's commercialized robotic systems.

Prerequisite: ENPM702.

Restriction: Permission of Maryland Applied Graduate Engineering.

Credit Only Granted for: ENPM808X or ENPM700.

Formerly: ENPM808X.

ENPM701 Autonomous Robotics (3 Credits)

This is a hands-on course exploring the principles of robotic autonomy. Students will explore the theoretical, algorithmic, and implementation aspects of autonomous robotic modeling and controls, perception, localization and SLAM, planning, and decision making. These techniques will be applied through completion of a semester-long hands-on project employing the course material, ground-based mobile robots, and Python.

Restriction: Permission of Maryland Applied Graduate Engineering.

Credit Only Granted for: ENPM809T or ENPM701.

Formerly: ENPM809T.

ENPM702 Introductory Robot Programming (3 Credits)

This hands-on course will introduce students to the C++ programming language and is specifically designed for students who have had little to no programming experience in their previous studies.

Restriction: Permission of Maryland Applied Graduate Engineering.

Credit Only Granted for: ENPM809Y or ENPM702.

Formerly: ENPM809Y .

ENPM703 Fundamentals of AI and Deep Learning (3 Credits)

Fundamentals of machine learning techniques with a deep dive into cutting edge concepts that enabled neural networks to achieve state of the art performance in many visual, textual, and biomedical problems. Fundamental concepts like forward networks, convolution networks, recurrent neural networks, back propagation, loss functions, batch gradient descent, and stochastic optimization will be studied.

Credit Only Granted for: ENPM809K or ENPM703.

Formerly: ENPM809K.

ENPM808 Advanced Topics in Engineering (1-3 Credits)

Advanced topics selected by the faculty for students in the professional master of engineering program. May be taken for repeated credit when identified by topic title.

ENPM809 Special Topics in Engineering (3 Credits)

Special topics selected by the faculty for students in the professional master of engineering and graduate certificate in engineering program. May be taken for repeated credit when identified by topic title.

Repeatable to: 30 credits if content differs.

ENPM818 Variable Topics in Engineering (3 Credits)

Variable topics selected by the faculty for students in the professional master of engineering and graduate certificate in engineering program. May be taken for repeated credit when identified by topic title.

Repeatable to: 30 credits if content differs.