Secure Programming

Vrije Universiteit Amsterdam

Course Description

  • Course Name

    Secure Programming

  • Host University

    Vrije Universiteit Amsterdam

  • Location

    Amsterdam, The Netherlands

  • Area of Study

    Computer Science

  • Language Level

    Taught In English

  • Course Level Recommendations

    Upper

    ISA offers course level recommendations in an effort to facilitate the determination of course levels by credential evaluators.We advice each institution to have their own credentials evaluator make the final decision regrading course levels.

    Hours & Credits

  • ECTS Credits

    6
  • Recommended U.S. Semester Credits
    3
  • Recommended U.S. Quarter Units
    4
  • Overview

    COURSE OBJECTIVE
    This is an introductory course on information security. The emphasis will be on how to develop applications with security in mind. At the end of the course, students should have be familiar with the following:
    1. Importance of security in modern engineering.
    2. How common cryptographic primitives work, and why they are essential .
    3. How bugs can degrade the security of software.
    4. Common memory corruptions bugs and their (security) side-effects in software.

    COURSE CONTENT
    The course is devided into the following modules:
    A. Understanding Cryptographic primitives.
    1. Confidentiality, Integrity and authentication (CIA) properties.
    2. Symmetric/asymmetric/stream ciphers.
    3. Digital certificates/signatures.
    4. Cryptographic Hash Functions.
    5. OpenSSL engineering.

    B. Understanding (and avoiding) low-level bugs.
    1. Introduction to C (if needed) and assembly.
    2. Process memory layout.
    3. Buffer overflows.
    4. Integer overflow/format strings.
    5. Bug detection and Mitigation 5. Secure Development lifecycle (SDL).

    C. Special topics in Security (optional).

    TEACHING METHODS
    Lectures and practical assignments.

    TYPE OF ASSESSMENT
    Written Exam (60%). Practical assignments (40%).

    ENTRY REQUIREMENTS
    Ability to program in C or C++ is required, preferably in a POSIX environment (such as Linux)

    RECOMMENDED BACKGROUND KNOWLEDGE
    Knowledge of x86_64 assembly (reading, not writing) and SQL is strongly recommended.

Course Disclaimer

Courses and course hours of instruction are subject to change.

Some courses may require additional fees.

X

This site uses cookies to store information on your computer. Some are essential to make our site work; others help us improve the user experience. By using the site, you consent to the placement of these cookies.

Read our Privacy Policy to learn more.

Confirm