Courses#

Undergraduate Level#


CMPE 240: Digital Systems#

Number systems. Boolean algebra, logic networks and their simplification. Logic design with gates. MSI and LSI technologies. Combinatorial circuits and sequential circuits. Counters, shift registers, computer organization, arithmetic logic, memory and control units, mini and microcomputer systems. Laboratory experiments and applications of digital logic design.

CMPE 344: Computer Organization#

Register transfer level design. Basic computer layout. Instruction sets and their implementation. Addressing techniques. ALU, hardwired and microprogrammed controllers. Memory unit. I/0 structures and interrupt handling. Improvements on von Neumann machine. Bus structures. Assembly programming.

CMPE 425: Compiler Design#

Overview of the compilation process. Lexical analysis, regular expressions, finite automata and lexical analyzer generators. Symbol tables. Grammars. Top-down and bottom-up syntax analysis. Recursive-descent. SLR, canonical LR, LALR and operator precedence parsing techniques. Parser generators. Semantic analysis and attribute grammers. Abstract machines ad intermediate code. Syntax directed translation schemes. Implementation of a compiler for a simple imperative language.

CMPE 434: Introduction to Robotics#

Designing, building and programming mobile robots; sensors, effectors, locomotion, basic control theory, control architectures, path planning, localization, mapping, learning. Teamwork; robot contest.

CMPE 436: Concurrent and Distributed Programming#

Multithreaded, Distributed, and Mobile Programming with Java. Concurrency. Fundamentals of distributed computing. Synchronization. Logical and vector clocks. Global snapshot. Global properties. Property detection. Detecting termination and deadlocks. Message ordering. Distributed leader election. Distributed agreement. Distributed transactions

CMPE 441: High Level Synthesis#

Programmable logic devices. Levels of abstractions in digital design. Basic processes in behavioral synthesis. Description of a digital system for behavioral synthesis using a hardware description language. Development of test-benches using a hardware description language. Design re-use. Reconfigurable computing. Case studies: Digital design of some well-known digital signal processing and encryption algorithms using behavioral descriptions.

CMPE 443: Principles of Embedded Systems Design#

Embedded systems design flow. Hardware-software co-design. Real-time software design. Real-time debugging techniques and tools. Hardware-software integration: interface design. Examples on the design of data acquisition and control systems. Laboratory.

CMPE 446: Introduction to Computer Architecture#

Performance limits of Von Neumann architecture. Reduced Instruction Set Computer (RISC) architecture. Pipelined processor design. Instruction pipeline and arithmetic pipelines. Array processors. Dynamic and static interconnection networks. Shared memory multiprocessor systems. Message passing multiprocessor systems.

CMPE 476: Distributed Systems#

Transport layer services and protocols. Internet protocols TCP and UDP. ATM Adaptation Layer protocols. Client-server and peer-to-peer programming models. Network programming. Remote procedure call. Application layer issues and protocols. Network security. Domain name system. Network management. Electronic mail and news services. Overview of distributed systems and structures. Distributed file and directory systems. Distributed coordination, concurrency control, deadlock detection and election algorithms.

CMPE 478: Parallel Processing#

Parallel machine and performance models: PRAM, speedup, work efficiency, scalability, Brent’s theorem. Parallel programming with message passing and multi-threading libraries. Parallel algorithms: Prefix computation, pointer jumping, list ranking, Euler tours on trees, sorting. Parallel architectures: Multiprocessors, multicomputers and Flynn’s taxonomy, SIMD, MIMD, SPMD, interconnection topologies. Load balancing and graph partitioning methods.

CMPE 483: Sp.Tp. Blockchain Programming#

Overview of Cryptography. Peer-to-Peer Systems. Blockchain Platforms and Cryptocurrencies. Byzantine Generals and Double Spending Problems. Mining. Wallets. Smart Contract Programming on Ethereum Platform. Developing Decentralized Applications (Dapps).

CMPE 486: Sp.Tp. Simulation Based Testing of Autonomous Systems#

System safety and regulations. Simulation based testing and scenarios. Requirement based testing. Advanced topics.

CMPE 490: Sp.Tp. Internet of Things#

Overview of IoT. IoT-related technologies: embedded systems, sensors and actuators, wireless connectivity, communication protocols, cloud computing, big data analytics, autonomic computing. Design principles: Standardization and interoperability, privacy, security, user experience. Domain Specific Examples.

Graduate Level#


CMPE 511: Computer Architecture#

Pushing a single processor to its limits. Instruction set design and its effect on computer performance. Microprogramming. Addressing techniques. Memory hierarchy. Associative, virtual and cache memory. Memory management. Interrupts, DMA and channels. Comparative study of commercial computer architecture.

CMPE 516: Fault tolerant Computing#

Fault modeling. Test generation for combinational and sequential circuits. Testing of microprocessor based systems. Design for testability. Redundancy techniques to achieve fault-tolerance. Reliability modeling and analysis. Software testing strategies. Software reliability achievement.

CMPE 521: Principles of Database Systems#

Fundamental concepts of data modeling and popular data models. Design theory for relational databases. Query optimization and data manipulation languages. Concurrency and protection.

CMPE 528: Graph Algorithms#

NP-Completeness proofs for graph-theoretic problems. Connectivity. Network flow algorithms. Algebraic graph theory and its applications: Laplacian matrix, graph partitioning, seriation problem, web page ranking. Vertex ordering for sparse matrix factorization.

CMPE 529: Concurrency Control and Recovery in Databases#

Theory of serializability. Various concurrency control algorithms and their proofs of correctness. Recovery in centralized and distributed databases.

CMPE 584: Sp.Tp. Reconfigurable Computing#

Field Programmable Gate Arrays (FPGAs). Configuration vs reconfiguration. Spatial vs temporal computation. Dataflow computing. Reconfiguration. Embedded system design on FPGAs. Processor customization. Methods and tools.

CMPE 585: Sp.Tp. Internet of Things#

IoT Architecture. Sensing/Acting. Connectivity: technology, protocols. Processing. Interoperability. Scalability. Security. Privacy. Case Studies.

CMPE 588: Sp.Tp. Testing and Verification Techniques for Machine Learning#

CMPE 589: Sp.Tp. Software Testing and Verification#

CMPE 58S: Sp.Tp. Computer Aided Verification#

CMPE 58X: Sp.Tp. Low Power Digital Design#

CMPE 59C: Sp.Tp. Cyber Physical Systems#

Relation of cyberphysical systems with embedded systems. Smart things. Internet of things. Properties of CPS: Reliability, Determinism, Real-time, Integrity, Privacy, Security, Energy. Modelling and Analysis of CPS. Case Studies.

CMPE 59D: Sp.Tp. Design Automation For Embedded Systems#

Properties of Embedded Systems. Design Representation. Design Entry. Design Analysis. Synthesis: Allocation-Binding-Mapping-Partitioning-Placement- Routing-Scheduling. Simulation. Project.

CMPE 59F: Sp.Tp. Safety Validation of Autonomous Systems#

System Safety and V&V Fundamentals. Runtime Verification of Real-time Systems. Simulation and Scenario-based Testing of Autonomous Systems. Constrained Random Verification and Functional Coverage. Complementary and Advanced Methods.

CMPE 59L: Sp.Tp. Real Time Embedded Systems#

Properties of real-time embedded systems. Classification of real-time systems. Measurement of time. Synchronization. Interfacing. Temporal accuracy. Determinism. Dependability. Real-time scheduling policies and feasibility tests. Testing. Real-time communication. Real-time operating systems.