The following posts include content from CS_162 of UC Berkeley, 6.S191 of MIT, and X_405067 of VU Amsterdam.