Students enrolling in this course are expected to have a background in security and foundational computer science skills. Experience with statistics and user experience research or design is welcome but not required.

Below, these requirements are elaborated with specific details.


The following knowledge and skills are required for success in this course.

Computer and network security

Students should have a strong understanding of computer and network security concepts including:

  • Network security
    • Example: How does the TLS protocol work?
  • Encryption
    • Example: How do different block cipher modes of operation work?
  • Memory safety
    • Example: How does a buffer overflow happen and what protections exist against it and similar attacks?
  • Web security
    • Example: How does FIDO U2F protect against phishing?
Suggested courses

Any of the following courses will likely provide the necessary background:

  • IT 230. Computer and Network Security
  • CS 351. Introduction to Cybersecurity
  • CS 608. Cryptography and Security
  • CS 645. Security and Privacy in Computer Systems
  • Equivalent courses at other institutions
  • Equivalent computer security experience
Programming and software development experience
  • Students should be comfortable completing programming tasks using unfamiliar programming languages and APIs
  • A large component of the course is a semester-long project that is likely to feature significant programming components. Students should be prepared to undertake these tasks.
    • Examples:
      • Create a mobile app
      • Implement a prototype of an interface
      • Perform data analysis and compute statistics
Suggested courses
  • IS 513. Programming Foundations for IS
  • Undergrad major in computer science
  • Equivalent computer programming experience