Cryptography Groundrules

Course Home Page:

Groundrule Index:

Instructor:  Dr. Andrew Harrington


Course Overview

If you've ever made a secure purchase with your credit card online, you have seen modern cryptography in action. This course covers the mathematical theory of cryptography, as well as the main algorithms used and various related implementation issues. The task is to understand certain pieces of pure mathematics, various parts of computer science, and the mutual blending of the two subjects that is modern cryptography.

If you just want to use standard cryptographic packages, you do not need this course.  A basic security course would make more sense.  Ths course is for those who want to understand and extend the theory and have a detailed knowledge of the implementation issues.

Students come from both the computer science and mathematics departments.  Most students will start with more expertise in one area than the other:  with more programming experience or more experience with more proof and symbolic arguments.  I hope students with different strengths will study together and help each other with concepts.

For computer science students this is definitely an elective, so I expect everyone at start off comfortable with algebraic arguments and proofs, even those who do not start off with a lot of specific facts and theory.  The specific knowledge developed will mostly be number theory built on ideas of prime numbers, and also some finite groups and fields.  All the theory will be developed starting from nothing, but it will be developed assuming comfort with following and extending algebraic arguments.  Knowledge of induction, formal logic, and a bit of probability are all assumed.  We will be writing concise, simple code in Python, which is also very time efficient, thanks to Python's simple syntax and efficient  implementation of large integer primitives.  I assume a ability to organize modest sized coding problems using functions, loops, decisions, classes and methods.  These ideas are much more general than any one language, and will be important starting point as we go through the Python syntax for them.

As we go through topics, a mathematical treatment will come first, and as soon as it is feasible we will consider what this involves in Python.  I hope that we will be looking from both the point of view of mathematical theory and of implementation in most every class.  The code reinforces the theory and makes it concrete.  Also I want to play to everyone's strengths part of the time, to keep too much challenging material from piling up before you have a chance to process it.

Not everyone has the same strengths.  I want everyone to succeed.  Please ask questions, get help, and make sure you keep up.

The text covers the math slowly and steadily and gives a general idea of some central algorithms in Buchmann's own pseudocode.   We will change the order somewhat to facilitate a growing body of concrete code implementing the ideas.  I am likely to often follow excellent notes from Dr. Doty in class.

Topics planned:

Prime numbers, greatest common divisor, the extended Euclidean algorithm, and an introduction to Python.
Modular arithmetic, modular groups, classes and operator overloading in Python.
Time and space complexity of algorithms, analysing code so far
Euler's phi function, Fermat's little and big theorems
Chinese Remainder Theorem
Commutative rings, fields, fields for modular arithmentic, Python implementation.
Cryptography with simple cyphers, Python implementation
Matrices, use in cryptosystems,
Public key systems
RSA,  Python implementation, implementation issues
Polynomials over modular fields, general finite fields
Discrete logarithms, Diffe-Hellman and ElGamal cyphers
Digital signature, hashing
?? Other systems using elliptic curves


Introduction to Cryptography, by Johannes Buchmann, 2nd ed., 2004, soft cover, ISBN: 978-0-387-20756-8.  If you ge the text late, you can see the first chapter on Google Books.  Also note the errata.


Blackboard sends email to your university email address.  If you do not want to look there, be sure to have your mail forwarded somewhere that you check regularly.  In past semesters, I have used class email a number of times noting errors, elaborations, or other changes.

Feedback and questions

Please let me know when you need something from the course that I have not thought to include, or not included in sufficient detail for you, or not presented from a point of view that you can follow.  We are in this together.  For me to succeed, I need you to succeed.

You are NOT graded on help you ask for or comments you make about what you need from the class.  Lots of people have lots of questions about this course.  It is my job to help guide your work.  Please let me know when you do not understand something, particularly after you have gone home and worked on it.  Please ask questions in class and see me in office hours and send me e-mail.


I will enter your raw (not scaled) scores into the Blackboard gradebook for you to confirm.  I base your final grade on separate (possibly scaled in the case of exams) percentages.   

I convert to course letter grades with the following minimum requirements:
A 93 A- 90 B+ 87 B 83 B- 80 C+ 77 C 73 C- 70 D+ 67  D 60.


