teaching

ECE590- Fall24 Theory/Practice of Algorithms

This course introduces computability and computational complexity theory and the theory and practice of basic concepts and techniques in algorithms.

You can find the lecture notes on Canvas.

A list of topics and approximate times follows.

Topic Approximate Time Chapter(s)
Background 1 week Sipser ch0
Regular Languages 2 week Sipser ch1
Context-free Languages 1 week Sipser ch2
Decidability 1-2 weeks Sipser ch3, ch4
Reducibility 1 week Sipser ch5
Complexity 1 week Sipser ch7
Analyzing Algorithms 1 week CLRS ch2
Sorting and Divide and Conquer 1 week CLRS ch4, ch6
Greedy 1 week CLRS ch16
Dynamic Programming 1 week CLRS ch15
Graph Algorithms 1 week CLRS ch22-25
Advanced Data Structures 1 week

Learning Outcomes:

By the end of the course, the student must be able to:

  • Understand the NP-completeness concept
  • Explain the P vs. NP problem
  • Analyze computation models
  • Design a reduction between two computational problems
  • Characterize different complexity classes
  • Design algorithms for new problems
  • Analyze algorithms