20580 Introduction to Cryptography

Credits: 4 advanced credits in Computer Science

Prerequisites: Students must fulfill all English requirements and take bibliographic instruction in the Library.

Required: Linear Algebra I, Probability for Computer Science Students, Introduction to Computer Science Using Java 1

Recommended: Data Structures and Introduction to Algorithms, Introduction to the Theory of Computation and Complexity, Discrete Mathematics: Set Theory, Combinatorics and Graph Theory2

The course is based on Cryptography: Theory and Practice (3rd ed.), by D.R. Stinson (Chapman & Hall, 2006).

Cryptography is the science of data security. By data security, we mean not only encryption and decryption but also issues of authentication, identification, data integrity, secret sharing, data hiding and many more aspects of securing the transmission and processing of data.

The course covers the basics of cryptography: Classical cryptographic methods, Shannon's theory of secrecy, modern symmetric methods (focusing on DES, 3-DES and AES), modes of operation of symmetric methods, message authentication codes, hash functions, public key cryptography – encryption methods (RSA, Rabin and El-Gamal), Diffie-Hellman protocol, digital signatures (El-Gamal, Schnorr, DSA and Rabin), and secret sharing schemes.


1or both Introduction to Computer Science Using Java I (20453) and Introduction to Computer Science Using Java II (20454).

2or Discrete Mathematics: Set Theory, Combinatorics and Logic (20283), which is no longer offered.