Actively following and extending the theory and making the ideas concerete in code are essential to understanding this course.  I hope you will participate strongly in classroom discussion and get a start on this.  The homework is the main place to do it.  Keeping up with the homework is important.  There will be a new assignment roughly every week or two.  I am not sure how to deal most effectively with the different backgrounds people have.  I will at least experiment with some group work, hopefully grouping people with different expertise.  Exams will be individual!  Details about homework expectations are at the top of the homework page.

Use my office hours!  Please come if you need help.  When you come it not only helps you, I also get a better idea of the diverse needs of the class to inform my later plans.  Do not be shy! Also understand that when I am interacting with 30 students in class, my focus is somewhat different than with an individual or small group.  In office hours we can go into whatever detail you need, and stick with a particular point as long as you need, or look for earlier points that you missed that will inform the current discussion, or....

Exams and quizzes

Tentative In-class Exam Schedule (updated in the course schedule):  Midterm Oct 21, Final Exam  Dec 16.

You may prepare notes to use with exams. I will allow at least the following number of sides of 8.5 x 11" paper: midterm: 3, and final: 4.  Exams are cumulative.  Exams will not include material from the class immediately before the test. 

Exam Grading:  Do not write down things on exams that you can see are incomplete or incorrect without making some comment acknowledging this -- it is better to know you are wrong or incomplete than to be wrong and think you are right.

Missed Exams : If you must miss an exam, let me know well in advance. Then if you have a good reason we can possibly make other arrangements. I have little sympathy for people who inform me after the fact for no good reason. I may completely excuse you from an exam if you were sick or unable to attend for long enough. Most often if you cannot take an exam at the usual time, I will want you to take it a little later, BUT I WILL NOT LET ANYONE TAKE A LATE EXAM AFTER THE NEXT CLASS PERIOD. If you somehow fail to let me know in a timely fashion that you have an excuse and want to take the exam late, appear at my office hours before the NEXT class after the exam, and I may be able to give you the exam.

IMPORTANT POLICY:  If you have an excuse for not being prepared to take an exam, but decide to take it anyway, you don't get to change your mind after you see a poor grade. In certain circumstances I may allow you to delay an exam due to illness, but I will not let you be reexamined due to a poor grade.

Academic Dishonesty

The penalty for cheating may be anywhere from a 0 on an assignment to a grade of "F" in this course. The appropriate dean will be informed in writing of any cheating incidents.

Cheating consists of, but is not limited to the following for all graded work:

In an official group project, other group members do not count as "another person".

Help from any source is fine concerning

I have needed to give out 0's on exams and quizzes in past semesters, with accompanying referrals to the students' deans.   

Campus Network, Rights and Responsibilities

As a user of the campus network, you should be aware of your rights and responsibilities in

Course Materials

Private information between professor/TA and individual students will be handled through the University Blackboard system.  It will mostly be used for grades and possibly some homework submissions.  The public course materials will all be posted directly on the web under

Class/study Approach

Please give me feedback on what constitutes the best use of your time for the limited class hours we have.  (The Introductory Questionnaire is a first step.)  The more you can read the text to get basic facts before class, the more time we can spend in class on things you cannot get easily from a book: asking and answering questions you raise in reading and homework, the analysis of problems, and creatively applying basic ideas you are learning to somewhat novel situations.  I am not trying to produce lecture notes in class that are a substitute for your reading.  I will try to produce notes from class.  I will try to have notes available before class to follow in class, and when class takes a different turn than I predicted, I will try to make updates to the notes after class.

Cell Phones

Only you know the relative importance of  any particular cell phone call, and whether it is important for you to answer a call immediately rather than later.  I do want you to be respectful of my class and disrupt it as little as is practical.  If you get cell phone calls with fair frequency, be sure to have the ring muted before coming to class.  If you rarely get calls, you might not mute it ahead, and your cell phone may happen to ring.  Get rid of the noise as soon as possible, and do not get flustered. (I'll probably do that at least once.)  I assume you will move outside the classroom for a conversation.  If you get fairly frequent calls that you are likely to consider important answering, sit in a place where your exit and re-entrance are as unobtrusive as possible.