This course provides a mathematics-based introduction to cryptography. We will discuss the algorithms and implementations of various symmetric-key and public-key cryptosystems.

Instructor:

Prerequisites: Math 250 Discrete Mathematics or MATH 330 Abstract Algebra, and CS 110 Introduction to Programming, or other programming experience.

Required Texts:  

Computing Resources:

You can find other references in the class bibliography.

Goals:   At the conclusion of this course, students should have a basic understanding of cryptography, particularly why and how various cryptosystems work, as well as what makes them secure/not secure. This includes understanding the mathematics behind the cryptosystems. Students should also have some awareness of the social, ethical, and political issues related to cryptography. Finally, students should be able to write programs to implement some of the common algorithms used in cryptography.


Topics to be covered :
(for a detailed course schedule, see the Reading and Homework Assignments page)


Attendance and Participation:

Regular attendance and participation is expected of all students and will affect your grade. Active participation in this class means coming to class on time, completing assigned reading and exercises, presenting exercises, listening to others, contributing ideas of your own, and asking questions as they come up. It also includes submitting reflections on guest lectures and reflections on personal progress in the course.

Assignments, Collaboration, and the Honor System:

This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor code. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.

Reading assignments, homework assignments, class notes, and other material will be made available on the CS 483/MATH 450 homepage:

http://www.cs.kzoo.edu/cs483, or http://www.cs.kzoo.edu/math450
Students are responsible for checking this resource frequently.

Reading assignments and related exercises will be assigned for each class. You are expected to come to class having completed the assignment and being prepared to discuss and present ideas from the reading and solutions to the exercises. You are encouraged to work on these exercises in groups; just be sure that each group member understands each answer well enough to present it to the class. When presenting an answer, you should acknowledge any help that you received.

Homework assignments will be assigned throughout the quarter. Homework assignments are due by then end of the day on the designated due date. If there are extenuating circumstances and you cannot complete an assignment on time, you MUST COMMUNICATE with me.

If you get stuck on a homework problem or just want to see if you are heading in the right direction, I am quite willing to help you. You may also discuss the requirements, concepts, and overall strategies related to homework assignments with your classmates, as long as you walk away from the discussion without notes. It is important that you write up your homework solutions individually, acknowledging any ideas from others that you have used. Organizing and writing up the solutions on your own ensures that you really understand the material. Copying someone else's solution does not help you learn the material. Submitting a copied solution as your own work is plagiarism. On specified occasions, homework assignments may be completed in groups, with each group submitting one solution.

Several projects will be assigned throughout the quarter. These will frequently involve some programming, writing, and collaborating with others in small groups. I will try to make clear my expectations about whether a given project is meant to be the result of collaborative or individual work, as well as the size limit of the group, but you are responsible for consulting with me if you are in any doubt. Program documentation should indicate all author(s) of the program. It is only necessary to submit one copy for the entire group. In general, I am more interested in seeing a program run and looking at its documentation than trying to figure out if it works by reading the code. (Unless specified, you may choose your favorite language in which to write your programs.) Therefore, you may be asked to show me a demonstration of your program.

As with homework, you may discuss the requirements and strategies of a project with others in the class, but you should not look at code belonging to anyone outside your group or make your code available to anyone else. If you have code-specific questions, you should address them to a CS faculty member. You should acknowledge any help you receive in your program documentation.

This course will involve a mid-term exam and a final exam. Obviously your answers to exam questions should be entirely your own work and not the result of collaboration with others. If the use of outside sources (such as the textbook) is permitted, be careful to cite ideas and material from those sources, whether derived, summarized, quoted, or paraphrased.

Penalties for violating the Honor Code in this course may include receiving no credit for an assignment, a lowered course grade, or failure of the course. Depending on the severity of the incident, a report may be sent to the Dean's Office, which may result in additional consequences, including suspension from the College. Any subsequent violation will result in the immediate failure of this course.

Grades:

Grades will be based on:
Attendance, Class Participation, Reflections 20%
Homework Assignments and Projects 50%
Two Exams 30%