512 Introduction To Parallel Programming (3 hrs)
Introduction to software development methodologies for multi-core, clustered, and general purpose GPU computing environments. Exploration of parallel machine models, performance evaluation, process and thread creation, mutual exclusion, synchronization, and message passing communication mechanisms. Students gain insight into these concepts through hands-on exercises written in C/C++ that employ the MPI, OpenMP, and OpenACC SDKs. Prerequisites: CPE 212 and CS 317.

523 Hardware/Software Co-Design (3 hrs)
This course focuses on electronic systems whose functionality is realized partially in hardware and partially in software. This includes a study of modeling techniques of hardware and software components at different levels of abstraction and a study of interfacing techniques between hardware components and software components. The course includes homework and practical experiments. The students having completed this course, you will have experience in the following: (a) transforming simple software programs into cycle-based hardware descriptions with equivalent behavior and vice versa; (b) partitioning simple software programs into hardware and software components, and creating appropriate hardware-software interfaces to reflect this partitioning; (c) analyzing and explaining the control-flow and data-flow of a software program and a cycle-based hardware description; (d) identifying performance bottlenecks in a given hw/sw architecture and optimizing them by transformations on hardware and software components. Prerequisites: CPE 526 or permission of instructor.

526 VLSI Design Using Hardware Description Languages, Modeling, and Synthesis (3 hrs)

Modern VLSI design techniques and tools, such as silicon compilers, (V)HDL modeling languages, placement and routing tools, synthesis tools, and simulators. Students will design, simulate, and layout using both programmable logic families and ASIC libraries. Prerequisites: EE 315, EE 202.

527 VLSI Design I (3 hrs)
Introduction to VLSI design using CAD tools, CMOS logic, switch level modeling, circuit characterization, logic design in CMOS, systems design methods, test subsystem design, design examples, student design project. Design project to be fabricated and tested in CPE 528. Prerequisites: EE 202 and EE 315. Corequisite: CPE 527L.

528 VLSI Design II (3 hrs)
Advanced experience with CAD tools for VLSI design, IC testing. Design project from CPE 527 will be fabricated and tested. Implementation and verification of test programs, IC testing and troubleshooting, legal, economic, and ethical design issues. Oral presentations and written reports are required. Prerequisites: CPE 527. (Same as EE 428, CPE 428.) Corequisite: CPE 528L.

531 Introduction to Computer Architecture (3 hrs)
Existing computer structures. Computer organization with emphasis on busing systems, storage systems, and instruction sets. Special purpose architecture, performance models and measures, VLSI influence on architecture. Prerequisite: CPE 322, CPE 324.

534 Operating Systems (3 hrs)
Study of the fundamentals of operating systems. Emphasis on processes, file management, inter-process communication, input-output, virtual memory, networking and security. Prerequisite: CPE 221, CPE 353.

536 Internals of a Modern Operating System (3 hrs)
In depth study of the design of modern operating systems such as Unix, NT, and Linux. Emphasis on the internals and implementation details of interrupt processing, real-time clocks, device independent I/O, process management, memory management, file management. Prerequisite: CPE 434.

538 Real Time and Embedded Systems (3 hrs)
Study of design methodologies for reliable real time systems. Prerequisite: CPE 434.

548 Introduction to Computer Networks (3 hrs)
Introduction to the concepts and architecture of computer networks. Review of communication protocols using the Internet and the TCP/IP model as major examples. High-speed networking, congestion control, data compression, security and distributed processing. Prerequisites: CPE 112, CPE 221.

549 Introduction to Cybersecurity Engineering (3 hrs)
Introduction to cryptography and computer security through hardware and physical security to a knowledge of audit methods, security management, and public law. The course will introduce security engineering skills such as business process analysis, software security, IAE evaluation, and IAE testing. Prerequisite: CPE 548. Corequisite: CPE 549L.

551 Software Design & Engineering (3 hrs)
Basic concepts of Software Engineering. Software project management including specification, design, implementation, testing, and documentation. Software tools for project management. Includes a multi-student software project. Prerequisites: CPE 212, CS 317.

561 Translation Systems (3 hrs)
Grammars, parsers, and lexical analyzers; implementation of translators via top-down and bottom up techniques; grammar analysis to identify ambiguities. Practical applications of translators including conversion of file formats and compilation of traditional computer languages. Prerequisites: CPE 212 and CPE 321.

590 Selected Topics in Computer Engineering (Credit to be arranged)

