CS 499 / CS 587: Cryptography, Spring 2020

Course Overview

Course Description

The course will provide an introduction to modern cryptography. We will cover many practical topics, such as how to correctly use block ciphers and hash functions for the most common tasks: encryption and message authentication, the differences between public key cryptography and symmetric key cryptography, and a few ways to build public key encryption and signatures. We will learn about how to properly define security, and how to prove that our constructions are secure. In addition, with what time we remains, we will cover several recent topics in cryptography, such as the use of block chains for crypto currencies, and securely computing on private data.

The main objectives are to convey the importance of provable security, to teach students how to use cryptographic tools in a way that is provably secure, to provide students with the ability to decide whether a protocol is secure, and to demonstrate the range of what can be achieved with provable security.

Course Outcomes
Students taking this class will: (a) be able to understand the security properties achieved by common cryptographic mechanisms such as encryption or digital signatures, (b) be familiar with a number of cryptographic primitives available to solve a variety of problems, (c) gain some experience with how these cryptographic tools can be used to secure modern systems.

There are no formal prerequisites for this course, and I intend for everything to be self-contained. However, students should have some level of mathematical maturity. Accordingly, a course such as CS330 would be a good course to take prior to this one. Students should be comfortable writing proofs, and should have comfort with basic probability theory.


Course Requirements


There will be 10 homework assignments. Homework will be due on Thursdays. Students are welcome to work in groups, but every student must write their solutions independently. Homework that appear overly similar will be considered to violate the honor code.

I encourage students to type their answers, both because they will be easier to read, and also because I believe it helps you clarify your own thinking. You can use this LaTex template file, if it is helpful to you. Please post on piazza if you have trouble.


There will be one mid-term and one final exam. The final exam is scheduled by the University: Tuesday, May 12, 1:30-4:15. Each will cover roughly half of the semester. The final will NOT be cumulative. Both exams are closed book, and notes will NOT be allowed. The exams are weighted such that the better score counts for more points (see below).


Quizzes are short: 1-2 questions, multiple choice or fill-in-the-blank. You will need a laptop or phone to answer the questions, as the results will be tallied immediately. Each single quiz is worth < 1% of your grade. They will be given at the start of class (don't be late!), on Tuesdays. They will cover the previous 1 or 2 lectures, and mainly serve to help me gauge what the students have understood, and what needs further explanation.

CS 587

Students in CS 587 will be be given extra homework problems on most homeworks, and an extra problem on each of the exams. They will also have to read Chapter 7 independently.


Quizzes -- 10%
Homeworks -- 30%. The lowest two homework grades will be dropped.
Exams -- 60%. Of the two exams, the higher score will be weighted to count for 35%, and the lower for 25%.

Click here for the class schedule.