Great Ideas in Theoretical Computer Science

Course ID 15251

Description This course is about how to use theoretical ideas to formulate and solve problems in computer science. It integrates mathematical material with general problem solving techniques and computer science applications. Examples are drawn from algorithms, complexity theory, game theory, probability theory, graph theory, automata theory, algebra, cryptography, and combinatorics. Assignments involve both mathematical proofs and programming. NOTE: students must achieve a C or better in order to use this course to satisfy the pre-requisite for any subsequent Computer Science course.

Key Topics
Algorithms, Computability, Computational complexity, Finite automata, Turing machines, Graph theory,,Boolean circuit complexity, P, NP, NP-completeness, Probability theory, Randomized computation, Cryptography

Required Background Knowledge
In particular, we expect the students to have taken an introductory computer science course that goes beyond basic computer programming and covers algorithmic thinking. On the mathematics side, we expect the students to have experience reasoning abstractly and be comfortable with writing formal proofs.

Course Goals
Define mathematically the notions of computation, computational problem, and algorithm.
Express, analyze and compare the computability and computational complexity of problems.
Use mathematical tools from set theory, combinatorics, graph theory, probability theory, and number theory in the study of computability, computational complexity, and some of the real-world applications of computational concepts.
State and explain the important and well-known open problems in the theory of computation.
Write clearly presented proofs that meet rigorous standards of correctness and conventional guidelines on style.
Identify and critique proofs that are logically flawed and/or do no meet the expected standards of clarity.
Cooperate with other people in order to solve challenging and rigorous problems related to the study of computer science.

Learning Resources
Recorded Lectures, Slides, Course Notes, Piazza, Optional Textbooks

Assessment Structure
Standard Grading: Homework 30%, Midterm 1 20%, Midterm 2 20%, Final 25%, Participation 5%
Alternative Grading for a maximum letter grade of C: Homework 30% (lowest 4 homeworks half-weighted), Higher Midterm 30%, Final 35 %, Participation 5 %
To pass the course with a letter grade of C or higher, one of your exam scores must be at least 70%.

Course Link
http://www.cs.cmu.edu/~15251/