612 Parallel Algorithms (3 hrs)
Introduction to metrics describing the performance and scalability of parallel algorithms. Performance analysis of parallel algorithms for performing sorting, matrix multiplication, solving linear equations, and FFT. Prerequisite: CPE 512.

CPE 613 - General Purpose GPU Computing (3 hrs)
The focus of this course is to introduce emerging techniques and programming paradigms that can be used to accelerate the processing speed of scientific and other high performance applications using Graphics Processing Units, GPUs.  GPUs represent low-cost highly parallel video processing hardware that can be programmed for general purpose applications using the CUDA/OpenCL software architecture. The course will survey the current state of research and industrial activity and will give students hands-on experience implementing design applications on real-world GPU facilities for a wide range of scientific applications. Prerequisite: CPE 512/412 .

619 Modeling and Analysis of Computer and Communication Systems (3 hrs)
Modeling of single and multiprocessor systems, single and multi-stage interconnection networks, Computer Networks. Analysis using Stochastic processes, Markov and Queuing techniques. Modeling using Petri Nets and Finite State models. Prerequisites: MA 585 or EE 500 or permission of instructor.

621 Advanced Embedded Systems (3 hrs)
Deeply embedded low-power wireless sensors. Low-power microcontroller architectures, sensor platform architecture, wireless intelligent sensors, low power wireless communication standards, battery powered systems, resource constrained operating systems, data aggregation/sensor synergy, and collaborative signal processing. Prerequisite: CPE 323.

625 CMOS Analog Integrated Circuit Design (3 hrs)
Analog circuit design in CMOS technology. CMOS processing technology. MOS transistor modeling. Basic current mirrors and single-stage amplifiers. Noise analysis and modeling. Basic OpAmp design and compensation. Advanced current mirrors and OpAmps. Bandgap references. Oscillators. CMOS technology characterization for radio-frequency (RF) design. Prerequisite: EE 416. (Same as EE 620)

626 Advanced VLSI Design (3 hrs)
Advanced VLSI Design. Case study of the VLSI design of a modern RISC processor using a Hardware Description Language. Prerequisite: CPE 526.

628 Testing of Hardware Systems (3 hrs)
Introduction to testing of digital electronic circuits and systems. Topics include: fault modeling, testing problems, testing schemes, test generation for combinational and sequential circuits, the complexity of testing, design for testability, built-in self-testing and boundary scan. Prerequisite: CPE 526.

631 Advanced Computer Systems Architecture (3 hrs)
Study of architectural features of modern processors, including cache memories and memory systems, pipeline designs, branch prediction techniques. Design of superscalar, multithreaded VLIW processors, code optimization for such systems will be studied. Quantitative evaluation of architectural features are emphasized throughout the course. Prerequisites: CPE 512, CPE 531.

633 Fault-Tolerant Computing Systems (3 hrs)
Analysis and design of very high reliability and availability systems. Fault types, reliability techniques, and maintenance techniques. Case studies of high-availability long-life, life-critical systems. Both hardware and software techniques for achieving fault-tolerance will be studied. Prerequisites: CPE 531, CPE 526, EE 500.

635 Systolic Array Processing (3 hrs)
Systolic structure of fast algorithms and switchable array realizations. Prerequisite: CPE 512.

642 Data and Digital Communications (3 hrs)
Introduction to digital and data communications; transmission channels; modulation and coding; telephone networks; data communication standards; noise and distortion; computer interfacing; protocols. Prerequisites: EE 385 Same As: EE 642.

645 Computer Network Security (3 hrs)
Principles and concepts of computer network security. Introduction to cryptography, confidentiality, authentication, digital signatures, IP security, web security, and other network security-related issues. Prerequisites: CPE 448/548 or permission of instructor.

646 Mobile and Wireless Networks (3 hrs)
High-level issues in mobile and wireless networks. The main topics are mobile IP, Mobile Ad hoc Networks (MANETs), wireless sensor networks, wireless LAN, Bluetooth, satellite systems, and security issues in mobiles and wireless networks. Prerequisites: CPE 448/548.

647 Ubiquitous Computing (3 hrs)
The course is based on the new “anytime, anywhere” computing paradigm, also known as ubiquitous computing. This course is project oriented, and explores issues of mobile, wireless, and distributed computing in Internet environment, advanced human-computer interfaces, and power efficient computing. Prerequisite: Approval of instructor.

