An in-depth study of the design, implementation, testing, and analysis of algorithms. Graduate students will be given an extra assignment determined by the instructor that undergraduates will not be required to do. The links below contain the topics covered and the course lecture material:
Probabilistic Analysis and Randomized Algorithms
Digital logic: transistors, circuits, sensors, robotic control; registers and register banks; arithmetic-logic units; data representation, Von Neumann architecture, instruction sets; RISC and CISC designs; instruction pipelines and stalls; memory and address spaces; physical and virtual memory; interleaving; page tables; memory caches; bus architecture; polling and interrupts; DMA; sensor and device programming; optimizations; parallelism; data pipelining, single-chip architectures and mobile computing. The links below contain the topics covered and the course lecture material:
Introduction to abstract data types such as lists, stacks, queues, and trees, and algorithm analysis. The links below contain the topics covered and the course lecture material:
Algorithm Analysis and Metrics
Provides a fundamental understanding of the development of computer solutions to solve problems with emphasis on structured, top-down development and testing. Concepts include the following: an overview of computer system design, problem solving and procedural abstraction design of computer solutions, algorithm development using simple data types and control structures, implementation and testing of programmed problem solutions, design modularization using subprograms and structured and user-defined data types. The links below contain the topics covered and the course lecture material: