Algorithmic Number Theory and Cryptography (CS 300)

 Announcments  Lectures  Programs  Course Resources   Assignments and Solutions  Grading Policy
Course Description
Covers fundamental algorithms for integer arithmetic, greatest common divisor calculation, modular arithmetic, and other number theoretic computations. Algorithms are derived, implemented and analyzed for primality testing and integer factorization. Applications to cryptography are explored including symmetric and public-key cryptosystems. A cryptosystem will be implemented and methods of attack investigated.
Course Goals
To be able to implement and analyze algorithms for integer factorization and primality testing. To be able to use a system like Maple to explore concepts and theorems from number theory. To understand fundamental algorithms from symmetric key and public key cryptography.
Course Objectives
Undergraduate computer science, computer engineering, mathematics, and students interested in security, cryptography and applied number theory. The course will cover both the underlying mathematical theory and practice as algorithms will be implemented and analyzed (the Maple computer algebra system will be used for implementation of algorithms and exploration of concepts). For computer science students, the course counts towards the numeric and symbolic computing and computer and network security tracks.
Undergraduate data structures course (CS 260)
Courses in linear algebra (MATH 201 or equivalent), discrete mathematics (MATH 221 or equivalent).
Jeremy Johnson
Office: 100C University Crossings
phone: (215) 895-2669
e-mail: jjohnson AT cs DOT drexel DOT edu
office hours: TR 11-12, and T 7-8 (online). Additional hours by appointment.
Lingchuan Meng
Office: Univ. Crossings 147 (CS Student Resource Center)
e-mail: lm433 AT drexel DOT edu
office hours: TR 2:00-4:00.
Meeting Time
TR 12:30-2:00 in Univ. Crossings 153
Course Mailing List
BbVista will be used for discussion and announcements

Please use the discussion groups for questions and discussions related to the course. If you know the answer to someone's question, please feel free to jump in, as long as well it is not an answer to a homework problem. You should check the discussion and announcements regularly. Please do NOT post answers to homework.
  1. David M. Bressoud, Factorization and Primality Testing, Springer, 1989.
  2. Every student must have access to Maple version 12. Course notes will be provided on the web page as Maple worksheets that can not be read without Maple. Maple is available in the CS labs as well as Drexel labs, and is available for free to Drexel students as part of the campus site license.
  3. Students will be required to read several additional papers.


  1. Maple Computer Algebra System
  2. Integer and polynomial arithmetic
  3. Euclidean algorithm and continued fractions
  4. Modular Arithmetic, Fermat's theorem, Chinese Remainder Theorem
  5. Symmetric key cryptosystems (DES, AES)
  6. Public-key cryptosystems (RSA, El Gamel)
  7. Coin flipping protocols (Blum)
  8. Primality testing
  9. Algorithms for integer factorization


  1. Class Participation (15%)
  2. Three Homework assignments (45%)
  3. Two Quizes (40%)
Assignments and exams will be returned on a regular basis to provide feedback to students. All students must do their own work. Any violation of this will result in a zero grade for the assignment. A second violation will lead to an F for the course.

Grades are based on a curve with the mean normalized to a B provided the mean performance shows competency of the material.


Reference Books
  1. Maple Getting Started Guide.
  2. Maple Users Manual.
  3. Maple Introductory Programming Guide.
  4. Maple Advanced Programming Guide.
Web Pages
  1. Waterloo Maple
  2. Maple Student Center
  3. Maple Essentials
  4. Maple Programming
  5. Maple Application Center
  6. SymbolicNet -- Symbolic Mathematical Computation Information Center
  7. The Prime Pages
  8. GIMPS: The Great Internet Mersenne Prime Search

Look Here for Important Announcements

Look on BbVista for course announcements.


This list is subject to change.
  1. Week 1 (Chapter 1)
    1. March 31, 2009 (Introduction to Cryptography and Cryptanalysis)
    2. April 2, 2009 (Polyalphabetic Substitution Cyphers)
  2. Week 2 (Chapters 1 and 2)
    1. April 7, 2009 (Modern Cryptography and Number Theory)
    2. April 9, 2009 (The Sieve of Eratosthenes and the Prime Number Theorem)
  3. Week 3 (Chapter 1 and 3)
    1. April 14, 2008 (The Euclidean Algorithm)
    2. April 16, 2008 (Modular Arithmetic)
  4. Week 4 (Chapters 3-4 and additional readings)
    1. April 21, 2009 (Linear Algebra and Hill Cyphers)
    2. April 23, 2009 (DES)
  5. Week 5 (Chapter 4)
    1. April 28, 2009 (RSA Public Key Encryption)
    2. April 30, 2009 (Exam 1)
  6. Week 6 (Chapter 6, 7, 9)
    1. May 5, 2009 (Strong Pseudoprimes and a Probabalistic Primality Test)
    2. May 7, 2009 (Quadratic Reciprocity and the Solovay-Strassen Primality Test)
  7. Week 7 (Chapter 6, 7)
    1. May 12, 2009 (Quadratic Reciprocity and the Solovay-Strassen Primality Test)
    2. May 14, 2009 (Quadratic Reciprocity and the Solovay-Strassen Primality Test)
  8. Week 8 (Chapter 9 and Handouts)
    1. May 19, 2009 (Blum Coin Flipping Protocol and Goldwasser-Micali Probabalistic Encryption)
    2. May 21, 2009 (Primitive Element Theorem and a Deterministic Primality Test)
  9. Week 9 (Chapters 5 and 8)
    1. May 26, 2009 (El Gamal Public Key Encryption and Diffie-Hellman Key Exchange)
    2. May 28, 2009 (Introduction to Integer Factorization Algorithms)
  10. Week 10 (Chapter 8)
    1. June 2, 2009 (The Quadratic Sieve)
    2. June 4, 2009 (Final Lab)

Programs and Worksheets

Assignments and Exams


Created: 9/26/05 (revised) by