About CPSC 418 / MATH 318, Winter 2020

home -  about  -  schedule -  assignments -  latex -  handouts -  references -  Renate Scheidler

 Course Objectives

What would you want to see in a secure e-mail system? File transfer program? Social networking site? How do you guarantee that an e-mail originates from a legitimate sender and isn't a spoofing attempt? How can you ensure that your private files have not been accessed by unauthorized users? Or prevent hackers from tampering with your Facebook page? Cryptography is the foundation for solutions to these types of questions.

The main objective of this pair of courses is to provide students with a thorough understanding of the fundamentals of and current best practices in cryptography. Students who have completed either course will have a solid grasp, including some practical experience, of the basic cryptographic primitives and their proper usage. The learning outcomes for the two courses can be found in the course information sheets for CPSC 418 and MATH 318, available on the handouts page.

 Required Knowledge and Skills

This course combines aspects from both mathematics and computer science. In addition to a sufficient level of mathematical maturity, knowledge of the following mathematical topics is assumed:

In addition, for CPSC 418, proficiency in Python programming is assumed.

 Body of Knowledge

The University calendar course description provides a brief overview of the course content. A complete syllabus can be found on the handouts page. Topics covered include:

 Development and Enhancement of Skills

The main primitives required for cryptographic applications will be presented during the lectures. Written problem-based assignment questions (for all students) will lead to further exploration of the underlying theory and of the practical and security issues. Programming questions (for CPSC 418 students) will provide hands-on experience in writing cryptographic software. Mathematical questions (for MATH 318) will enhance students' in-depth understanding of the mathematical foundations. Writing assignments (for both courses) will hone students' technical and scientific writing skills as well as provide experience reading and assessing cryptographic literature.


For the written problems, the typesetting software LaTeX will be used. All the programming work required for CPSC 418 will be done using Python.

 Learning Methods

Delivery is predominantly lecture-based, with shared lectures for CPSC 418 and MATH 318. CPSC 418 will also have tutorials, with one set of weekly tutorial sessions conducted in small groups while the other session is common for all CPSC 418 students. Attendance of tutorials by MATH 318 students is optional, subject to space in the classroom. Students' skills will be developed the following methods:

  CPSC 418 versus MATH 318

CPSC 418 and MATH 318 are different courses; one is not a substitute for the other. While both courses share lectures, exams and portions of homework assignments, there are significant differences:

 Beyond this Course

CPSC 418/ and MATH 318 are highly suitable as a stand-alone course. In addition, CPSC 418 is a required course within the Concentration in Information Security offered as part of the BSc degree in Computer Science. The exact requirements for this concentration are listed at the end of Section 4.3.1 of the University calendar.

To find out more about research in information security at the University of Calgary, visit the U of C's Institute for Security, Privacy and Information Assurance (ISPIA).

Last modified by Renate Scheidler