CS155: Computer and Network Security

Overview

Spring 2022

Description

The course covers principles of computer systems and network security. We will discuss various attack techniques and how to defend against them. Topics include network attacks and defenses, operating system holes, web security, e-mail, botnet, malware, social engineering attacks, privacy, and digital rights management. Course projects will focus on building reliable code and understanding attacks. The course is intended for junior and senior undergraduates and first year graduate students.

Prerequisites

The course requires an understanding of operating systems, networking protocols, and a basic understanding of programming languages. Programming projects will be done primarily in C and JavaScript, but other languages may be needed.

Pre-requisites: CS110/CS111 (Principles of Computer Systems)

Textbook Information

There is no textbook for the class.
Instead, we will use research papers posted on the course syllabus page page for every lecture.

Lectures and Sections

  • All lectures will be recorded and made available on canvas.
  • There will occasionally be a discussion section. Time and location will be announced in class.
  • Attendance at the sections is optional.

Homework Assignments

  • There will be two written homework assignments and three programming projects.
  • You may collaborate when solving the written assignments, however when writing up the solutions you must do so on your own. 
  • All programming projects can be done in pairs.
  • Each programming project will be split into two separate deliverables. The second part is usually due a week after the first.
  • You must submit all assigned work electronically. Submission instructions will be provided.
  • Extensions:  Each student has a total of 72 extension hours throughout the quarter. This automatic extension can be spent in units of 24 hours on any of the assignments and projects. We will not accept submissions for any single assignment more than 72 hours after its regular deadline. The score for any late submission you make after you've used up your three free late days will be max(0, original_score * (1 - .25 * x)) where x is how many late days you've used after your three free ones.
  • Homework and projects will be due at 11:59pm PT on the specified deadline.
  • Regrade requests must be submitted at most three days after grades are released.
  • It is an honor code violation to consult solutions from previous offerings of CS155.

Exams

The final exam will be held remotely via Gradescope. Students will have three hours to complete the exam during a 24 hour period from 9AM PT on Tuesday, June 7 to 8:59:59 AM PT on Wednesday, June 8. There is no midterm exam.

Detailed Information for SCPD students

SCPD students have the option to take the final exam on campus or remotely by a designated exam proctor. If you are local to the bay area we strongly prefer you take the exam on campus.

  • If you must take the exam remotely, you should register an exam proctor ASAP on your "mystanfordconnection" account. You will have a 72 hour window from the time the exam starts on campus to take and have your proctor scan and send the exam to us for grading. Note that this does NOT mean you have 72 hours to take the exam -- you still only have two hours to take the exam, but you can choose when in the 72-hour time frame you start the exam.
  • If you are taking the exam remotely, please email the TAs with your email address, the email address of your SCPD proctor, and which date and time (PST) you would like to take the exam. We will send your proctor the exam by this time.
  • If you want to take the exam locally, you still need to register this fact on "mystanfordconnection." Besides this, all you need to do is let us know you'd like to come to the exam on campus beforehand.

Please read http://scpd.stanford.edu/programs/courses/graduate-courses/exam-monitor-information for instructions on nominating your exam monitor.

Grading

Final placement in the class will be determined by the following formula:

0.25 H + 0.5 P + 0.25 F

  • H is your average score on the two written homework assignments.
  • P is the weighted average grade on the three programming projects.
  • F is your final exam score.