General Information

Course description

This course covers advanced techniques for attacks and defense in Cybersecurity. In particular, the course will teach binary reverse engineering, vulnerability analysis, exploit development, patching vulnerabilities, bug hunting, etc. through ten-weeks of hands-on labs with examples.

This course borrows the format of Capture-The-Flag (CTF) challenges for not only learning techniques required to solve the challenge but also enjoying the fun of taking over the systems and blocking attacks.

Who should take CS 4301.003?

CS 4301.003 is primarily mainly intended for both senior-level undergraduate and graduate students who are interested in obtaining skill sets required to thwart cyber attacks in the wild.

Over the course of lab exercises, students will become confident in competing in Capture-the-Flag (CTF) contests, conducting real-world bug hunting and getting bug bounty awards, and contributing to open-source projects by sending their patches via pull-requests.

Class meetings

  • When: Tue&Thr 11:30-12:45 (11:30am-12:45pm)

  • Where: In-Person (ECSS 2.312)

Office hours and recitation

Instructor will hold weekly office hours from 3:00 PM to 4:00 PM (In-person / Remote) Tuesday.

  • Meeting time may change at the instructor’s discretion with a prior annoucement.

Class logistics

Class attendance policy: Students are expected to attend all classes on time and actively participate hands-on labs. We will penalize students’ absence or tardiness without a proper reason.

Hands-on activity groups: Due to difficulty remote / virtual learning especially for the hands-on labs and activities, senior and graduate levels students has volunteered to take mentor roles to help you learn and follow the course material. We will assign students into 4 ~ 5 groups with a mentor assignee. We strongly encourage students to discuss and collaborate.

Asynchronous mode: CS 4301.003 will run remote / virtual mode. For those who cannot participate on time, we plan to provide an option to take the course asynchronously. Asynchronous students should inform the instructor and TA of their choice of a class mode within a week (Jan 26, 2021). Otherwise, we will consider the one as a regular mode student. We also expect Asynchronous students to watch the lecture video by the end of the day. We will use the class lecture as the primary channel to announce occasional assignments and schedule changes. It is the students’ responsibility to catch up with the lecture and follow the class logistics.

Grading policy

  • 75% lab challenges, 15 % in-class CTF at the end of semester, and 10% from participating in external hacking competitions and class participation.

  • If you miss any entire single lab, you will get an F (so please submit at least one flag per each lab). - No midterm or final exams. - See Rules.

  • Late policy:

    The class allows students to submit their keys one week after the due at 50 % of original points.

  • Make-up credits: TBA

Online Discussion

Online discussion is strongly encouraged and it will help you a lot in solving lab problems.

The class uses Discord channel as a main communication channel to share class materials. You can post your questions, ideas and thoughts and have discussions with mentors and other students. We sent the invitation via class emails or you can contact the instructor or one of TAs to join the Discord channel.

Misconduct Policy

Important

Cheating vs. collaboration

The collaboration is a desirable thing. Whereas the cheating is considered a very serious offense and is prosecuted. Vigorous prosecution requires that you be advised of the cheating policy of the course before the offending act. The following are examples how the class will define for the cheating and collaboration.

The policy is simple: don’t cheat:
  • Never share code or text on the project.

  • Never use someone else’s code or text in your solutions.

  • Never consult potential solutions on the Internet.

On the other hand, for this class, you are strongly encouraged to:
  • Share ideas.

  • Explain your code to someone to see if they know why it doesn’t work.

  • Help someone else debug if they’ve run into a wall.

If you obtain help of any kind, always write the name(s) of your sources.

Staffs

  • Instructor: Kangkook Jee

  • TAs:
    • Anthony Maranto

    • Kunal Mukherjee

    • Guangze Zu

    • Jerry Teng

    • David Wank