CS 6035: Introduction to Information Security

Instructional Team

Wenke Lee

Wenke Lee
Creator, Instructor
Mustaque Ahamad

Mustaque Ahamad
Cecil Bowe

Cecil Bowe
Head TA
Cecil Bowe

Chris Taylor
Head TA


Introduction to Information Security is a graduate-level introductory course in information security. It teaches the basic concepts and principles of information security and the fundamental approaches to secure computers and networks. Its main topics include: security basics; security management and risk assessment; software security; operating systems security; database security; cryptography algorithms and protocols; network authentication and secure network applications; malicious malware; network threats and defenses; web security; mobile security; legal and ethical issues; and privacy.

This course counts towards the following specialization(s):
Computing Systems

Foundational Course
Computing Systems Specialization Elective


Sample Syllabi

Fall 2020 syllabus
Summer 2020 syllabus (PDF)
Spring 2020 syllabus and schedule (PDF)

Note: sample syllabi are provided for informational purposes only. For the most up-to-date information, consult the official course documentation.

Course Videos

You can view the lecture videos for this course here.

Before Taking This Class...

Suggested Background Knowledge

CS6035 assumes classical computer science (CS) background, preferably from an accredited undergraduate CS program. While a wide variety of basic CS and programming knowledge is required in order to be successful in project coursework, much of this can be picked up as learning outcomes are realized.

  1. Computer Organization and Architecture
    1. Be able to describe what a stack, heap (high-level memory organization not data structure), registers, virtual memory, and processes are.
    2. Understanding of the stack’s role in program execution.
    3. How memory is allocated both statically and dynamically.
    4. Be able to follow basic assembly language as it applies to compiled code (C).
  2. Programming
    1. Experience in programming a high-level programming language. CS6035 projects specifically use C, Python 3.x, HTML/JS/PHP, and SQL in various contexts. The ability to pick up programming languages on the fly will be positive to learning outcomes.
    2. Experience with algorithms, data structures, and basic time complexity
    3. The majority of advanced debugging will involve the execution analysis of C programs, with GNU DeBugger (GDB) used as a debugging platform. Knowing how to use GDB to dump registers/stack memory, set breakpoints to follow the execution path, and to analyze compiled assembly language will be very helpful.
    4. The ability to translate pseudocode into applied, functioning code - even in a programming language that you might not be familiar with and actively learning.
  3. Mathematics
    1. Understanding of discrete mathematics, number system foundations, and modular math can be very helpful to learning outcomes.
  4. Soft skills
    1. Working knowledge of Virtualbox VMs and their intermediate management.
    2. Basic understanding of how to use a Linux shell.
    3. How to compile C programs, interpret Python code, use built-in browser tools to analyze Web development interactions between integrated technologies (e.g., HTML and JS), and understanding basic SQL queries will be useful.
    4. Familiarity with the Microsoft Windows registry, its function, how to change, and consequences of such changes.
  5. Understanding that gaps in one’s overall skill set and predicate knowledge may require a significant amount of time and effort to overcome when considering the amount of time required to study course specific materials. Due to the scale of the class and program, students will be expected to fill in the gaps in their own knowledge in these areas, instructors will not have the resources in order to provide such remedial assistance. These hardships are not insurmountable, even without a CS background, if sufficient effort is applied toward learning outcomes.
  6. Useful resources for skills mentioned in #2:
    1. http://www.brendangregg.com/blog/2016-08-09/gdb-example-ncurses.html (GDB)
    2. http://phrack.org/issues/49/14.html (Buffer Overflow Concepts)
    3. https://www.cprogramming.com/gdb.html (GDB)
    4. https://docs.python.org/3/tutorial/
    5. https://www.hacksplaining.com (For SQL injection/JavaScript/XSS/CSRF vulnerabilities)
Technical Requirements and Software
  • High-speed internet connection: CAT-6 is preferable
  • Minimum of four 2GHz virtual cores, 8GB of RAM, and 80GB of disk space (SSD or HDD). You will need to install and run virtual machines for most of the projects. Note: it is strongly recommended that you test out a Linux VM on VirtualBox with at least 2 V-Cores and 4GB of RAM to ensure it runs on your machine before the end of registration.
  • Operating System:
    • PC: Windows XP or higher with latest updates
    • Mac: OS X 10.6 or higher with latest updates
    • Linux: any recent distribution will work so long as you can install Python and OpenCV
  • Virtual Machine: You will be provided a virtual machine (VM) useful for performing class assignments and projects. For the projects, the supplied resources are identical to those used to test your submissions. Details for downloading and installing the VM can be found on Canvas.

Academic Integrity

All Georgia Tech students are expected to uphold the Georgia Tech Academic Honor Code. This course may impose additional academic integrity stipulations; consult the official course documentation for more information.