University of Denver Home Page

COMP 3704
Introduction to Cryptography
Winter 2003
Course Information and Syllabus

Assignments


Instructor

Faan Tone Liu (email ftl@cs.du.edu)
Office: JGH 319, (303) 871-2803
Office Hours: M 10-11, W 1:30-2:30, Th 4-5, F 12-1,
(or gladly by appointment)


About This Course

Cryptography has been used for at least two millenia to keep secret even those messages that were intercepted by enemies. The contest between developing ever-more complex means to encrypt messages and finding means to decipher those messages has continued since that time, the stakes including the outcome of wars, the exchange of fortunes, and even life itself. The advent and the ubiquity of modern computers forced this contest to an entirely new level, with the break-through techniques of modern cryptography.

In this course we'll study the theory and implementation of both classical and modern cryptographic systems. We'll cover techniques of encryption, decryption and cryptanalysis in classical cryptography, the idea of perfect secrecy, the advanced encryption standard, public-key cryptography, RSA, generating prime numbers, discrete log cryptosystems, and signature schemes. Possible additional topics include key distribution schemes and quantum cryptography.

The study of cryptography requires quite a bit of mathematics, including discrete mathematics, probability, linear algebra, abstract algebra, and number theory. We will learn the mathematical background throughout the quarter, as the current topic requires it. cover

Prerequisites

The prerequisites for this course are Comp 1672 and either Math 2200 or Comp 2300, or the instructor's approval.


Course Meeting Times

The lecture is held in JGH 316 from 5:00-6:50 on Tuesdays and Thursdays.


Required Textbook and other resources


Grading and assignments

There will be a written homework assignment due approximately weekly. These assignments will give you practice with the concepts learned in class. The questions on these assignments may ask you to take the ideas from class and directly apply them in a simple computation, to apply or extend the ideas to slightly different situations, or to give mathematical proofs of results we need and use in cryptography. The questions on homework may require you to write short programs to accomplish a task.

There will also be regular quizzes (5-6 of them during the qurter) testing you on the material.

Lastly, you will do 2-3 projects. These will primarily be programming projects, although they may include non-programming aspects as well.

These components will contribute to your grade with approximately the following weighting.

Your attendance and class participation in lecture will be taken into account in borderline cases.


Collaboration and Academic Honesty

When you turn in work in this course, you are implicitly agreeing that you have followed the rules for collaboration set forth for that assignment. Copying another person's work on homework assignments, quizzes or projects constitutes plagiarism, a violation of the University of Denver Honor Code. This code forbids plagiarism, cheating, fabrication, and aid of academic dishonesty. Please note that "aid of academic dishonesty" includes allowing another person to copy your work. This and all other violations of the University's academic standards in this class will be treated with severity. Possible outcomes include (but are not limited to) a grade of 0 on the relevant assignment and a failing grade in the course. In addition, a letter describing the incident will be sent to the Office of Citizenship and Community Standards, which will address the situation at their discretion. This office determines additional consequences for violations to the DU Honor code. These consequences may include suspension or expulsion from the University.

Guidelines for quizzes

In this course, quizzes are without exception individual efforts. You may not seek or receive assistance from any other individual. Unless otherwise indicated, they are closed book/closed notes.

Guidelines for projects

In this course, projects are individual efforts. You may not collaborate with or receive aid from others in the class, and you may not collaborate with or recieve aid from anyone outside the class. The only exceptions to this are as follows. First, you may receive help from the course instructor. Second, for projects involving written text, you may (and should) have another person proofread your work for grammatical or spelling errors. Third, for projects involving programming, you may seek minor assistance from another person to assist you in finding syntax errors, in tracking down pernicious bugs, or in testing your finished program. The person aiding you should not write a single line of your code, should not help you in figuring out how to fix a bug they find (or you find), nor help you in designing or re-designing algorithms. Lastly, whenever you receive allowable assistance from another person, you must document it and turn that documentation in with your assignment. Write down who it was that helped you, what exactly they did to assist you, and how much time they spent assisting you.

Programming projects should follow good programming practices, should be formatted consistently and logically, and should be commented professionally, with terse but clear comments that would be useful to someone maintaining or enhancing your code. The quality of your documentation will be included in your grade.

Guidelines for homework

In this course, you may not collaborate with or receive aid from anyone outside of the course. You may not talk with, listen to, receive electronic or written materials from any person outside the class. However, you may collaborate with others in the class on homework except where explicitly noted otherwise. There are limits to this collaboration, however. First, collaboration must be bi-directional. If people are not each contributing significantly to the creative effort, then it is not collaborative work, it is copying. Secondly, the collaboration is allowed for solving problems, not for writing the solutions that you turn in. Solving problems includes discussing overall strategies and resolution of details. When you write up the solutions to the assignments, however, your work must be completely your own. Although the ideas may have been generated together, your explanation of them is your own creation. You may not write up homework assignments together and you should not be in the presence of your classmates when you write up homework assignments. You may not copy other's written work or share your own written work. In addition, you must document the collaboration by acknowledging your co-worker's contributions (both general and specific) to your final product. Please put this at the end of your assignment. If you have not worked with anyone else on the assignment, then please write that down as well.

Homework assignments are due at the beginning of the class period on the due date.

Your papers should be organized and neatly written, and should be typed if your handwriting is difficult to read. You should spend significant effort in making sure that what you write clearly explains your ideas and your work.

Late Homework

Late homework will be accepted, or not, at my discretion, with the penalty again at my discretion. Extensions for extreme and unusual circumstances that are beyond your control may be granted if requested in advance or when requested at the soonest possible time.


Assignments:

Homework assignment 1
Homework assignment 2
Homework assignment 3
Homework assignment 4
Homework assignment 5
Homework assignment 6
Homework assignment 7
Homework assignment 8
Project 1
Project 2



DU Home Page DU Department of Computer Science Home Page Home Page for Faan Tone Liu

This page was last modified on: