"HW0" - End-to-end systems abstraction
This 3-page writeup is due Wednesday,
January 18 by noon Central. This assignment is graded for completion only. I will not evaluate it for correctness.
Background
In this course, we will read and discuss research papers and tools used in
cybersecurity. In particular, roughly half the readings as well as the
homework assignments deal with what I refer to as "systems programming" —
a broad term encompassing concepts like operating systems, C/C++ programming, x86 and ARM
assembly, networking protocols, bash scripting, and organizing multiple software components.
However, there are no prerequisites for this course. I will
happily teach you required foundational materials if you are less familiar with
these concepts. To that end, the purpose of this starter assignment
is to help me understand your level of preparation with respect to systems
programming topics. While I ask that you do your best on this
writeup, I will grade it very leniently; you will receive full credit if you
turn in a complete writeup.
Scenario: Google Search
Imagine you pull up google.com and type "cybersecurity" in the search bar. You'd see something like this, right?
Now, when you hit enter, the results show up.
Sounds simple, right? In this assignment, consider all of the steps that take place between the time that you hit enter and the time that the search results are rendered in the browser.
Task: 3-page writeup
Conducting a search query is quite an involved process. You must prepare a writeup no longer than 3 pages submitted as a PDF file in which you discuss each step in the scenario described above. You can use the 3 pages however you like — it could be double-spaced paragraphs, bulleted lists, or diagrams.
This is an intentionally open-ended assignment. You must decide what topics you think are most relevant in conducting a search query, and you must decide how most effectively to communicate the steps in the search query process.
Potential discussion points
This is not an exhaustive list, but you might describe some of the following topics:
- Physical signals and USB peripherals — how does that Enter key work?
- Computer organization and interrupts — how does I/O get handled by the computer hardware?
- Precise exception handling — how does the CPU handle the keyboard interrupt when Enter is pressed?
- Kernel vs. Userspace — keystrokes are handled in the kernel by a device driver. How does that work?
- TCP/IP networking — at some point, the computer must communicate over the Internet. What does the browser do to initiate that communication?
- DNS and the Internet — once networking is possible, how does the browser know to contact Google to conduct the search?
- Web servers and sharding — How might a search engine like Google process an incoming search request? How do they handle billions of queries per day?
- Vickrey auctions — How does a service like AdWords work? How do they decide which ad to show and how much to charge?
- Information retrieval — How does the search query get mapped to a set of documents to show? How are they sorted?
- Operating systems and multiprogramming — How does your computer organize multiple running processes? How does it "know" that the Enter key is meant for the browser?
- Programming languages and parsers — Google likely returns some HTML and JavaScript. How does that get interpreted by the browser?
- Window management and compositing — How does the computer render windows on the screen?
You do not have to discuss all of these things (though you are welcome to try!).
Discussion and Goals
I am trying to accomplish two things with this assignment.
-
First, I want to understand your level of preparation for discussing systems programming topics, as they will be relevant to the research papers we discuss in class.
I will adjust the course content and discussion based upon the level of preparation demonstrated by the class in this assignment.
-
Second, I want you to demonstrate how effectively you can communicate a complex topic.
Currently, scientific research is communicated primarily through English prose in the form of peer-reviewed publications.
I will use this assignment as a baseline for assessing your skills in articulating nuanced technical detail.
Thus, this assignment is intentionally open-ended — I want you to decide what you think is the best way to communicating this process.
Deliverable and Grading
You must turn in a PDF document that is 3 pages or fewer.
- If you submit anything other than a valid PDF file, you will receive no credit.
- Your submission must have your VUNetID (e.g., leachk2) and your Vanderbilt email (e.g., kevin.leach@vanderbilt.edu) on each page of your PDF. If you omit these 2 pieces of your identity, you will receive no credit.
- You must describe at least three steps in the search scenario described above. You can pick whatever format you think is most effective to convince an uninterested reader that you know how it works.
- I will grade this leniently. You will receive full credit on this assignment if you submit a complete PDF that describes the scenario above as best you can.
Submissions can be made via the submission system.