This course teaches techniques for the design and analysis of efficient algorithms, emphasizing methods useful in practice.