Learning Objectives

In this course, student will systematically study the fundamental principles of computer system security, including authentication, access control, capability, security policies, sandbox, software vulnerabilities, and web security. Most of these principles will be studied within the scope of concrete systems, such as Linux and Windows. The course emphasizes "learning by doing", and requires students to conduct a series of lab exercises. Through these labs, students can enhance their understanding of the principles, and be able to apply those principles to solve real problems. After completion of the course, students should be able to possess the following skills:

  • be able to explain security principles,
  • be able to explain how various security mechanisms work, and correlate these security mechanisms with security principles,
  • be able to compare various security mechanisms, and articulate their advantages and limitations,
  • be able to apply security principles to solve problems,
  • be able to analyze and evaluate software systems for its security properties,
  • be able to evaluate risks faced by computer systems,
  • be able to explain how various attacks work,
  • be able to detect common vulnerabilities in software,
  • be able to design and implement basic security mechanisms to protect computer systems,
  • be able to describe and generalize various software vulnerabilities.


Professor: Wenliang (Kevin) Du
Office: SciTech Building, Room 4-285
Phone: 443-9180
Email address: wedu@syr.edu

Required Texts

Wenliang Du. Computer Security: A Hands-on Approach.

Grading (subject to change)

  • Late Homework Policy: 10% penality per business day.
  • Weights: The labs and project are supposed to help students enhance and supplement their learnings with hands-on experiences. While many students do benefit from that, for some students, these exercises do not seem to work. They get very good scores in labs and project, but score very low in the final exam. Given that the final exam is the utimate test to measure how much a students has learned, for students doing poorly on the exam, the hands-on exercises do not seem to serve their intended goal, so their weight needs to be reduced. The differential weight scheme is described in the following table:
    Condition Final Exam Labs and Final Project
    Final exam above 60 50% 50%
    Final exam between 30 and 60 75% 25%
    Final exam below 30 100% 0%


  • Introduction and Basics
    • Class Introduction (syllabus, policies, and projects)
    • An Overview of Computer Security
    • Course projects (labs)
    • Unix Security Basics

  • Software Security: Vulnerabilities, Attacks, and Countermeasures
    • Privileged programs (Set-UID programs) and vulnerabilities
    • Buffer Overflow vulnerability and attack
    • Return-to-libc attack
    • Race Condition vulnerability and attack
    • Dirty COW attack
    • Format String vulnerability and attack
    • Shellshock attack
    • Heartbleed attack

  • Web Security: Vulnerabilities, Attacks, and Coutermeasures
    • Same Origin Policy
    • Cross-Site Scripting Attack
    • Cross-Site Request Forgerty Attack
    • SQL-Injection Attack
    • Click-Jacking Attack
    • Web Tracking

  • Smartphone Security
    • Access control in Android operating system
    • Rooting Android devices
    • Repackaging attacks
    • Attacks on apps
    • Whole-disk encryption
    • Hardware protection: TrustZone

  • Hardware Security
    • Meltdown attack
    • Spectre attack
    • 80x86 Protection Mode (access control in hardware)

  • System Security
    • Authentication and Password
    • Access Control Concept
    • ACL: Access Control List
    • Capability
    • Sandboxing