55AA-002

Software Security

Level
Undergraduate
Status
Under development

Note: this course is still being designed and calibrated; the page content is for reference and does not represent the final teaching version.

Syllabus

Course Overview

Software Security connects software engineering, program analysis, and adversarial thinking. The course covers memory safety, input validation, web and API security, dependency risk, fuzzing, static analysis, and secure remediation. The goal is not only exploit writing, but understanding how vulnerabilities arise, are found, validated, and fixed in an engineering workflow.

This is the security entry course after software engineering and a foundation for system security, program analysis, and security baseline automation.

Prerequisites

  • Familiarity with one systems or backend programming language.
  • Understanding of Git, testing, HTTP, and basic database concepts.
  • Software engineering or equivalent team project experience is recommended.

Learning Outcomes

  • Explain root causes and exploitability conditions for common software vulnerabilities.
  • Use static analysis, dynamic testing, and fuzzing to find defects.
  • Write minimal reproducers, vulnerability reports, and patches.
  • Integrate security checks into CI and release workflows.
  • Assess software supply-chain risk from dependencies, configuration, and interfaces.

Course Format

  • Two meetings per week: one for core concepts and one for labs, paper discussion, or project review.
  • The course proceeds over 16 weeks, each with a checkable assignment, lab, or project milestone.
  • Reproducibility is required: code, configuration, data, lab logs, and reports must be reviewable by staff or peers.

Weekly Plan

Week 1

Vulnerability models and secure engineering workflow

Analyze real advisories and separate root cause, impact, and fix.

Week 2

Vulnerability models and secure engineering workflow: lab and review

Analyze real advisories and separate root cause, impact, and fix. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 4

Memory safety and undefined behavior: lab and review

Reproduce buffer, use-after-free, and integer bugs. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 6

Input validation, serialization, and injection: lab and review

Build injection tests and fix parsing boundaries. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 8

Web, API, authentication, and authorization: lab and review

Audit access control in a small web service. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 10

Fuzzing and dynamic detection: lab and review

Add a fuzz harness and sanitizers to a target library. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 12

Static analysis, code queries, and triage: lab and review

Write query rules and triage alerts by priority. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 14

Dependency, build, and supply-chain security: lab and review

Generate an SBOM and assess upgrade and pinning strategy. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Week 16

Secure remediation, disclosure, and regression tests: lab and review

Submit the final patch, test evidence, and disclosure draft. Complete the paired lab, record issues, and explain design tradeoffs in class review.

Assessment

Individual assignments

Concept questions, reading responses, design tasks, and small programming or lab exercises.

25%
Labs and project

Vulnerability analysis, test harnesses, remediation patches, and security reports.

40%
Participation and review

Participation in discussions, demos, code or paper reviews, and peer feedback.

10%
Final report and defense

Submit reproducible artifacts, a technical report, and a demo explaining methods, results, limitations, and future work.

25%

Course Project

Students choose an open-source or course-provided target and complete threat modeling, vulnerability discovery, reproduction, remediation, and regression testing. Deliverables include a security report, patch, test evidence, and reproducible analysis scripts.

Policies

  • AI tools are allowed, but generated code, lab notes, and design suggestions must be reviewed by the student and disclosed in the report.
  • Students may not submit code, proofs, configuration, or experimental results they cannot explain; each member must defend their own design, tests, and tradeoffs.
  • Late work affects iteration grades, but the course values reproducible, auditable, and maintainable results over last-minute accumulation.

Reference Courses

China 985 Universities