This updates the Review Topics that were posted before the first exam. The first part is identical to what was posted before, with a new section added to reflect what we have done in Class 22, Class 23, Class 24, Class 25, and Class 26.

Representing Information

  • Understanding of the different between analog and digital data interpretations, and be able to explain why nearly all computing is done on digital data. (Class 1, Class 2, Project 1)

  • Ability to convert between binary, decimal, and hexadecimal number formats, and to answer questions about how many different values can be represented by a given number of bits or hexadecimal digits. (Class 3, Class 4, Project 1)

  • Be able to perform arithmetic operations (addition, multiplication) on binary data. (Class 5)

  • Understanding of what compression is, the difference between lossy and lossless compression, and what a compression ratio means and what factors influence it. (Class 4, Project 1)

The Internet and the Web

  • Understanding of the basic mechanisms that make Internet-scale search engines possible, including hash functions and reverse indexes. (Class 6, Class 7, Project 2)

  • Be able to explain the difference between latency and bandwidth, and how changes to a network design impact each. (Class 8)

  • Understanding of how the Internet works at the level needed to explain traceroute at a high level. (Class 9, Class 10)

  • Understanding of the structure of HTML, including URLs, links, and elements. (Class 8, Project 2)

Trust on the Internet

  • Understanding of what a domain name is and what it means to own a domain name. (Class 11)

  • Understanding of what encryption is and the properties that and encryption and decryption function should have in both symmetric and asymmetric cryptography. (Class 12)

  • Be able to state Kerckhoff’s Principle and answer whether or not a cryptosystem design satisfies it. (Class 12)

  • Understanding of how we are able to trust a website we visit is the one we expect, including how the TLS protocol establishes a secure channel between our client and a web server, and how certificates work in TLS. (Class 13)

Programming

  • Be able to read short fragments of JavaScript code and answer questions to show you understand what it means. (Class 15, Class 17, Class 18, Class 19, Class 20, Class 21; Project 3)

  • Be able to write JavaScript code to do a simple computation. You do not need to memorize the syntactic details, and are not expected to be able to write exact code, but should be able to show enough that a reader would be convinced that with access to a JavaScript interpreter and time to debug, you could get the code working. (Class 15, Class 17, Class 18, Class 19, Class 20, Class 21; Project 3)

  • Understanding of how BNF grammars describe languages, and ability to determine the set of strings in a given BNF grammar, and to define a BNF grammar for a given language. (Class 16, Class 19, Project 3)

  • Understanding of the edit distance algorithm and code, sufficient to answer questions about it. (Class 20, Class 21)

Artificial Intelligence and Machine Learning

  • Be able to speak intelligently about why it is so difficult to define artificial intelligence, and explain the problems with attempts to define it.

  • Understanding Turing’s imitiation game operational test of whether a machine can think, and what we can and cannot learn from such a test.

  • Be able to explain how Turing defined a machine, and why such a simple formal notion of a machine is a reasonable model for the complexity of modern computers.

  • Explain how machine learning, which trains a model using data, differs from traditional programming.

  • Understand the basic methods of machine learning including parameterized models, model architectures, and loss functions.

  • Be able to explain why Large Language Models like ChatGPT are prone to producing plausible text that is not grounded in facts (sometimes called hallucinations).