Math 116 Spring 2020

Introduction to Mathematical Cryptography.

About this course

Cryptography is the art of transmitting confidential information over a potentially monitored channel. Codes and ciphers are ancient tools, but in the modern digital age entirely new cryptographic paradigms became possible, and necessary. One of these paradigms, and the central object of study in this course, is public key cryptography, allowing the exchange of confidential information between two people who have never met! At the core of public key cryptography are marvelously clever and deep mathematical insights existing at the intersection of abstract algebra, number theory, and geometry, which we will introduce and explore.
This course will strike a balance between theory and practice. We will have to develop some mathematics, and along with that there will be some proof writing and abstract formulations. With these tools in hand we will be able to fully implement many of the modern cryptosystems we study, and start sending eachother confidential messages in a public forum!

Instructor: Gabriel Dorfsman-Hopkins
Homework Grader: Onyebuchi Ekenta (oekenta[_at_]berkeley.edu)
Email: gabrieldh[_at_]berkeley.edu
Class Hours:T-Th 5:00-6:30
Instructor Office Hours: On Zoom during class hours, also Mondays 1:30-2:30 or by appointment
Textbook:Introduction to Mathematical Cryptography, 2014 edition by Hoffstein, Pipher, Silverman [HPS] Digital copies available through the UC Berkeley Library
Computation Resources: You will each have folders on CoCalc to do computation and homework.
Project 1: Due Tuesday 10/6
Project 2: Due Tuesday 11/24
Final Exam: Takehome Due Thursday 12/17.
Syllabus: Can be found here
Homework: Due (almost) every Tuesday on CoCalc and Gradescope.
Schedule: Below

Online Lectures

Assignments

Solutions to selected exercises will be posted when they are returned.

Homework Assignments (Removed)

Projects and Exams (Removed)

Announcements

11/24 Update: Outlook for the remainder of the semester.

Project 1 has been delayed until after the thanksgiving break.

Homework 10 will be due on saturday 11/21 rather than the usual Thursday.

Homework 8 will be due on Saturday 11/7 rather than the usual Thursday.

Project 1 is due on THURSDAY 10/15.

From now on, Homework assignments will be due on thursday of the corresponding week.

I have updated how we turn in the implementation part of our homework assignment. In particular I would like you to export your finished Jupyter notebook as a PDF and turn it in on gradescope. See the begining of the September 3rd Lecture for info on how to do this.

Here I will post announcements, as well as solutions and statistics to homework, takehomes and exams.

Grading Scheme

Homework: 50%
Project 1: 15%
Project 2: 15%
Final: 20%

Grades are curved, so that your course grade will reflect your performance relative to the rest of the class rather than a fixed percentage scheme.

More Information

Structure

Due to the ongoing COVID-19 pandemic course will be entirely remote. I will post 2 recorded lectures a week, corresponding to our scheduled Tuesday-Thursday schedule, but they will be available to watch at your convenience. I will record them on Zoom and post a link on the course website, as well as posting them to BCourses.
That being said, mathematics is not a spectator sport. Watching me do a algebraic computation may not be as useful as working it out yourself, and this is even more true for writing lines of code. For this reason I will have exercises embedded in the lectures where I will suggest you pause the video and work out some of the details.
I will also be available hosting zoom office hours during the usual course hours (5-6:30 on Tuesdays and Thursdays), so if you are watching at that time feel free to drop in and ask any questions.

CoCalc

Each one of you will have a shared folder with me on an online collaborative coding platform called CoCalc, which in particular runs SageMath, an open source mathematical software we will be making heavy use of this quarter. Click here to get to cocalc. It is here where you will do and turn in the computational parts of your homework assignments. I would also recommend having a Jupyter notebook open in CoCalc during the lectures to be able to follow along and work out the computational in class exercises. During the first lecture I will walk you through setting this up.

Homework

The main portion of your grade will be homework assignments. There will be homework collected almost every week on Thursdays. They will be assigned the week before they are due, and will tend to come in 2 parts.

Feel free to discuss homework in groups, but know that each one of you should be writing up your own assignment (no copying and pasting code will be allowed!).

Implementation Projects

There will be 2 larger implementation projects. These will look a lot like the implementation sections of your homework assignments, but will likely be larger more cohesive implementations of an entire we've been studying (rather than just single algorithms). You are allowed to use algorithms written in homework assignments as peices of thse projects. You may also use the course text, as well as your course notes. You may not use the internet or your peers.

Warning! As the projects are specific implementations of things we are studying in class, these due dates may shift depending on course pace. I will give you as much notice as possible if there is any change.

Final Exam

There will be 1 final exam due Thursday 12/17, which will be a takehome assignment. It will look similar to the written portions of the homework assignments, and will have both a written portion and an implementation portion. You may use the course text as well as your course notes and previous graded homework assignments. You may not use the internet or your peers.

Tentative Schedule

Below is a very rough schedule of the course, organized weekly. It is very difficult to predict pace for an online course during a pandemic. We may go faster than is laid out over the first few weeks...or slower. We may cover all these things and more, or we may skip some sections due to time. Since projects are specific implementations, their due dates may shift due to timing issues. I will do my very best to keep it up to date as we progress through the quarter.

Week 0 (8/27): Week 1 (9/1,9/3): Week 2 (9/8,9/10) Week 3 (9/15,9/17): Week 4 (9/22,9/24): Week 5 (9/29,10/1): Week 6 (10/6,10/8): Week 7 (10/13,10/15): Week 8 (10/20,10/22): Week 9 (3/23,3/27): Week 10 (11/3,11/5): Week 11 (11/10,11/12): Week 12 (11/17,11/19): Week 13 (11/24): Week 14 (12/1,12/3): Week 15 (12/7-12/11): Week 16 (12/14-12/17):