The main purpose of this course is an introductory study of computational complexity and cryptography. The first part introduces the concept of computational complexity by looking at the basic arithmetic operations, i.e., addition, subtraction, multiplication and division. Then matrix multiplication is touched. In order to prepare everything we need later for public-key cryptography, we continue with number theoretic problems and study several algorithms including modular exponentiation, primality testing and taking discrete roots. In the following, we introduce well-known complexity classes, look at complete problems and finish with probabilistic complexity classes. There is also an appendix comprising additional material that had to be omitted due to the introductory character of this course, but may be worth to be known. The second part is devoted to cryptography. After a short historical sketch we deal with public-key cryptography in some more detail, look at authentication and cryptographic protocols, and finish with a more detailed study of digital signatures. Again, there is an appendix containing material for further reading. There will be a midterm problem set and a final report problem set each worth 100 points. So your grade will be based on these 200 points. Note that the course is demanding. But this is just in line with William S. Clark's encouragement Of course, nowadays, we would reformulate this encouragement as Boys, be ambitious! Girls and Boys, be ambitious
To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.