CSCI 1650 covers software exploitation techniques and state-of-the-art mechanisms for hardening software. The course begins with a summary of prevalent software defects, typically found in applications written in memory unsafe languages, like C/C++, and proceeds with studying traditional and modern exploitation techniques, ranging from classical code injection and code reuse up to the latest goodies (e.g., JIT-ROP). For the most part, it focuses on defenses against certain vulnerability classes and the way(s) to bypass them. Students will be introduced to advanced software exploitation techniques and countermeasures, and study (in depth) the boundaries and effectiveness of standard hardening mechanisms, such as address space randomization and stack and heap protections.



10% Participation
60% Assignments (CTF-like write-ups)
10% Midterm
20% Final


This course would not be possible without the support and assistance of the following people:


  • Mon. and Wed., 1PM – 2:20PM
  • CIT 368


Vasileios (Vasilis) Kemerlis

Teaching Assistants

Di Jin (GTA)
  • echo @cs.brown.edu|sed 's/^/djin4/'
  • CIT 203 (Thu. 6PM – 8PM)
Alexander Gaidis (HTA)
  • echo @cs.brown.edu|sed 's/^/agaidis/'
  • CIT 203 (Wed. 5PM – 7PM)
Hannah Baackmaan-Friedlaender (TA)
  • echo hbaack^ma@cs.brown.edu|tr -d ^
  • CIT 203 (Mon. 5PM – 7PM)
Changmin Teng (TA)
  • echo @cs.brown.edu|sed 's/^/cteng2/'
  • CIT 205 (Tue. 4PM – 6PM)
David Liu (TA)
  • echo @cs.brown.edu|sed 's/^/dliu19/'
  • CIT 203 (Thu. 10AM – 12PM)
Mneera Abdullah (TA)
  • echo @cs.brown.edu|sed 's/^/malsaud/'
  • CIT 203 (Fri. 4PM – 6PM)


12/09/2019 Final exam.
12/04/2019 Review Day!
12/04/2019 Assignment 0x4 is due today.
12/02/2019 Lecture 0x15 posted.
12/02/2019 Final is on 12/09/2019.
11/25/2019 Lecture 0x14 posted.
11/22/2019 Assignment 0x4 is due on 12/04/2019.
11/18/2019 Lectures 0x12 and 0x13 posted.
11/15/2019 Assignment 0x4 posted.
11/15/2019 Assignment 0x3 is due today.
11/13/2019 Hack Day!
11/11/2019 Lecture 0x11 posted.
11/08/2019 Assignment 0x3 is due on 11/15/2019.
11/04/2019 Lectures 0xf and 0x10 posted.
11/01/2019 Assignment 0x3 posted.
11/01/2019 Assignment 0x2 is due today.
10/28/2019 Lectures 0xd and 0xe posted.
10/25/2019 Assignment 0x2 is due on 11/01/2019.
10/21/2019 Lectures 0xb and 0xc posted.
10/18/2019 Assignment 0x2 posted.
10/16/2019 Midterm exam.
10/14/2019 No class today.
10/11/2019 Assignment 0x1 is due today.
10/09/2019 Midterm is on 10/16/2019.
10/07/2019 Lectures 0x9 and 0xa posted.
10/04/2019 Assignment 0x1 is due on 10/11/2019.
09/30/2019 Lectures 0x7 and 0x8 posted.
27/09/2019 Assignment 0x1 posted.
09/23/2019 Lectures 0x5 and 0x6 posted.
09/18/2019 Lecture 0x4 posted.
09/16/2019 No class today.
09/09/2019 Lectures 0x2 and 0x3 posted.
09/04/2019 Lecture 0x1 posted.
09/04/2019 Welcome to CSCI 1650!