CS6262 Network Security: Spring 2022
This review isn't overly dissimilar to the one posted on May 3. But I will try to point out a few of the things I feel are important to know about this class.
Class overview
This was my second class in OMSCS. I took CS6035, Introduction to Information Security the previous semester. If you have some background in cybersecurity then you can likely succeed in CS6262 without taking CS6035. There is some overlap between CS6262 and CS6035, but not a huge amount. For me though I am glad I took CS6035 first.
Time Commitment
I did not record my time properly for this class. On weeks where there was a 6 papers to read, a quiz to complete, and a project to work on I was spending around 15-20 hours. On other weeks where all I had to do was skim through 2 or 3 papers, a quiz and I had already finished the project it was more like 5 hours. The time I have given on OMSCentral is a best guess estimate at the average input per week.
Project 1
Project 1 was a lot of fun. I had no previous experience in penetration testing so getting to use tools like Metasploit was enjoyable. If you have a basic understanding of Linux and can follow the instructions in the writeup, which are designed to guide you to success, there's no reason why you shouldn't do well on this priject.
Project 2
Project 2 was probably my favourite as it focused on malware analysis and forced us to go deeper by using reverse engineering and debugging tools. The fact that you have to analyse Windows, Linux and Android malware samples means that you get to try a wider range of tools and techniques. Again the writeup does a lot to guide you on what to do to succeed. This makes sense as malware analysis is difficult and for many this will be their introduction to the process and without guidance I would expect a lot of students getting stuck on this project early on.
Project 3
Project 3 seemed to be the one that a lot of students had the most difficulty with and this is probably because it required some Javascript coding. The project is about launching web attacks against a blog writing website. The environment created for the project feels a bit odd at first because you have to deliver results to a per-student page using requests. Once you get over the hurdle of how to do this properly things get easier. There was also a bit of confusion as the project writeup recommended to launch one of the attacks in one way, but then the project TA recommended on Piazza (or maybe it was in the Bluejeans demo video) to do it another way. This highlights an important point: Read Piazza! (More on that down below). Overall I think this project seems more difficult than it really is, but for anyone who is weak with Javascript I would recommend spending a little time to understand promises to make your life easier.
Project 4
This was probably my least favourite project, and it wasn't that bad. Project 4 was about analysing traffic in Wireshark and then writing Snort rules to detect certain types of attacks. The reason why I didn't like this project was that I felt there was some misdirection in the project writeup on what we were supposed to look for in DDoS traffic. This led me to waste a lot of time going down the wrong path trying to find the solution. I also burned a lot of Gradescope submissions doing this, and submissions were limited to 10 for this project to prevent bruteforcing the solution. To counter this though one of the project TAs, Melissa, went out of her way to help get me back on track with this project. She deserves a medal for dealing with my stream of annoying questions, and for answering some of those questions live during Office Hours (of which I only attended 1 for the semester).
Project 5
This project was about machine learning for intrusion detection and evading an IDS by modifying an attack payload to bypass the IDS. This was a fun project and involved some Python programming. I liked this project because it provided less guidance than the others. It required us to read and understand concepts from a paper and apply them as an algorithm in Python code. To be fair, the most important parts of the paper were distilled into a simpler form in the project writeup, but you still needed to read the paper to understand the different terms required in the algorithm. There was a project in CS6035 that focused on machine learning, but unlike that project, this one really did not require more than the most minimal understanding of what machine learning is. There were parameters for a machine learning model to tune, but unlike in CS6035 they were far better explained, and tuning the model was quite easy and for me there was no frustration over trying to understand how the machine learning model worked which wasn't part of the project anyway. This was a good project to end the semester on.
Papers
The papers were the low point of this class for me. Some of them were interesting, some of them had some historical significance, others were too mired in technical detail for me to get much out of them. Early on in the semester I looked up advice on how to read academic papers and this genuinely transformed how I read the papers and saved me a lot of time. I would recommend this to other students like me who haven't been exposed to a lot of academic papers before this class. I do recommend reading the papers because the quizzes and exam have questions that relate back to them, but don't get caught up in trying to understand every little detail. Only project 5 required reading any papers to understand the project, and even then the more difficult parts of the paper were distilled into a much more usable form in the project writeup, which was hugely appreciated.
Exam
The final exam was 25 questions with a mixture of multiple choice and true/false type questions. The exam is only worth 10% and the effort required to do well in it is low. To prepare for the exam I re-watched the lecture videos that mapped to the topics given in the exam study guide and re-read the assignment writeups. The topics given only covered just over half of the lectures and the remaining topics were related to the projects. I don't regret having spent the time on preparing, but so long as you did well on the quizzes and projects you could walk into the exam and expect to get a decent grade just from your overall understanding of the semester. I only needed around 2% to ensure an A in the class and got 90% in 15 minutes of the allocated hour.
Extra Credit Assignments
The extra credit assignments were 2 separate reviews of projects 1-3 and 4-5. The reviews aren't particularly good because there isn't consistency in the questions asked. They come out at the end of semester which I felt was not a good idea because by that time a lot of the finer details around each project have been forgotten. I would have preferred a review for each project released alongside each project so that I could give feedback as I worked through the projects. I'm not sure how these assignments are graded but they add up to 5% and I am fairly sure that as long as constructive feedback is provided that full marks are given. These assignments are a good way to get you over the line if you are just shy of a better letter grade.
Piazza & TAs
The Piazza discussion forum was active throughout the semester. The TAs were very helpful in answering questions and providing hints to help with the projects. A lot of good information came up in the discussions on Piazza, but other than one or two instances I did not find crucial information buried in Piazza that should have been in the project writeups. Compared to CS6035 I did not feel that the discussion was stifled by the threat of the OSI hammer. TAs and students were more free to provide helpful information rather than constantly trying not to cross a line by providing too detailed of an answer.
Final Result
At the time of writing the final grades haven't been released and the extra credit assignments haven't been graded but I am sitting on 98.7%.
Final Impressions
I enjoyed Network Security. It gave a good overview of a lot of topics and reinforced the fact that I want to take Advanced Malware Analysis and Information Security Lab. I actually found this class easier than its natural precursor, Introduction to Information Security. I think this was in part because this was my second class so I better understood how things work in OMSCS. I also think that the projects were a little more guided, and to some degree built on the concepts introduced in CS6035. I don't remember anything akin to the slog of trying to figure out XSS, CSRF and SQLi in the web attacks project in CS6035. I would recommend this class, and knowing what I know now, I think it could be paired with another class for those looking to get through OMSCS faster.