# Introduction to Cryptography -- CMSC/ENEE/MATH 456

# Spring 2022

## Course Overview

This course is an undergraduate introduction to cryptography, whose
aim is to present the theoretical foundations of
cryptosystems used in the real world.
This course complements Computer and Network Security (CMSC 414), whose coverage of cryptography focuses more on its applications; in this class, we will look "under the hood" to get a better understanding of various cryptographic primitives, algorithms, attacks, and protocols.
The course will be similar, though not identical, to my previous offering of this course.
Note that although other sections of this class are being offered this semester, they are **not** being coordinated and may be quite different from each other.

The required textbook for this course is *Introduction to Modern Cryptography, 3rd edition*.
*The third edition of the book is required, and students are strongly advised to obtain a physical copy of the book since exams will be "open book" with no electronic devices permitted.*
Note also that (illegal) copies of the book available online often do not match the printed edition (especially when it comes to the exercices); the professor will not be responsible for any deviations in content.

*This course has significant mathematical content*.
A solid background in discrete mathematics (probability, modular arithmetic) is assumed.
Students are also expected to have "mathematical maturity" since many of the concepts will be abstract, rigorous definitions and proofs will be given, and some new mathematics (e.g., group theory, number theory) will be introduced.

Moreover, *the homeworks in this course will require programming*.
The choice of language is flexible, but C/C++/java or python are recommended.
Some homeworks will have a networking component with the networking code provided for you in a particular language. It is assumed you can pick up what is needed in order to complete the assignments.
Basic background in algorithms (big-O notation and worst-case analysis, reading pseudocode) is assumed.

This course will follow all applicable UMD policies and procedures.
## Lecture Schedule

After each lecture, I will post a (brief) summary of what we cover, and provide references to relevant sections of the book, here.
## Announcements

- My course on Coursera provides a useful resource for learning about much of the material presented in class.
- I have registered the course on Piazza. Please ask questions about the lectures/homeworks there, and check frequently for announcements. If you are not able to register for the class on Piazza, please send me an email.

## Staff

**Instructor:** Professor Jonathan Katz (`jkatz@cs.umd.edu`). Office hours: Mondays and Wednesday 2-3 via zoom.
Please send me email in advance if you plan to attend my office hours.

**Teaching Assistants:**
- Doruk Gur (
`dgur1@umd.edu`). Office hours: Friday 10-12 in TA room (AVW 4122) and also over zoom. (Zoom link is on ELMS.)
- Guanhong Wang (
`guanhong@umd.edu`). Office hours: Monday and Wednesday from 3-4 via zoom. (Zoom link is on ELMS.)

## General Information

- The class meets Tuesday and Thursday from 9:30 - 10:45 in CSIC 3117.
**Grading** will be based on weekly homeworks assigned throughout the course (25%), a midterm (35%), and a final exam (40%).
- This course is
**not curved**.
What this means is that there is no predetermined number of students who will get As, Bs, Cs, etc.
This also means that *students in the class are not competing with each other*.
Every student's final grade will be determined by how well he/she is able to demonstrate his/her understanding of the material, and the epxectation is that every student can potentially get an A.
The plus/minus grading system will be used.
**Homework**
- Homework and exam submissions will be done electronically using Gradescope.
- Late homeworks
**will not be accepted** without advance approval of the instructor.
- You may collaborate on the homeworks with at most one other student in the class.
Each student must independently write up their own solutions/code, and must list the other student (if any) with whom they collaborated.
- You may consult outside references when doing the homework, as long as these sources are properly referenced, you write up the solution yourself, and
*you understand the answer*. You may not take code from other sites without the permission of the instructor.
- No extensions will be granted without a valid excuse (e.g., religious/medical considerations), which should be discussed with the instructor in advance whenever possible.

- Check the course homepage frequently for announcements
and to follow the updated syllabus.

Web Accessibility