Bachelor of Science in Computer Engineering (BSCPE) The Computer Engineering program prepares students for careers relating to the analysis, design and application of modern computer systems, including both hardware and software components. The Computer Engineering faculty is committed to sustaining a vigorous academic environment that values quality and diversity in the educational experience. Program strengths include a major engineering design experience, integration of hardware/software and computer systems issues, especially in the context of real-time, embedded, and networked systems; use of contemporary engineering design and modeling tools throughout the curriculum; and advanced engineering design electives in hardware, software and networking. A broad background in engineering is developed through the engineering core curriculum and courses from electrical and computer engineering. The curriculum provides a thorough basis in mathematics, probability and statistics, physical sciences, engineering sciences, laboratory experience, and design experience. This background enables students to apply computer engineering principles to a variety of contemporary problems. An engineering approach is emphasized throughout computer related coursework. Computer Engineering Advising and Mentoring Computer Engineering majors receive curriculum advising from the Center for Engineering Education (CUE2) which is located in the Engineering Building Room 157. Students are free to make an appointment to speak with an advisor to discuss curriculum planning, progress towards graduation, and problems with classes or other concerns as needed. Please click on this link for more information: http://www.uah.edu/eng/departments/undergraduate-engineering/cuee-current-students/academic-advising Important Links CPE Program Check Sheet and Flowchart Undergraduate Computer Engineering Courses (CPE) 211 Introduction to Computer Programming in Engineering (3 hrs)Solution of engineering problems using a digital computer. Hardware structure of the stored-program computer; programming in a high level language such as C or C++, engineering approximation of dynamic systems; top-down design and algorithms. Practice in solving engineering problems. Students enrolling in CPE 211 must enroll concurrently in CPE 211L. Prerequisites: ENG 101 and MA 171 with concurrency. 212 - Fundamentals of Software Engineering (3 hrs)Introduction to structured programming using C++. Search and sort algorithms. Introduction to data structures. Applications to engineering related problems. Prerequisites: CPE 211. 221 - Computer Organization (3 hrs)Functional organization of stored-program digital computers including number representation, assembly language programming, computer hardware, micro-operations, and control logic; microprocessor architecture. Prerequisites: CPE 211; Prerequisite with concurrency: EE 202. 322 – Digital Hardware Design Fundamentals (3 hrs)Advanced concepts in Boolean algebra, use of hardware description languages as a practical means to implement hybrid sequential and combinational designs, digital logic simulation, rapid prototyping techniques, and design for testability concepts. Focuses on the actual design and implementation of sizeable digital design problems using representative Computer Aided Design (CAD) tools. Prerequisites: CPE 221. Prerequisite with concurrency: EE 315. Corequisite: CPE 324. 323 - Introduction to Embedded Computer Systems (3 hrs)The course examines both hardware and software aspects in building embedded computer systems, as well as methods to evaluate design tradeoffs between different technology choices. The students develop an appreciation of technology capabilities and limitations and appreciation of all system components necessary to be able to design and implement a basic embedded computer system and interface it to the outside world. Experiments performed in the Microcomputer Laboratory provide considerable experience, allowing students to develop programs in assembly language and C and program embedded systems to perform required functions. Prerequisites: EE 202, CPE 221. Corequisite: CPE 325. 324 Advanced Logic Design Laboratory (1 hr)Demonstration through laboratory experimentation of fundamental concepts in digital logic design. Use of hardware description languages as a practical means to implement hybrid sequential and combinational digital designs, digital logic simulation, and rapid prototyping techniques. Focuses on the actual design and implementation of sizable digital design problems using representative Computer Aided Design (CAD) tools. Corequisite: CPE 322. 325 - Embedded Systems Laboratory (1 hr)Laboratory component of Introduction to Embedded Computer Systems. Students will gain considerable experience working with modern integrated software development environments and hardware platforms to solve practical problems. The experiments will include software development in assembly and C/C++; debugging and testing of embedded systems; and input/output interfacing including timers, serial communication interfaces, ports, analog-to-digital converters, digital-to-analog converters, and direct memory-access controllers. Corequisite: CPE 323. 353 Software Design and Engineering (3 hrs)Hands-on experience developing a substantial software project using software design tools such as the SQL database system and the Qt graphical interface development environment. Introduction to a software process including requirements elicitation and testing techniques. Prerequisites: CPE 212. Prerequisite with concurrency: CS 317. 381 Fundamentals of Signals and Systems for Computer Engineers (3 hrs)Introduction to the fundamental concepts in continuous and discrete signals and systems, and methods of signal and system analysis. Topics covered: Fourier series, Fourier and Laplace transforms, system representation by transfer functions and impulse response functions, convolution integrals, discrete time signals and system, sampling techniques, Z and discrete Fourier transforms. No credit for EE or OPE students. Prerequisites: EE 213 and MA 238. CPE 412 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. CPE 423 - 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 reﬂect this partitioning; (c) analyzing and explaining the control-ﬂow and data-ﬂow 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. CPE 426 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 202 and EE 315. CPE 427 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 EE/CPE 428. Students enrolling in CPE 427 must enroll concurrently in CPE 427L. Prerequisites: EE 202 and 315. Same as EE 427. CPE 437 VLSI Design II (3 hrs)Advanced experience with CAD tools for VLSI design, IC testing. Design Project from EE/CPE 427 to be fabricated and tested. Implementation and verification of test programs, IC testing and troubleshooting, legal, economic, and ethical design issue. Oral presentations and written reports are required. Students enrolling in CPE 428 must enroll concurrently in CPE 428L. Prerequisites: CPE/EE 427. Same as EE 428. CPE 431 Introduction to Computer Architecture (3 hrs)Study of existing computer structures. Computer organization with emphasis on busing systems, storage systems, and instruction sets. Performance models and measures, pipelining, cache and virtual memory, introduction to parallel processing. Prerequisites: CPE 322 and CPE 323. CPE 434 - 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. Prerequisites: CPE 221, CPE 353, Corequisite CPE 435. CPE 435 - Operating Systems Laboratory (1 hr) Laboratory component of Operating Systems course. Experiments include implementation of device drivers, process and thread management, virtual memory management, dynamic memory management, file-systems. Corequisite: CPE 434. CPE 436 - 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. CPE 438 - Real Time and Embedded Systems (3 hrs) Study of design methodologies for reliable real time systems. Prerequisite: CPE 434. CPE 448 - 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. CPE 449 - 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 448. CPE 453 - Senior Software Studio (3 hrs) Basic concepts of software engineering. Software project management including specification, design, implementation, testing, and documentation. Software design and management tools. Includes a multi-student software project. Prerequisites: CS 317, CPE 353. CPE 461 - 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, CPE 221. CPE 490 - Special Topics in Computer Engineering (1, 2, or 3 hrs) Topics will vary. CPE 495 - Computer Engineering Design I (3 hrs) First course in the senior capstone design sequence. The focus of this class is the application of techniques to the design of electronic systems that have digital hardware and software components. Students will apply the theory acquired from numerous engineering courses to solve real-world design problems. Prerequisites: CPE 323, CPE 353, EE 315. CPE 496 - Computer Engineering Design II (3 hrs) Second course in the senior capstone design sequence. The focus of this class is the application of techniques to the design of electronic systems that have digital hardware and software components. Students will apply the theory acquired from numerous engineering courses to solve real-world design problems. Prerequisite: CPE 495. CPE 497 - Internship in Computer Engineering (1, 2, or 3 hrs) Active involvement in an engineering project in an engineering enterprise, professional organization, or government agency that has particular interest and relevance to the student. CPE 499 - Project in Computer Engineering (3 hrs) Individual design project under the direction of an ECE faculty member.