CS 6035: Introduction to Information Security

Instructional Team

Wenke Lee

Wenke Lee
Creator, Instructor
Cecil Bowe

Cecil Bowe
Head TA
Chris Taylor

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

Current syllabus
Spring 2021 syllabus

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
  • The Apple M1 chip is not supported in this class. In order to download and use Virtual Machines in this class you must use have a computer which does not have the Apple M1 chip.
  • Minimum of four 2GHz virtual cores, 8GB of RAM, and sufficient free 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 to ensure it runs on your machine before the end of registration.
  • 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.
  • For further requirements, including the minimum OS, please refer to the College of Computing Technical Requirements.

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.