648 Advanced Computer Networks (3 hrs)
Advanced principles and concepts of general-purpose computer networks, with a special emphasis to internetworking and Internet. Transport and higher level protocols emphasis. Programming issues. High-speed networking, congestion control, data compression, security and distributed processing will be covered. Prerequisite: CPE 548.

649 Advanced Cybersecurity Engineering (3 hrs)
Introduction to topics ranging from how to attack computer systems and networks to how to protect and recover from attacks on computer systems and networks. Basic process utilized by computer attackers in order to develop a complete understanding and appreciation of the threat to information assurance. Process of detecting, preventing, and recovering from information assurance attacks. Intrusion Detection and Prevention Systems, Auditing, Security Vulnerability Assessments, and the Incident Response process. Prerequisite: CPE 549. Corequisite: CPE 649L.

656 Software Engineering Studio I (3 hrs)
This is the first course in a two course studio series required for the MSSE degree in the College of Engineering. Students will work in small design teams on medium sized software projects. Activities include developing requirements, designing and constructing system prototypes, developing and implementing test and verification plans, and presenting the project for evaluation. The practice of software design and evaluation will be conducted in an iterative cycle using best software engineering practices, so that design and execution can be refined over the lifecycle of the project. Prerequisite: CS 650 and completion of 24 credits in the MSSE program.

658 Software Engineering Studio II (3 hrs)
This is the second course in a two course studio series required for the MSSE degree in the College of Engineering. Students will continue to work in small design teams on medium sized software projects. Activities include software metrics, project metrics, risk analysis, tracking, mitigation, developing requirements, designing and constructing system prototypes, developing and implementing test and verification plans, and presenting the project for evaluation. The practice of software design and evaluation will be conducted in an iterative cycle using best software engineering practices, so that design and execution can be refined over the lifecycle of the project. Prerequisite: CPE 656.

661 Code Optimizations (3 hrs)
Discussion of methods to improve the performance of code generated by compilers. Data-flow and dependence analysis, peep-hole optimizations, instruction scheduling, and parallelism enhancing transformations. Techniques to improve the utilization of registers, instruction level parallelism, and memory hierarchies in modern computer systems. Prerequisites: CPE 561 and CPE 631.

690 Selected Topics in Computer Engineering (Credit to be arranged)
Prerequisite: Graduate Standing.

695 Project in Computer Engineering (Credit to be arranged)
Prerequisite: Graduate Standing.

699 Master’s Thesis (1 or 3 or 6 hrs)
Required each semester student is working and receiving direction on a master’s thesis. Minimum of two semesters and 6 hours required for M.S.E. students. A maximum of 9 hours credit is awarded upon successful completion of master’s thesis.

710 Selected Topics in Parallel Processing (3 hrs)
Prerequisite: CPE 612.

715 Selected Topics in Computational Theory (3 hrs)
Prerequisite: CS 603.

720 Selected Topics in VLSI Design (3 hrs)
Prerequisite: CPE 626.

726 Algorithms for VLSI Design Tools (3 hrs)
Tools for VLSI Design. This course is concerned with the algorithms found in VLSI design tools. Prerequisite: CPE 526

730 Selected Topics in Computer Architecture (3 hrs)
Prerequisite: CPE 631.

731 Distributed Shared Memory Systems (3 hrs)
Study issues related to performance, granularity of sharing, multithreading, cache coherence, memory consistency models, pull vs push caching, false sharing, thread migration. Case studies systems, including DASH, FLASH ThreadMarks, SHRIMP, Calypso, Alewife to understand these issues. Prerequisite: CPE 631.

735 Selected Topics in Operating Systems (3 hrs)
Prerequisites: CPE 631, CPE 536.

740 Selected Topics in Computer Networks (3 hrs)
Prerequisites: CPE 648.

749 Neural Networks and Their Application (3 hrs)
Elements of threshold logic and discriminant functions; pattern classification and general mappings with feedforward networks; training algorithms and self-organization; Hopfield model and Boltzmann machine computations, selected topics. Prerequisite: EE 604 or CPE 512. (Same as EE 749.)

760 Selected Topics in Compilers & Translation Systems (3 hrs)
Prerequisites: CPE 661.

790 Selected Topics in Computer Engineering (Credit to be arranged)

795 Research in Computer Engineering (Credit to be arranged)

799 Doctoral Dissertation (3, 6, or 9 hrs)
Required each semester student is enrolled and receiving direction on doctoral dissertation.