Computer Engineering Course Descriptions
Computer Science Courses
CS 5303 Computer Science I (3 semester hours) Computer science problem solving. The structure and nature of algorithms and their
corresponding computer program implementation. Programming in a high-level
block-structured language (e.g., PASCAL, Ada, C++, or
JAVA). Elementary data structures: arrays,
records, linked lists, trees, stacks, and queues. (3-0) R
CE 5325 (EEDG 5325) Hardware Modeling Using HDL (3 semester hours) This course introduces students to hardware description language
(HDL) beginning with simple examples and describing tools and methodologies. It
covers the language, dwelling on fundamental stimulation concepts. Students are
also exposed to the subset of HDL that may be used for synthesis of custom
logic. HDL simulation and synthesis labs and projects are performed using
commercial and/or academic VLSI CAD tools. Prerequisite: EE 3320 or equivalent.
(3-0) T
CS 5330 Computer Science II (3 semester hours) Basic concepts of
computer organization: Numbering systems, two’s complement notation, multi-level machine concepts,
machine language, assembly programming and optimization, subroutine calls,
addressing modes, code generation process, CPU datapath,
pipelining, RISC vs. CISC, performance calculation. Co-requisite: CS 5303. (3-0) R
CS 5333
Discrete Structures
(3 semester hours) Mathematical foundation of computer science. Logic, sets, relations, graphs and algebraic structures. Combinatorics and metrics
for performance evaluation of algorithms.
(3-0) S
CS 5343 Algorithm Analysis and Data Structures (3 semester hours) Formal
specifications and representation of lists, arrays, trees, graphs, multi-linked
structures, strings and recursive pattern structures. Analysis of associated algorithms. Sorting and searching, file structures. Relational data
models. Prerequisites: CS 5303, CS 5333.
(3-0) S
CS 5348 Operating Systems Concepts (3 semester hours) An introduction to fundamental concepts in operating systems,
their design, implementation, and usage. Topics include: process management,
main memory management, virtual memory, I/O and device drivers, file systems,
secondary storage management, introduction to critical sections and deadlocks.
Prerequisites: CS 5330 and CS 5343 (may be taken concurrently) and a working
knowledge of C and Unix. (3-0) S
Computer Engineering Courses
CE 5354 (CS 5354, SE 5354) Software Engineering (3 semester hours) Formal
specification and program verification.
Software
life-cycle models and their stages. System and
software requirements engineering; user-interface design. Software architecture, design, and analysis. Software testing, validation, and quality assurance. Corequisite: CS 5343 (CS 5343 can
be taken before or at the same time as CS 5354) (3-0) S
CE 5381 Curriculum Practical Training in Computer Engineering (3
semester hours) This course is required of students who need additional
training in engineering practice. Credit does not apply to the 33 hour M.S.C.E.
requirement. Consent of Graduate Adviser required. (May be repeated to a maximum of 9
hours). (3-0) S
CE 6301 (EEDG 6301) Advanced Digital Logic (3 semester hours) Modern
design techniques for digital logic. Logic synthesis and design
methodology. Link between front-end and back-end
design flows. Field programmable gate arrays and reconfigurable digital
systems. Introduction to testing,
simulation, fault diagnosis and design for testability. Prerequisites: EE 3320
or equivalent and background in VHDL/Verilog. (3-0) T
CE 6302 (EEDG 6302) Microprocessor Systems (3 semester hours) Design of
microprocessor based systems including I/O and interface devices. Microprocessor
architectures. Use of emulators and other
sophisticated test equipment. Extensive laboratory work. Prerequisite: EE 4304 or equivalent and background in VHDL/Verilog. (2-3) Y
CE 6303 (EEDG 6303) Testing and Testable Design (3 semester hours)
Techniques for detection of failures in digital circuits and systems. Fault
modeling and detection. Functional testing and algorithms for automatic test pattern
generation (ATPG). Design of easily testable digital
systems. Techniques for introducing built-in
self test (BIST) capability.
Test of various digital modules, such as PLA’s, memory circuits, datapath, etc. Prerequisites: EE 3320 or equivalent and
background in VHDL/Verilog. (3-0) Y
CE 6304 (EEDG 6304, CS 6304) Computer Architecture (3 semester hours)
Trends in processor, memory, I/O and system design. Techniques for quantitative
analysis and evaluation of computer systems to understand and compare
alternative design choices in system design. Components in high performance
processors and computers: pipelining, instruction level parallelism, memory
hierarchies, and input/output. Students will undertake a major computing system
analysis and design project. Prerequisites: EE 4304 and C/C++. (3-0) Y
CE 6305 (EEDG 6305) Computer Arithmetic (3 semester hours) Carry look
ahead systems and carry save adders. Multipliers, multi-bit recoding schemes,
array multipliers, redundant binary schemes, residue numbers, slash
numbers. High-speed division and square root circuits. Multi-precision
algorithms. The IEEE floating point standard,
rounding processes, guard bits, error accumulation in arithmetic processes. Cordic algorithms. Prerequisites: EE 3320 and C/C++. (3-0) Y
CE 6306 (EEDG 6306) Application Specific Integrated Circuits Design (3
semester hours) This course
discusses the design of application specific integrated circuits (ASIC).
Specific topics include: VLSI system design specification, ASIC circuit
structures, synthesis, and implementation of an ASIC digital signal processing
(DSP) chip. Prerequisite: EE 3320. (3-0) Y
CE 6307 (EEDG 6307) Fault-Tolerant Digital Systems (3 semester hours)
Concepts in hardware and software fault tolerance. Topics include fault models,
coding in computer systems, fault diagnosis and fault-tolerant routing, clock
synchronization, system reconfiguration, etc. Survey of practical fault-tolerant
systems. Prerequisites: EEDG 6301, ENGR 3341
or equivalent. (3-0) R
CE 6308 (CS
6396, EEDG 6308) Real-Time Systems (3 semester hours) Introduction to real-time applications
and concepts. Real-time operating systems and
resource management. Specification
and design methods for real-time systems.
System
performance analysis and optimization techniques. Project to specify, analyze, design, implement and test
small real-time system. Prerequisite:
CS 5348. (3-0) R
CE 6324 (CS 6324) Information Security (3 semester hours) A
comprehensive study of security vulnerabilities in information systems and the
basic techniques for developing secure applications and practicing safe
computing. Topics include common attacking techniques such as buffer overflow,
Trojan, virus, etc. UNIX, Windows and Java security. Conventional encryption. Hashing functions and data integrity. Public-key encryption (RSA, Elliptic-Curve). Digital signature. Watermarking
for multimedia. Security standards and applications. Building secure software and systems. Management and analysis of security. Legal and ethical issues in computer security. Prerequisite: CS 5348 and CS 5343 (3-0) R
CE 6325 (EECT 6325) VLSI Design (3 semester hours) Introduction to MOS
transistors. Analysis
of the CMOS inverter. Combinational
and sequential design techniques in VLSI; issues in static, transmission gate
and dynamic logic design. Design and
layout of complex gates, latches and flip-flops, arithmetic circuits, memory
structures. Low power digital design. The method of logical effort. CMOS technology,. Use of CAD tools to design, layout, check, extract and
simulate a small project. Prerequisite: EE 3320 and ENGR 3301 or equivalent.
(3-0) Y
CE 6345 (EEDG 6345) Engineering of Packet-Switched Networks (3 semester
hours) Detailed coverage, from the point of view of engineering design, of the
physical, data-link, network and transport layers of IP (Internet Protocol)
networks. This course is a Masters-level introduction to packet networks. Prior
knowledge of digital communication systems is strongly recommended.
Prerequisite: EE 3350 or equivalent. (3-0) Y
CE 6352 (CS
6352) Performance of Computer Systems and Networks (3 semester hours) Overview of case
studies. Quick review of principles of
probability theory. Queuing models
and physical origin of random variables used in queuing models. Various
important cases of the M/M/m/N queuing system. Little’s law. The M/G/1
queuing system. Simulation of queuing systems. Product form solutions of open and closed queuing networks. Convolution algorithms and Mean Value Analysis for closed
queuing networks. Discrete time queuing systems. Prerequisite: a first course on probability theory. (3-0) S
CE 6353 (CS
6353) Compiler Construction
(3 semester hours) Lexical analyzers, context-free grammars. Top-down and bottom-up parsing; shift reduce and LR
parsing. Operator-precedence,
recursive-descent, predictive, and LL parsing. LR(k), LL(k) and
precedence grammars will be covered. Prerequisites: CS 5343 and CS 5349. (3-0)
Y
CE 6354 (CS 6354, SE 6354) Advanced Software Engineering (3 semester
hours) This course covers advanced theoretical concepts in software engineering
and provides an extensive hands-on experience in dealing with various issues of
software development. It involves a semester-long group software development
project spanning software project planning and management, analysis of
requirements, construction of software architecture and design, implementation,
and quality assessment. The course will introduce formal specification,
component-based software engineering, and software maintenance and evolution.
Prerequisite: CS 5354 (or equivalent) and knowledge of Java (3-0) S
CE 6367 (CS 6367, SE 6367) Software Testing and Verification (3 semester
hours) Fundamental concepts of software testing. Functional testing. GUI based testing tools. Control flow based test adequacy
criteria. Data flow based test adequacy criteria. White box based testing
tools. Mutation
testing and testing tools. Relationship
between test adequacy criteria.
Finite state machine based testing. Static and dynamic program slicing
for testing and debugging. Software
reliability. Formal verification of program
correctness. Prerequisites: CE/CS/SE 5354
or consent of instructor. (3-0) Y
CE 6370 (EEDG 6370) Design and Analysis of Reconfigurable Systems (3
semester hours) Introduction to reconfigurable computing, programmable logic:
FPGAS, CPLDs, CAD issues with FPGA based design, reconfigurable systems:
emulation, custom computing, and embedded application based computing, static
and dynamic hardware, evolutionary design, software environments for
reconfigurable systems. Prerequisite: EE 3320 or equivalent. (3-0) R
CE 6375 (EEDG 6375) Design Automation of VLSI Systems (3 semester hours)
This course deals with various topics related to the development
of CAD tools for VLSI systems design. Algorithms, data structures, heuristics
and design methodologies behind CAD tools. Design and analysis of algorithms
for layout, circuit partitioning, placement, routing, chip floor planning, and
design rule checking (DRC). Introduction to CAD algorithms for RTL and behavior level
synthesis, module generators, and silicon compilation. Prerequisite: CS 5343; Co-requisite: EECT 6325. (3-0) Y
CE 6378 (CS 6378, TE 6378) Advanced Operating Systems (3 semester hours)
Concurrent processing, inter-process communication, process synchronization,
deadlocks, introduction to queuing theory and operational analysis, topics in
distributed systems and algorithms, checkpointing,
recovery, multiprocessor operating systems. Prerequisites: CS 5348, knowledge
of C and Unix. (3-0) S
CE 6380 (CS 6380) Distributed Computing (3 semester hours) Topics
include distributed algorithms, election algorithms, synchronizers, mutual
exclusion, resource allocation, deadlocks, Byzantine agreement and clock
synchronization, knowledge and common knowledge, reliability in distributed
networks, proving distributed programs correct. Prerequisite: CS 5348. (3-0) S
CE 6390 (CS 6390) Advanced Computer Networks (3 semester hours) The design and analysis of computer networks. Topics include network
architectures, the OSI reference model, theoretical basis for
data-communications, network protocols, local area networks, ISDN.
Prerequisites: CS 5390. (3-0) S
CE 6392 (CS 6392) Mobile Computing Systems (3 semester hours) Topics
include coping with mobility of computing systems, data management, reliability
issues, packet transmission, mobile IP, end-to-end reliable communication,
channel and other resource allocation, slot assignment, routing protocols, and
issues in mobile wireless networks (without base stations). Prerequisite: CS
6378 or CS 6390. (3-0) Y
CE 6397 (CS 6397) Synthesis and Optimization of High-Performance Systems
(3 semester hours) A comprehensive study of the high-level synthesis and
optimization algorithms for designing high performance systems with multiple
CPUs or functional units for critical applications such as Multimedia, Signal
processing, Telecommunications, Networks, and Graphics applications, etc.
Topics including algorithms for architecture-level synthesis, scheduling,
resource binding, real-time systems, parallel processor array design and
mapping, code generations for DSP processors, embedded systems and
hardware/software codesigns. Prerequisite: CS 5343.
(3-0) Y
CE 6398 (CS 6398/EEDG 6398) DSP Architectures (3 semester hours) Typical
DSP algorithms, representation of DSP algorithms, data-graph, FIR filters,
convolutions, Fast Fourier Transform, Discrete Cosine Transform, low power
design, VLSI implementation of DSP algorithms, implementation of DSP algorithms
on DSP processors, DSP applications including wireless communication and
multimedia. Prerequisite: CS 5343. (3-0) Y
CE 6399 (CS 6399) Parallel Architectures and Systems (3 semester hours)
A comprehensive study of the fundamentals of parallel systems and architecture.
Topics including parallel programming environment, fine-grain parallelism such
as VLIW and superscalar, parallel computing paradigm of shared-memory,
distributed-memory, data-parallel and data-flow models, cache coherence,
compiling techniques to improve parallelism, scheduling theory, loop
transformations, loop parallelizations and run-time
systems. Prerequisite: CS 5348. (3-0) Y
CE 7302
Hardware/Software Co-design
(3 semester hours) Fundamental concepts in the design of complex digital
systems consisting of hardware and software components. Topics include system description and modeling, efficient
systems partitioning, hardware/software synthesis, compilation and behavioral
optimization, embedded computing systems, telecommunications systems using general-purpose
and special-purpose digital signal processors, and rapid prototyping and
emulation using field programmable gate arrays. Prerequisites: CE 6301, CE
6302, and CE 6304. (3-0) Y
CE 7303 Hardware Verification (3 semester hours) This course deals with advanced issues related to the formal
verification of complex digital systems. Topics include Binary Decision
Diagrams (BDDs) and their application to representation and verification of
digital systems, use of abstraction and rigorous analysis methods to solve
complicated design problems, etc. Prerequisites: CE 6301, CE 6303, and CE 6325.
(3-0) Y
CE 7304 (EEDG 7304) Advanced Computer Architecture (3 semester hours)
Advanced research topics in, multi-processor, network and reconfigurable
architectures. Focuses on current research in the area of computer system
architecture to prepare students for a career in computer architecture
research. Course will use articles from
current technical literature to discuss relevant topics, such as digital signal
processors and VLIW processors. Prerequisites: EEDG 6304, CS 5348, ENGR 3341
and knowledge of C/C++. (3-0) R
CE 7325 (EECT 7325) Advanced VLSI Design (3 semester hours) Advanced
topics in VLSI design covering topics beyond the first course (EECT 6325).
Topics include: use of high-level design, synthesis, and simulation tools,
design for testability, clock distribution and routing problems, synchronous
circuits, low-power design techniques, study of various VLSI-based
computations, systolic arrays, etc. Discussions on current research topics in
VLSI design. Prerequisite: EECT 6325 or equivalent. (3-0) R
CE 7328 (EEDG
7328) Physical Design of High-Speed VLSI Circuits (3 semester hours) Techniques for
the physical design of high- speed VLSI circuits. Topics related to interconnection circuit modeling,
performance-driven routing, buffer and wire sizing, placement and floor
planning, technology mapping and performance evaluation issues encountered in
high-speed VLSI circuit designs. Discussion of the state-of-the-art
practical industrial design examples. A
project related to the development of a prototype CAD tool. Prerequisite: EECT 6325
and knowledge of programming in C. (3-0) T
CE 7V80 Special Topics in Computer Engineering (1-6 semester hours) For
letter grade credit only. (May be repeated to a maximum of 9 hours.) ([1-6]-0) S
CE 8V40 Individual Instruction in Computer Engineering (1-6 semester
hours) (May be repeated for credit.) For pass/fail credit only. ([1-6]-0) R
CE 8V70 Research In Computer
Engineering (3-9 semester hours) (May be
repeated for credit.) For pass/fail credit only. ([3-9]-0) R
CE 8V98 Thesis (3-9 semester hours) (May be repeated for credit.) For pass/fail
credit only. ([3-9]-0) S
CE 8V99 Dissertation (1-9 semester hours) (May be repeated for credit.) For pass/fail
credit only. ([1-9]-0) S