Cryptography plays a fundamental role in building secure computing and communication systems. With its fascinating history through centuries and intriguing connections to deep mathematical ("how quickly can we factor an integer?") and philosophical ("what is randomness?") questions, Cryptography is an important and beautiful subject. With increasing concerns over privacy, security, and authenticity of data and communications in our wired (and wireless) society, cryptographic applications are bound to pervade our lives. Cryptography is, and will continue to be, a vast and exciting area of research in Computer Science and Mathematics.
This course is an introduction to the art and science of cryptography. At the end of the course, students should be well-prepared to apply the core scientific principles of cryptography to build secure software and communication systems as well as to pursue more advanced courses and state of the art research in cryptography.
This course will study fundamental concepts, algorithms, encryption schemes, and protocols in cryptography. Main topics include: symmetric (private key) encryption, public key encryption, hash functions, digital signatures, and key distribution. The course emphasizes a rigorous mathematical study of the various cryptographic schemes and their security in terms of algorithmic complexity. A nontrivial part of the course will be devoted to algorithmic and mathematical background from number theory and algebra needed to gain a solid understanding of cryptography. Popular cryptographic schemes such as AES and RSA will be highlighted and their security will be rigorously investigated. Detailed syllabus is available from the course web site (link below).
This is a 4-credit course approved as an upper-level CS technical elective for undergraduate students in CS-ENGR and CS-LSA. This course is also approved as a cognate course for Math Majors. Advanced undergraduate and beginning graduate students in Computer Science and Engineering and Mathematics are invited to take this course. Graduate students in EECS can also take it as a 400-level elective course. Grading will be based on homework assignments, a mid-term, and a final project/term paper.