TEXT: Making, Breaking Codes by Paul Garrett, Prentice-Hall ISBN 0-13-030369-0

Fundamentals, theory, and practice of classical and contemporary (e.g. DES) cryptosystems with application to computer-network security services (confidentiality, integrity, authentication). Public key cryptography (RSA and others) for digital signatures, hashing, electronic cash, key exchange, access control. Popular implementations of cryptography for the Internet (e.g. PGP). Protection of computer systems against unauthorized access, hackers, and computer viruses.

Prerequisites: C, C++ or Java programming through data structures. We'll be applying number theory, linear algebra, abstract algebra, probability theory, complexity theory, and more. No prior knowledge of any of this is assumed, but as usual, the more you know the more fun you'll have.* It's fair to say that if you don't like solving puzzles and doing mathematics this is the wrong course for you. On the other hand we certainly will not be delving deeply into any one of these areas (since I'm not qualified for that and there is too much stuff to get through anyway). We'll see maybe the equivalent of the first couple of weeks of maybe three math courses. One cool thing about this course is that the math we apply is often considered ``pure'' (algebra, number theory). We will get involved in both proofs and applications I imagine.

One good way to see what the course will be like is to check out the textbook or similar ones. You might look at the books by Stinson and by Mollin, both of which are more mathematical than Garrett, and of course at Garrett. The descriptions on amazon.com are good places to start. We'll be doing exercises and (I hope) programming projects, maybe even a term research-type project, I dunno yet.

A good overview of crypto courses can be found at Counterpane's site .

Actually the one at UR's own ECE's own recent course is typical.