PageSourceSearch

https://diveintosystems.org/

html diveintosystems.org collected 2026-09-24 18:31:40 UTC 64,696 bytes, 1,653 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="UTF-8">
5<meta http-equiv="X-UA-Compatible" content="IE=edge">
6<meta name="viewport" content="width=device-width, initial-scale=1.0">
7<meta name="generator" content="Asciidoctor 2.0.18">
8<title>Dive into Systems</title>
9<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
10<style>
11/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
12/* Uncomment the following line when using as a custom stylesheet */
13/* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
14html{font-family:sans-serif;-webkit-text-size-adjust:100%}
15a{background:none}
16a:focus{outline:thin dotted}
17a:active,a:hover{outline:0}
18h1{font-size:2em;margin:.67em 0}
19b,strong{font-weight:bold}
20abbr{font-size:.9em}
21abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
22dfn{font-style:italic}
23hr{height:0}
24mark{background:#ff0;color:#000}
25code,kbd,pre,samp{font-family:monospace;font-size:1em}
26pre{white-space:pre-wrap}
27q{quotes:"\201C" "\201D" "\2018" "\2019"}
28small{font-size:80%}
29sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
30sup{top:-.5em}
31sub{bottom:-.25em}
32img{border:0}
33svg:not(:root){overflow:hidden}
34figure{margin:0}
35audio,video{display:inline-block}
36audio:not([controls]){display:none;height:0}
37fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
38legend{border:0;padding:0}
39button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
40button,input{line-height:normal}
41button,select{text-transform:none}
42button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
43button[disabled],html input[disabled]{cursor:default}
44input[type=checkbox],input[type=radio]{padding:0}
45button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
46textarea{overflow:auto;vertical-align:top}
47table{border-collapse:collapse;border-spacing:0}
48*,::before,::after{box-sizing:border-box}
49html,body{font-size:100%}
50body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
51a:hover{cursor:pointer}
52img,object,embed{max-width:100%;height:auto}
53object,embed{height:100%}
54img{-ms-interpolation-mode:bicubic}
55.left{float:left!important}
56.right{float:right!important}
57.text-left{text-align:left!important}
58.text-right{text-align:right!important}
59.text-center{text-align:center!important}
60.text-justify{text-align:justify!important}
61.hide{display:none}
62img,object,svg{display:inline-block;vertical-align:middle}
63textarea{height:auto;min-height:50px}
64select{width:100%}
65.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
66div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
67a{color:#2156a5;text-decoration:underline;line-height:inherit}
68a:hover,a:focus{color:#1d4b8f}
69a img{border:0}
70p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
71p aside{font-size:.875em;line-height:1.35;font-style:italic}
72h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
73h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
74h1{font-size:2.125em}
75h2{font-size:1.6875em}
76h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
77h4,h5{font-size:1.125em}
78h6{font-size:1em}
79hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
80em,i{font-style:italic;line-height:inherit}
81strong,b{font-weight:bold;line-height:inherit}
82small{font-size:60%;line-height:inherit}
83code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
84ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
85ul,ol{margin-left:1.5em}
86ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
87ul.circle{list-style-type:circle}
88ul.disc{list-style-type:disc}
89ul.square{list-style-type:square}
90ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
91ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
92dl dt{margin-bottom:.3125em;font-weight:bold}
93dl dd{margin-bottom:1.25em}
94blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
95blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
96@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
97h1{font-size:2.75em}
98h2{font-size:2.3125em}
99h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
100h4{font-size:1.4375em}}
101table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
102table thead,table tfoot{background:#f7f8f7}
103table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
104table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
105table tr.even,table tr.alt{background:#f8f8f7}
106table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
107h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
108h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
109.center{margin-left:auto;margin-right:auto}
110.stretch{width:100%}
111.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
112.clearfix::after,.float-group::after{clear:both}
113:not(pre).nobreak{word-wrap:normal}
114:not(pre).nowrap{white-space:nowrap}
115:not(pre).pre-wrap{white-space:pre-wrap}
116:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
117pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
118pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
119pre>code{display:block}
120pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
121em em{font-style:normal}
122strong strong{font-weight:400}
123.keyseq{color:rgba(51,51,51,.8)}
124kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
125.keyseq kbd:first-child{margin-left:0}
126.keyseq kbd:last-child{margin-right:0}
127.menuseq,.menuref{color:#000}
128.menuseq b:not(.caret),.menuref{font-weight:inherit}
129.menuseq{word-spacing:-.02em}
130.menuseq b.caret{font-size:1.25em;line-height:.8}
131.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
132b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
133b.button::before{content:"[";padding:0 3px 0 2px}
134b.button::after{content:"]";padding:0 2px 0 3px}
135p a>code:hover{color:rgba(0,0,0,.9)}
136#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
137#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
138#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
139#content{margin-top:1.25em}
140#content::before{content:none}
141#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
142#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
143#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
144#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
145#header .details span:first-child{margin-left:-.125em}
146#header .details span.email a{color:rgba(0,0,0,.85)}
147#header .details br{display:none}
148#header .details br+span::before{content:"\00a0\2013\00a0"}
149#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
150#header .details br+span#revremark::before{content:"\00a0|\00a0"}
151#header #revnumber{text-transform:capitalize}
152#header #revnumber::after{content:"\00a0"}
153#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
154#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
155#toc>ul{margin-left:.125em}
156#toc ul.sectlevel0>li>a{font-style:italic}
157#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
158#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
159#toc li{line-height:1.3334;margin-top:.3334em}
160#toc a{text-decoration:none}
161#toc a:active{text-decoration:underline}
162#toctitle{color:#7a2518;font-size:1.2em}
163@media screen and (min-width:768px){#toctitle{font-size:1.375em}
164body.toc2{padding-left:15em;padding-right:0}
165#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
166#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
167#toc.toc2>ul{font-size:.9em;margin-bottom:0}
168#toc.toc2 ul ul{margin-left:0;padding-left:1em}
169#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
170body.toc2.toc-right{padding-left:0;padding-right:15em}
171body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
172@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
173#toc.toc2{width:20em}
174#toc.toc2 #toctitle{font-size:1.375em}
175#toc.toc2>ul{font-size:.95em}
176#toc.toc2 ul ul{padding-left:1.25em}
177body.toc2.toc-right{padding-left:0;padding-right:20em}}
178#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
179#content #toc>:first-child{margin-top:0}
180#content #toc>:last-child{margin-bottom:0}
181#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
182#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
183#content{margin-bottom:.625em}
184.sect1{padding-bottom:.625em}
185@media screen and (min-width:768px){#content{margin-bottom:1.25em}
186.sect1{padding-bottom:1.25em}}
187.sect1:last-child{padding-bottom:0}
188.sect1+.sect1{border-top:1px solid #e7e7e9}
189#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
190#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
191#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
192#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
193#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
194details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
195details{margin-left:1.25rem}
196details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
197details>summary::-webkit-details-marker{display:none}
198details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
199details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
200details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
201.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
202table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
203.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
204.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
205.admonitionblock>table td.icon{text-align:center;width:80px}
206.admonitionblock>table td.icon img{max-width:none}
207.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
208.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
209.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
210.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
211.exampleblock>.content>:first-child{margin-top:0}
212.exampleblock>.content>:last-child{margin-bottom:0}
213.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
214.sidebarblock>:first-child{margin-top:0}
215.sidebarblock>:last-child{margin-bottom:0}
216.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
217.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
218.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
219@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
220@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
221.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
222.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
223.listingblock>.content{position:relative}
224.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
225.listingblock:hover code[data-lang]::before{display:block}
226.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
227.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
228.listingblock pre.highlightjs{padding:0}
229.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
230.listingblock pre.prettyprint{border-width:0}
231.prettyprint{background:#f7f7f8}
232pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
233pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
234pre.prettyprint li code[data-lang]::before{opacity:1}
235pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
236table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
237table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
238table.linenotable td.code{padding-left:.75em}
239table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
240pre.pygments span.linenos{display:inline-block;margin-right:.75em}
241.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
242.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
243.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
244.quoteblock blockquote{margin:0;padding:0;border:0}
245.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;
245margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
246.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
247.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
248.verseblock{margin:0 1em 1.25em}
249.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
250.verseblock pre strong{font-weight:400}
251.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
252.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
253.quoteblock .attribution br,.verseblock .attribution br{display:none}
254.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
255.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
256.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
257.quoteblock.abstract{margin:0 1em 1.25em;display:block}
258.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
259.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
260.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
261.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
262.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
263p.tableblock:last-child{margin-bottom:0}
264td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
265td.tableblock>.content>:last-child{margin-bottom:-1.25em}
266table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
267table.grid-all>*>tr>*{border-width:1px}
268table.grid-cols>*>tr>*{border-width:0 1px}
269table.grid-rows>*>tr>*{border-width:1px 0}
270table.frame-all{border-width:1px}
271table.frame-ends{border-width:1px 0}
272table.frame-sides{border-width:0 1px}
273table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
274table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
275table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
276table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
277table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
278th.halign-left,td.halign-left{text-align:left}
279th.halign-right,td.halign-right{text-align:right}
280th.halign-center,td.halign-center{text-align:center}
281th.valign-top,td.valign-top{vertical-align:top}
282th.valign-bottom,td.valign-bottom{vertical-align:bottom}
283th.valign-middle,td.valign-middle{vertical-align:middle}
284table thead th,table tfoot th{font-weight:bold}
285tbody tr th{background:#f7f8f7}
286tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
287p.tableblock>code:only-child{background:none;padding:0}
288p.tableblock{font-size:1em}
289ol{margin-left:1.75em}
290ul li ol{margin-left:1.5em}
291dl dd{margin-left:1.125em}
292dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
293li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
294ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
295ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
296ul.unstyled,ol.unstyled{margin-left:0}
297li>p:empty:only-child::before{content:"";display:inline-block}
298ul.checklist>li>p:first-child{margin-left:-1em}
299ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
300ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
301ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
302ul.inline>li{margin-left:1.25em}
303.unstyled dl dt{font-weight:400;font-style:normal}
304ol.arabic{list-style-type:decimal}
305ol.decimal{list-style-type:decimal-leading-zero}
306ol.loweralpha{list-style-type:lower-alpha}
307ol.upperalpha{list-style-type:upper-alpha}
308ol.lowerroman{list-style-type:lower-roman}
309ol.upperroman{list-style-type:upper-roman}
310ol.lowergreek{list-style-type:lower-greek}
311.hdlist>table,.colist>table{border:0;background:none}
312.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
313td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
314td.hdlist1{font-weight:bold;padding-bottom:1.25em}
315td.hdlist2{word-wrap:anywhere}
316.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
317.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
318.colist td:not([class]):first-child img{max-width:none}
319.colist td:not([class]):last-child{padding:.25em 0}
320.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
321.imageblock.left{margin:.25em .625em 1.25em 0}
322.imageblock.right{margin:.25em 0 1.25em .625em}
323.imageblock>.title{margin-bottom:0}
324.imageblock.thumb,.imageblock.th{border-width:6px}
325.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
326.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
327.image.left{margin-right:.625em}
328.image.right{margin-left:.625em}
329a.image{text-decoration:none;display:inline-block}
330a.image object{pointer-events:none}
331sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
332sup.footnote a,sup.footnoteref a{text-decoration:none}
333sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
334#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
335#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
336#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
337#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
338#footnotes .footnote:last-of-type{margin-bottom:0}
339#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
340div.unbreakable{page-break-inside:avoid}
341.big{font-size:larger}
342.small{font-size:smaller}
343.underline{text-decoration:underline}
344.overline{text-decoration:overline}
345.line-through{text-decoration:line-through}
346.aqua{color:#00bfbf}
347.aqua-background{background:#00fafa}
348.black{color:#000}
349.black-background{background:#000}
350.blue{color:#0000bf}
351.blue-background{background:#0000fa}
352.fuchsia{color:#bf00bf}
353.fuchsia-background{background:#fa00fa}
354.gray{color:#606060}
355.gray-background{background:#7d7d7d}
356.green{color:#006000}
357.green-background{background:#007d00}
358.lime{color:#00bf00}
359.lime-background{background:#00fa00}
360.maroon{color:#600000}
361.maroon-background{background:#7d0000}
362.navy{color:#000060}
363.navy-background{background:#00007d}
364.olive{color:#606000}
365.olive-background{background:#7d7d00}
366.purple{color:#600060}
367.purple-background{background:#7d007d}
368.red{color:#bf0000}
369.red-background{background:#fa0000}
370.silver{color:#909090}
371.silver-background{background:#bcbcbc}
372.teal{color:#006060}
373.teal-background{background:#007d7d}
374.white{color:#bfbfbf}
375.white-background{background:#fafafa}
376.yellow{color:#bfbf00}
377.yellow-background{background:#fafa00}
378span.icon>.fa{cursor:default}
379a span.icon>.fa{cursor:inherit}
380.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
381.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
382.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
383.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
384.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
385.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
386.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
387.conum[data-value] *{color:#fff!important}
388.conum[data-value]+b{display:none}
389.conum[data-value]::after{content:attr(data-value)}
390pre .conum[data-value]{position:relative;top:-.125em}
391b.conum *{color:inherit!important}
392.conum:not([data-value]):empty{display:none}
393dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
394h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
395p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
396p,blockquote,dt,td.content,span.alt,summary{font-size:1.0625rem}
397p{margin-bottom:1.25rem}
398.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
399.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
400.print-only{display:none!important}
401@page{margin:1.25cm .75cm}
402@media print{*{box-shadow:none!important;text-shadow:none!important}
403html{font-size:80%}
404a{color:inherit!important;text-decoration:underline!important}
405a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
406a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
407abbr[title]{border-bottom:1px dotted}
408abbr[title]::after{content:" (" attr(title) ")"}
409pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
410thead{display:table-header-group}
411svg{max-width:100%}
412p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
413h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
414#header,#content,#footnotes,#footer{max-width:none}
415#toc,.sidebarblock,.exampleblock>.content{background:none!important}
416#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
417body.book #header{text-align:center}
418body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
419body.book #header .details{border:0!important;display:block;padding:0!important}
420body.book #header .details span:first-child{margin-left:0!important}
421body.book #header .details br{display:block}
422body.book #header .details br+span::before{content:none!important}
423body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
424body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
425.listingblock code[data-lang]::before{display:block}
426#footer{padding:0 .9375em}
427.hide-on-print{display:none!important}
428.print-only{display:block!important}
429.hide-for-print{display:none!important}
430.show-for-print{display:inherit!important}}
431@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
432.sect1{padding:0!important}
433.sect1+.sect1{border:0}
434#footer{background:none}
435#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
436@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
437</style>
438<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
439</head>
440<body class="article toc2 toc-left">
441<div id="header">
442<div id="toc" class="toc2">
443<div id="toctitle">Table of Contents</div>
444<ul class="sectlevel0">
445<li><a href="#_dive_into_systems">Dive into Systems</a>
446<ul class="sectlevel1">
447<li><a href="#_the_textbook">The Textbook</a>
448<ul class="sectlevel2">
449<li><a href="#_read_the_book">Read The Book</a>
450<ul class="sectlevel3">
451<li><a href="#_free_on_line_version">Free On-line Version</a></li>
452<li><a href="#_print_version">Print Version</a></li>
453</ul>
454</li>
455<li><a href="#_chapter_reviewers">Chapter Reviewers</a></li>
456</ul>
457</li>
458<li><a href="#_interactive_tools">Interactive Tools</a>
459<ul class="sectlevel2">
460<li><a href="#_asm_visualizer">ASM Visualizer</a></li>
461<li><a href="#_interactive_exercises">Interactive Exercises</a>
462<ul class="sectlevel3">
463<li><a href="#_exercise_developers">Exercise Developers</a></li>
464</ul>
465</li>
466</ul>
467</li>
468<li><a href="#_activities">Activities</a>
469<ul class="sectlevel2">
470<li><a href="#_announcements">Announcements</a></li>
471<li><a href="#_events">Events</a></li>
472<li><a href="#papers">Papers</a></li>
473</ul>
474</li>
475<li><a href="#_using_dive_into_systems">Using Dive into Systems</a>
476<ul class="sectlevel2">
477<li><a href="#earlyadopt">2019-2020 Early Adopters</a></li>
478<li><a href="#_current_adopters">Current Adopters</a></li>
479</ul>
480</li>
481<li><a href="#people">People</a></li>
482<li><a href="#mailinglist">Mailing List</a></li>
483<li><a href="#_contact_us">Contact Us</a></li>
484</ul>
485</li>
486</ul>
487</div>
488</div>
489<div id="content">
490<!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 490-491
490
491<script async src="https://www.googletagmanager.com/gtag/js?id=
491G-6C7YGP3BE6
vendor: 12 bytes, line 491
491"></script>
492<script>
493  
vendor: 134 bytes, lines 493-497
493window.dataLayer = window.dataLayer || [];
494  function gtag(){dataLayer.push(arguments);}
495  gtag('js', new Date());
496
497  gtag('config', '
497G-6C7YGP3BE6
vendor: 4 bytes, line 497
497');
498</script>
498
499<h1 id="_dive_into_systems" class="sect0">Dive into Systems</h1>
500<div class="paragraph">
501<p><span class="image related thumb left"><img src="DisFish.png" alt="DisFish" width="100"></span>
502<a href="http://www.suzannejmatthews.com/">Suzanne J. Matthews</a>, West Point<br>
503<a href="https://www.cs.swarthmore.edu/~newhall/">Tia Newhall</a>, Swarthmore College<br>
504<a href="https://www.cs.swarthmore.edu/~kwebb/">Kevin C. Webb</a>, Swarthmore College</p>
505</div>
506<div class="paragraph">
507<p>The Dive into Systems project develops and evaluates
508teaching resources specifically for introductory computer systems,
509computer organization, and parallel computing courses.
510Our primary projects include:</p>
511</div>
512<div class="ulist">
513<ul>
514<li>
515<p><em>Dive into Systems</em>: our free, online textbook (also available is
516a low cost print version from No Starch Press).</p>
517</li>
518<li>
519<p>Interactive, online learning tools.</p>
520</li>
521<li>
522<p>Interactive, online exercises.</p>
523</li>
524</ul>
525</div>
526<div class="sect1">
527<h2 id="_the_textbook">The Textbook</h2>
528<div class="sectionbody">
529<div class="paragraph">
530<p><em>Dive into Systems</em> is a <strong>free, online textbook</strong> that serves as a gentle
531introduction to computer systems, computer organization, and parallel
532computing.  The book is intended for an audience that has only a CS1
533background.  It guides readers through a vertical slice of a computer to
534develop an understanding of a variety of systems topics, including:</p>
535</div>
536<div class="ulist">
537<ul>
538<li>
539<p>how a computer runs a program, from a program expressed in a high-level
540language to low-level binary representation and circuits</p>
541</li>
542<li>
543<p>programming in C and Assembly (assuming a CS1 background)</p>
544</li>
545<li>
546<p>introduction to operating systems and the systems costs that affect program
547performance (the memory hierarchy, caching, and code optimization)</p>
548</li>
549<li>
550<p>introduction to parallel computing with shared memory and pthreads</p>
551</li>
552</ul>
553</div>
554<div class="paragraph">
555<p><em>Dive into Systems</em> is designed to be present topics in as independent manner
556as possible so that it can be used as a primary textbook for a wide range of
557introductory-level computer systems courses, or as a supplemental background
558textbook for upper-level courses that cover Operating Systems, Computer
559Architecture, Compilers, Networks, Databases, and Parallel Computing.</p>
560</div>
561<div class="paragraph">
562<p><em>Dive into Systems</em> includes one or more chapters on the following topics:
563<strong>Introduction to Computer Systems</strong>; <strong>C Programming</strong> (covers most of the C
564language, debugging with gdb and valgrind, and code optimization);
565<strong>Computer Organization and Architecture</strong> (includes binary
566representation, computer architecture, memory hierarchy, and caching);
567<strong>Assembly Programming</strong> (covers 64-bit x86, 32-bit x86, and 64-bit ARM);
568<strong>The Operating System</strong>; and <strong>Parallel Computing</strong> (focus on shared
569memory and threads, and also looking ahead to others).</p>
570</div>
571<hr>
572<div class="sect2">
573<h3 id="_read_the_book">Read The Book</h3>
574<div class="paragraph">
575<p>Our textbook is available free, on-line in two different formats (mult-page,
576and single page).  Additionally, a low-cost print version of our textbook is
577available from No Starch Press (note that <strong>our textbook will always remain
578free on-line here</strong>).  Instructors, if you are using our textbook for your
579course, please let us know (please
580email us at <a href="mailto:[email protected]">[email protected]</a> sharing this information with us).</p>
581</div>
582<div class="sect3">
583<h4 id="_free_on_line_version">Free On-line Version</h4>
584<table class="tableblock frame-all grid-all stretch">
585<colgroup>
586<col style="width: 50%;">
587<col style="width: 50%;">
588</colgroup>
589<tbody>
590<tr>
591<td class="tableblock halign-center valign-top"><p class="tableblock"><a href="/book/">As a collection of documents (easier to navigate)</a></p></td>
592<td class="tableblock halign-center valign-top"><p class="tableblock"><a href="/singlepage/">As a single-page document</a></p></td>
593</tr>
594</tbody>
595</table>
596<div class="paragraph">
597<p>This is release of Version 1.2 of the Dive into Systems textbook
598that was updated on <em>August 25, 2023</em>. This version includes two new
599appendices and links to early versions of interactive exercises.</p>
600</div>
601<div class="paragraph">
602<p>The two Appendices added since Version 1.0 of our book are:</p>
603</div>
604<div class="ulist">
605<ul>
606<li>
607<p><a href="/book/Appendix1/index.html">Appendix 1: "Chapter 1 for
608Java Programers"</a>. This is a version of Chapter 1 that uses Java
609code examples to compare to C code (Python examples are used in Chapter 1).</p>
610</li>
611<li>
612<p><a href="/book/Appendix2/index.html">Appendix 2: "Using Unix"</a>.
613This starts with the basics of Unix command line and Unix file system, and
614then covers a wide range of Unix commands and
615utilities (e.g., tar, make and Makefiles, editors, chmod, ssh, man,
616io redirection, &#8230;&#8203;).  It also introduces some more advanced features
617like pipes, getting system state, and writing shell scripts.  With each
618topic we include links to resources for further information.</p>
619</li>
620</ul>
621</div>
622<div class="paragraph">
623<p>If you find any errors, typos, etc., please contact us.
624We appreciate your feedback!</p>
625</div>
626<div class="paragraph">
627<p><strong>Instructors: if you are using our textbook for your course, please let us
628know. </strong>  Please email us at <a href="mailto:[email protected]">[email protected]</a> sharing this
629information with us.</p>
630</div>
631</div>
632<div class="sect3">
633<h4 id="_print_version">Print Version</h4>
634<div class="imageblock text-center left">
635<div class="content">
636<a class="image" href="https://nostarch.com/dive-systems"><img src="Diveintosystemscover.jpeg" alt="Cover art" width="200"></a>
637</div>
638</div>
639<div class="paragraph">
640<p>&#8203;</p>
641</div>
642<div class="paragraph">
643<p>A low cost print version of our textbook is available by purchase directly
644from <a href="https://nostarch.com/dive-systems">No Starch Press</a>, and from numerous
645other sellers including
646<a href="https://www.amazon.com/Dive-Into-Systems-Introduction-Computer/dp/1718501366/ref=sr_1_1?crid=YIK9MEFTDHXF&amp;keywords=dive+into+systems&amp;qid=1664204099&amp;qu=eyJxc2MiOiIwLjYzIiwicXNhIjoiMC4yNCIsInFzcCI6IjAuMzEifQ%3D%3D&amp;sprefix=dive+into+%2Caps%2C892&amp;sr=8-1">Amazon</a>.</p>
647</div>
648<div class="paragraph">
649<p><span class="red"><strong>Please keep in mind that the online version of our textbook will
650always remain free from our website.</strong></span></p>
651</div>
652<div class="paragraph">
653<p><a href="https://nostarch.com/dive-systems">Dive into Systems Print Version</a>, No Starch
654Press, August 2022 (ISBN-13: 9781718501362).</p>
655</div>
656<hr>
657</div>
658</div>
659<div class="sect2">
660<h3 id="_chapter_reviewers">Chapter Reviewers</h3>
661<div class="paragraph">
662<p>Each chapter of Dive into Systems was peer-reviewed
663by faculty and other experts from across the United States. We
664are extremely grateful to those who served as our formal
665reviewers.  Their insight, time, and recommendations
666improved the rigor and precision of Dive into Systems.
667Chapter reviewers include:</p>
668</div>
669<div class="ulist">
670<ul>
671<li>
672<p>Jeannie Albrecht (Williams College)</p>
673</li>
674<li>
675<p>John Barr (Ithaca College)</p>
676</li>
677<li>
678<p>Jon Bentley</p>
679</li>
680<li>
681<p>Anu G. Bourgeois (Georgia State University)</p>
682</li>
683<li>
684<p>Martina Barnas (Indiana University Bloomington)</p>
685</li>
686<li>
687<p>David Bunde (Knox College)</p>
688</li>
689<li>
690<p>Stephen Carl (Sewanee: The University of the South)</p>
691</li>
692<li>
693<p>Bryan Chin (U.C. San Diego)</p>
694</li>
695<li>
696<p>Amy Csizmar Dalal (Carleton College)</p>
697</li>
698<li>
699<p>Debzani Deb (Winston-Salem State University)</p>
700</li>
701<li>
702<p>Saturnino Garcia (University of San Diego)</p>
703</li>
704<li>
705<p>Tim Haines (University of Wisconsin)</p>
706</li>
707<li>
708<p>Bill Jannen (Williams College)</p>
709</li>
710<li>
711<p>Ben Marks (Swarthmore College)</p>
712</li>
713<li>
714<p>Alexander Mentis (West Point)</p>
715</li>
716<li>
717<p>Rick Ord (U.C. San Diego)</p>
718</li>
719<li>
720<p>Joe Politz (U.C. San Diego)</p>
721</li>
722<li>
723<p>Brad Richards (University of Puget Sound)</p>
724</li>
725<li>
726<p>Kelly Shaw (Williams College)</p>
727</li>
728<li>
729<p>Simon Sultana (Fresno Pacific University)</p>
730</li>
731<li>
732<p>Cynthia Taylor (Oberlin College)</p>
733</li>
734<li>
735<p>David Toth (Centre College)</p>
736</li>
737<li>
738<p>Bryce Wiedenbeck (Davidson College)</p>
739</li>
740<li>
741<p>Daniel Zingaro (University of Toronto Mississauga)</p>
742</li>
743</ul>
744</div>
745</div>
746</div>
747</div>
748<div class="sect1">
749<h2 id="_interactive_tools">Interactive Tools</h2>
750<div class="sectionbody">
751<div class="paragraph">
752<p>As part of our NSF funded project, we are developing interactive
753book exercises and related interactive learning tools.</p>
754</div>
755<div class="sect2">
756<h3 id="_asm_visualizer">ASM Visualizer</h3>
757<div class="paragraph">
758<p><a href="https://asm.diveintosystems.org/">ASM Visualizer</a> is our assembly
759visualization tool.
760It is designed to help students learn assembly programming, aiding in
761their understanding of how assembly instructions are executed and the
762relationship between assembly and equivalent high-level language code.
763Our tool allows a user to step both forward and backward through the
764execution of an assembly program, one instruction at a time, seeing how
765instructions use and modify values in stack memory and CPU registers.</p>
766</div>
767<div class="paragraph">
768<p>ASM Visualizer supports three user-interface modes for different stages of
769learning assembly programming.</p>
770</div>
771<div class="olist arabic">
772<ol class="arabic">
773<li>
774<p><strong>Arithmetic Mode</strong> is designed for beginners.  It hides the assembly
775code for the containing function&#8217;s stack set up and return, allowing
776the user to to enter basic arithmetic and control instructions, and to
777set some initial values in registers and on the stack (for local variables),
778used by their instructions.</p>
779</li>
780<li>
781<p><strong>Function Mode</strong> is for users who want practice with function
782call/return and stack set-up and tear-down, and with writing functions
783in assembly.  This mode provides the start of a <code>main</code> function
784with some stack set up and tear down and return instructions added.
785A user adds additional instructions to <code>main</code>, including support for adding
786calls to additional functions that they add.</p>
787</li>
788<li>
789<p><strong>Full Program Mode</strong> is for users who want to write a full program to
790trace through.  This mode does not provide any starting point assembly
791scaffolding code like the other two modes.</p>
792</li>
793</ol>
794</div>
795<div class="paragraph">
796<p>See our <a href="#papers">SIGCSE'25 paper</a> for more information about this tool,
797including an evaluation of its use in introductory systems courses.</p>
798</div>
799</div>
800<div class="sect2">
801<h3 id="_interactive_exercises">Interactive Exercises</h3>
802<div class="paragraph">
803<p>With external exercise developers and our students, we are currently
804adding interactive exercises to our online textbook.  Some of these
805also include our development of new interactive exercise tools specifically
806for exercises on computer systems topics.</p>
807</div>
808<div class="paragraph">
809<p>This work is currently under development.  Our in-progress exercises are
810available online (and are also linked to from our online textbook chapters):
811<a href="https://diveintosystems.org/exercises/frontmatter.html">Dive
812into Systems Interactive Exercises</a></p>
813</div>
814<div class="sect3">
815<h4 id="_exercise_developers">Exercise Developers</h4>
816<div class="paragraph">
817<p>Our NSF sponsored project supports experts from our community to help
818develop book exercises, and supports <a href="#people">students</a>
819to help with the development of interative tools and with the
820implementation of the exercises in their interactive, online form.</p>
821</div>
822<div class="paragraph">
823<p>We are grateful to our team of exercise developers for their
824work in helping to create these exercises:</p>
825</div>
826<div class="ulist">
827<ul>
828<li>
829<p>Tanya Amert, Carleton College</p>
830</li>
831<li>
832<p>Jeannie Albrecht, Williams College</p>
833</li>
834<li>
835<p>John Barr, Ithaca College</p>
836</li>
837<li>
838<p>David Bunde, Knox College</p>
839</li>
840<li>
841<p>Danielle Ellsworth, Colorado College</p>
842</li>
843<li>
844<p>Sat Garcia, University of San Diego</p>
845</li>
846<li>
847<p>Roberto Hoyle, Oberlin College</p>
848</li>
849<li>
850<p>Bill Kerney, Clovis Community College</p>
851</li>
852<li>
853<p>Zachary Kurmas, Grand Valley State University</p>
854</li>
855<li>
856<p>Sunjae Park, Wentworth Institute of Technology</p>
857</li>
858<li>
859<p>Crystal Peng, Park University</p>
860</li>
861<li>
862<p>Christine Reily, Skidmore College</p>
863</li>
864<li>
865<p>John Rieffel, Union College</p>
866</li>
867<li>
868<p>Kathleen Riley, American University</p>
869</li>
870<li>
871<p>John Stratton, Whitman College</p>
872</li>
873<li>
874<p>Brian Toone, Samford University</p>
875</li>
876<li>
877<p>Dee Weikle, James Madison University</p>
878</li>
879<li>
880<p>Richard Weiss, The Evergreen State College</p>
881</li>
882<li>
883<p>Bryce Wiedenbeck, Davidson University</p>
884</li>
885</ul>
886</div>
887</div>
888</div>
889</div>
890</div>
891<div class="sect1">
892<h2 id="_activities">Activities</h2>
893<div class="sectionbody">
894<div class="sect2">
895<h3 id="_announcements">Announcements</h3>
896<div class="paragraph">
897<p>We are delighted to announce our <strong>NSF sponsored project to add interactive
898content to our textbook</strong>. As part of this effort we are seeking community help
899to create and add dynamic visualizations, interactive exercises, and worked
900examples to augment our textbook with online resources that will include
901exercises for students and supplemental resources for instructors.</p>
902</div>
903<div class="paragraph">
904<p>To learn about recruiting and events associated with this project, and to
905hear about other information about and  updates to our book, please subscribe
906to our low-volume <a href="#mailinglist">Mailing List</a>.</p>
907</div>
908</div>
909<div class="sect2">
910<h3 id="_events">Events</h3>
911<div class="ulist">
912<ul>
913<li>
914<p><a href="https://diveintosystems.org/sigcse27/">SIGCSE'27 Affiliated Event:
915Diving into the Future of Computer Systems Education</a>.
916<strong>Wednesday, February 17, 2027</strong>, 2-5:15 PM,
917See the link for more details, and to fill out the  RSVP form to register for this event.</p>
918</li>
919</ul>
920</div>
921<h5 id="_past_eventspresentations" class="discrete">Past Events/Presentations</h5>
922<div class="ulist">
923<ul>
924<li>
925<p><a href="https://diveintosystems.org/sigcse25/">SIGCSE'25 Affiliated Event:
926Collaboratively Developing Dynamic and Interactive Materials for
927Dive into Systems</a>.
928<strong>Wednesday, February 26, 2025</strong>, 1-5:45 PM,</p>
929</li>
930<li>
931<p>
931<a href="https://sigcse2025.sigcse.org/details/sigcse-ts-2025-Papers/21/ASM-Visualizer-a-Learning-Tool-for-Assembly-Programming">SIGCSE'25 Paper Presentation: "ASM
932Visualizer: a Learning Tool for Assembly Programming"</a> Sat, March 1,
93310:45 AM EST</p>
934</li>
935<li>
936<p>Presentation, NSF June 2024.</p>
937</li>
938<li>
939<p><a href="https://diveintosystems.org/sigcse24/">SIGCSE'24 Affiliated Event: Building
940interactivity into Dive into Systems</a>.  Wednesday, March 20, 2023, 1-5:45
941PM, See the link for more details.</p>
942</li>
943<li>
944<p>Presentation,
945 <a href="https://www.csc2.ncsu.edu/faculty/efg/people/www/wcae2023.html">WCAE'23</a>
946 "A Free Online Textbook Introducing Computer Architecture Topics",
947 Tia Newhall, Suzanne Matthews, Kevin Webb, Orlando, FL, USA, June 17 2023.
948(<a href="https://dl.acm.org/doi/10.1145/3605507.3610627">paper</a>,
949 <a href="https://www.cs.swarthmore.edu/~newhall/papers/wcae23talk.pdf">talk slides</a>)</p>
950</li>
951<li>
952<p><a href="https://diveintosystems.org/sigcse23/">SIGCSE'23 Affiliated Event: Building
953interactivity into Dive into Systems</a>.  Wednesday, March 15, 2023,
954Toronto, CA.
955(<a href="https://sigcse2023.sigcse.org/details/sigcse-ts-2023-affiliated-events/8/Collaboratively-Developing-Dynamic-and-Interactive-Materials-for-Dive-into-Systems">program link</a>)</p>
956</li>
957<li>
958<p>Presentation,
959<a href="https://sites.google.com/site/ccsceastern/conference-info">CCSC Eastern'22</a>:
960"<em>Adding Interactive Content to Dive into Systems, a free online
961textbook for introducing students to computer systems</em>".
962(<a href="https://www.cs.swarthmore.edu/~newhall/papers/ccsce22_talk.pdf">talk
963slides</a>)</p>
964</li>
965<li>
966<p>Panel: "<em>How do you write an open-access textbook and why should you
967do it?</em>".  Panelists: Carmelo Galanti, Temple University,
968Donald Wargo, Temple University, Tia Newhall, Swarthmore College.
969Moderated by Suzanne J. Matthews, West Point.
970Oct. 13, 2022, Friends Center, Philadelphia, PA.
971Sonsored by the Aydolotte Foundation and Swarthmore College Libraries.</p>
972</li>
973<li>
974<p>Presentation, <a href="https://sigcse2021.sigcse.org/schedule/">SIGCSE'21</a>:
975"<em>Dive into Systems: A Free, Online, Textbook for
976Introducing Computer Systems</em>".
977(<a href="https://dl.acm.org/doi/abs/10.1145/3408877.3432514">open access paper</a>,
978<a href="https://www.cs.swarthmore.edu/~newhall/papers/sigcse21_talk.pdf">talk
979slides</a>)</p>
980</li>
981<li>
982<p>Panel, <a href="https://sigcse2021.sigcse.org/schedule/">SIGCSE'21</a>:
983"<em>TextbooksForAll: Free textbooks and their place in computer science
984education</em>". Suzanne Matthews, Chris Mayfield, Remzi Arpaci-Dusseau,
985Kevin Webb. (<a href="https://dl.acm.org/doi/10.1145/3408877.3432567">abstract</a>)</p>
986</li>
987</ul>
988</div>
989</div>
990<div class="sect2">
991<h3 id="papers">Papers</h3>
992<div class="paragraph">
993<p>See our <a href="https://dl.acm.org/doi/abs/10.1145/3408877.3432514">open-access paper
994from SIGCSE'21</a> for more information about our textbook, including an
995evaluation from student and faculty participants in our
996<a href="#earlyadopt">2019-2020 Early Adopters</a> Program.</p>
997</div>
998<div class="ulist">
999<ul>
1000<li>
1001<p><a href="https://dl.acm.org/doi/10.1145/3641554.3701793">"ASM Visualizer: a Learning
1002Tool for Assembly Programming"</a>
1003 Tia Newhall, Kevin Webb, Isabel Romea, Emma Stavis, Suzanne Matthews,
1004 To appear in Proceedings of the 56th ACM Technical Symposium on
1005 Computer Science Education (SIGCSE'25), March 2025.</p>
1006</li>
1007<li>
1008<p><a href="https://dl.acm.org/doi/10.1145/3605507.3610627">"A free Online
1009Textbook Introducing Computer Architecture Topics"</a>,
1010Tia Newhall, Suzanne Matthews, Kevin Webb. In Proceedings of the
1011Workshop on Computer Architecture Education
1012(<a href="https://www.csc2.ncsu.edu/faculty/efg/people/www/wcae2023.html">WCAE'23</a>)
1013in conjunction with the 50th International Symposium on Computer
1014Architecture (<a href="https://iscaconf.org/isca2023/">ISCA</a>), June 2023.
1015(<a href="https://www.cs.swarthmore.edu/~newhall/papers/wcae23talk.pdf">talk slides</a>)</p>
1016</li>
1017<li>
1018<p><a href="https://dl.acm.org/doi/abs/10.1145/3408877.3432514">"Dive into Systems: A
1019Free, Online Textbook for Introducing Computer Systems"</a>, Suzanne J.
1020Matthews, Tia Newhall, Kevin C. Webb. In Proceedings of the 52nd ACM
1021Technical Symposium on Computer Science Education (SIGCSE '21), March, 2021.
1022(<a href="https://www.cs.swarthmore.edu/~newhall/papers/sigcse21_talk.pdf">talk slides</a>)</p>
1023</li>
1024</ul>
1025</div>
1026</div>
1027</div>
1028</div>
1029<div class="sect1">
1030<h2 id="_using_dive_into_systems">Using Dive into Systems</h2>
1031<div class="sectionbody">
1032<div class="paragraph">
1033<p>Everyone is free to use <em>Dive into Systems</em> in their course! The book will remain free online. If you are using <em>Dive into Systems</em> at your institution, please reach out and let us know (<a href="mailto:[email protected]">[email protected]</a>)! This information will really help us continue to expand the book.</p>
1034</div>
1035<div class="sect2">
1036<h3 id="earlyadopt">2019-2020 Early Adopters</h3>
1037<div class="paragraph">
1038<p><em>Dive into Systems</em> was first piloted as a textbook in the Computer
1039Organization course at West Point in Fall 2018 and in the
1040(<a href="https://www.cs.swarthmore.edu/~newhall/cs31">Intro to Computer Systems</a>) at
1041Swarthmore College in Spring 2019.  In Fall 2019, <em>Dive into Systems</em> launched
1042its Early Adopter Program, which enabled faculty around the United States to pilot the
1043stable release of <em>Dive into Systems</em> at their institutions.  The Early Adopter
1044Program was a huge help to the authors, as it helped us get valuable insight into
1045student and faculty experiences with the textbook. We used the feedback we
1046receive to improve and strengthen the content of <em>Dive into Systems</em>, and are
1047very thankful to everyone who completed our student and faculty surveys.</p>
1048</div>
1049<div class="paragraph">
1050<p>The following individuals piloted <em>Dive into Systems</em>
1050 as a textbook at their institutions during the 2019-2020 Academic Year:</p>
1051</div>
1052<div class="ulist">
1053<ul>
1054<li>
1055<p><a href="https://faculty.ithaca.edu/barr/">John Barr</a> (Ithaca College) - Computer Organization &amp; Assembly Language (Comp 210)</p>
1056</li>
1057<li>
1058<p><a href="https://www.drury.edu/math-and-computer-science/christopher-branton">Chris Branton</a> (Drury University) - Computer Systems Concepts (CSCI 342)</p>
1059</li>
1060<li>
1061<p><a href="https://www.stolaf.edu/profile/rab">Dick Brown</a> (St. Olaf College) - Hardware Design (CSCI 241)</p>
1062</li>
1063<li>
1064<p><a href="http://faculty.knox.edu/dbunde/">David Bunde</a> (Knox College) - Introduction to Computing Systems (CS 214)</p>
1065</li>
1066<li>
1067<p><a href="https://www.cs.drexel.edu/~bchar/">Bruce Char</a> (Drexel University) - Systems Programming (CS 283)</p>
1068</li>
1069<li>
1070<p><a href="https://sites.google.com/eng.ucsd.edu/bryan-chins-page/home">Bryan Chin</a> (U.C. San Diego) - Computer Organization and Systems Programming (CSE 30)</p>
1071</li>
1072<li>
1073<p><a href="https://www.sewanee.edu/academics/computer-science/facstaff/carl.html">Stephen Carl</a> (Sewanee: The University of the South) - Computer Systems and Organization (CSci 270)</p>
1074</li>
1075<li>
1076<p><a href="https://johnpdougherty.com/">John Dougherty</a> (Haverford College) - Computer Organization (cs240)</p>
1077</li>
1078<li>
1079<p><a href="https://jjfoley.me/">John Foley</a> (Smith College) - Operating Systems (CSC 262)</p>
1080</li>
1081<li>
1082<p><a href="https://www.xavier.edu/computer-science-department/directory/liz-johnson">Elizabeth Johnson</a> (Xavier University) - Programming in C</p>
1083</li>
1084<li>
1085<p><a href="https://www.cloviscollege.edu/directory/william-kerney.html">Bill Kerney</a> (Clovis Community College) - Assembly Programming (CSCI 45)</p>
1086</li>
1087<li>
1088<p><a href="https://computerscience.tcnj.edu/faculty-staff/faculty/dr-deborah-knox/">Deborah Knox</a> (The College of New Jersey) - Computer Architecture (CSC 325)</p>
1089</li>
1090<li>
1091<p><a href="https://western.edu/people/doug-macgregor-phd/">Doug MacGregor</a> (Western Colorado University) - Operating Systems/Architecture (CS 330)</p>
1092</li>
1093<li>
1094<p>Jeff Matocha (Ouachita Baptist University) - Computer Organization (CSCI 3093)</p>
1095</li>
1096<li>
1097<p><a href="https://cseweb.ucsd.edu/~muller/">Keith Muller</a> (U.C. San Diego) - Computer Organization and Systems Programming (CSE 30)</p>
1098</li>
1099<li>
1100<p>Crystal Peng (Park University) - Computer Architecture (CS 319)</p>
1101</li>
1102<li>
1103<p><a href="https://cseweb.ucsd.edu/~leporter/">Leo Porter</a> (U.C. San Diego) - Introduction to Computer Architecture (CSE 141)</p>
1104</li>
1105<li>
1106<p><a href="https://www.simmons.edu/academics/faculty/lauren-provost">Lauren Provost</a> (Simmons University) - Computer Architecture and Organization (CS 226)</p>
1107</li>
1108<li>
1109<p>Kathleen Riley (Bryn Mawr College) - Principles of Computer Organization (CMSC B240)</p>
1110</li>
1111<li>
1112<p><a href="http://www.highpoint.edu/engineering/rshore/">Roger Shore</a> (High Point University) - Computer Systems (CSC-2410)</p>
1113</li>
1114<li>
1115<p><a href="http://cs.wheatoncollege.edu/~ttong/">Tony Tong</a> (Wheaton College, Norton MA) - Advanced Topics in Computer Science: Parallel and Distributed Computing (COMP 398)</p>
1116</li>
1117<li>
1118<p><a href="https://www.samford.edu/arts-and-sciences/directory/Toone-Brian-R">Brian Toone</a> (Samford University) - Computer Organization and Architecture (COSC 305)</p>
1119</li>
1120<li>
1121<p><a href="https://www.centre.edu/directory/name/david-toth/">David Toth</a> (Centre College) - Systems Programming (CSC 280)</p>
1122</li>
1123<li>
1124<p><a href="https://www.davidson.edu/people/bryce-wiedenbeck">Bryce Wiedenbeck</a> (Davidson College) - Computer Organization (CSC 250)</p>
1125</li>
1126<li>
1127<p><a href="https://www.evergreen.edu/directory/people/richardweiss">Richard Weiss</a> (The Evergreen State College) - Computer Science Foundations: Computer Architecture (CSF)</p>
1128</li>
1129</ul>
1130</div>
1131</div>
1132<div class="sect2">
1133<h3 id="_current_adopters">Current Adopters</h3>
1134<div class="paragraph">
1135<p>The following institutions are currently using <em>Dive into Systems</em>. <strong>If you don&#8217;t see your institution listed, please reach out to us (<a href="mailto:[email protected]">[email protected]</a>)!</strong></p>
1136</div>
1137<div class="paragraph">
1138<p><strong>U.S. Adopters</strong></p>
1139</div>
1140<div class="imageblock">
1141<div class="content">
1142<img src="institutions.png" alt="_Dive into Systems_ adopters around the United States">
1143</div>
1144</div>
1145<table class="tableblock frame-none grid-none stretch">
1146<colgroup>
1147<col style="width: 50%;">
1148<col style="width: 50%;">
1149</colgroup>
1150<tbody>
1151<tr>
1152<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
1153<p><strong>Alabama</strong></p>
1154</div>
1155<div class="ulist">
1156<ul>
1157<li>
1158<p>Samford University</p>
1159</li>
1160<li>
1161<p>The Altamont School</p>
1162</li>
1163</ul>
1164</div>
1165<div class="paragraph">
1166<p><strong>Arkansas</strong></p>
1167</div>
1168<div class="ulist">
1169<ul>
1170<li>
1171<p>Ouachita Baptist University</p>
1172</li>
1173</ul>
1174</div>
1175<div class="paragraph">
1176<p><strong>California</strong></p>
1177</div>
1178<div class="ulist">
1179<ul>
1180<li>
1181<p>California Institute of Technology</p>
1182</li>
1183<li>
1184<p>Clovis Community College</p>
1185</li>
1186<li>
1187<p>U.C. San Diego</p>
1188</li>
1189<li>
1190<p>University of San Diego</p>
1191</li>
1192</ul>
1193</div>
1194<div class="paragraph">
1195<p><strong>Colorado</strong></p>
1196</div>
1197<div class="ulist">
1198<ul>
1199<li>
1200<p>Colorado College</p>
1201</li>
1202<li>
1203<p>Western Colorado University</p>
1204</li>
1205</ul>
1206</div>
1207<div class="paragraph">
1208<p><strong>District of Columbia</strong></p>
1209</div>
1210<div class="ulist">
1211<ul>
1212<li>
1213<p>American University</p>
1214</li>
1215</ul>
1216</div>
1217<div class="paragraph">
1218<p><strong>Delaware</strong></p>
1219</div>
1220<div class="ulist">
1221<ul>
1222<li>
1223<p>University of Delaware</p>
1224</li>
1225</ul>
1226</div>
1227<div class="paragraph">
1228<p><strong>Florida</strong></p>
1229</div>
1230<div class="ulist">
1231<ul>
1232<li>
1233<p>University of Florida</p>
1234</li>
1235</ul>
1236</div>
1237<div class="paragraph">
1238<p><strong>Illinois</strong></p>
1239</div>
1240<div class="ulist">
1241<ul>
1242<li>
1243<p>Knox College</p>
1244</li>
1245</ul>
1246</div>
1247<div class="paragraph">
1248<p><strong>Indiana</strong></p>
1249</div>
1250<div class="ulist">
1251<ul>
1252<li>
1253<p>Earlham College</p>
1254</li>
1255<li>
1256<p>Hanover College</p>
1257</li>
1258<li>
1259<p>Indiana University South Bend</p>
1260</li>
1261</ul>
1262</div>
1263<div class="paragraph">
1264<p><strong>Iowa</strong></p>
1265</div>
1266<div class="ulist">
1267<ul>
1268<li>
1269<p>Kirkwood Community College</p>
1270</li>
1271</ul>
1272</div>
1273<div class="paragraph">
1274<p><strong>Kentucky</strong></p>
1275</div>
1276<div class="ulist">
1277<ul>
1278<li>
1279<p>Centre College</p>
1280</li>
1281</ul>
1282</div>
1283<div class="paragraph">
1284<p><strong>Massachusettes</strong></p>
1285</div>
1286<div class="ulist">
1287<ul>
1288<li>
1289<p>Amherst College</p>
1290</li>
1291<li>
1292<p>
1292Northeastern University</p>
1293</li>
1294<li>
1295<p>Simmons University</p>
1296</li>
1297<li>
1298<p>Smith College</p>
1299</li>
1300<li>
1301<p>Wentworth Institute of Technology</p>
1302</li>
1303<li>
1304<p>Wheaton College</p>
1305</li>
1306<li>
1307<p>Worcester Polytechnic Institute</p>
1308</li>
1309</ul>
1310</div>
1311<div class="paragraph">
1312<p><strong>Minnesota</strong></p>
1313</div>
1314<div class="ulist">
1315<ul>
1316<li>
1317<p>Carleton College</p>
1318</li>
1319<li>
1320<p>Macalester College</p>
1321</li>
1322<li>
1323<p>St. Cloud State University</p>
1324</li>
1325<li>
1326<p>St. Olaf College</p>
1327</li>
1328</ul>
1329</div>
1330<div class="paragraph">
1331<p><strong>Missouri</strong></p>
1332</div>
1333<div class="ulist">
1334<ul>
1335<li>
1336<p>Drury University</p>
1337</li>
1338<li>
1339<p>Park University</p>
1340</li>
1341</ul>
1342</div></div></td>
1343<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
1344<p><strong>New Jersey</strong></p>
1345</div>
1346<div class="ulist">
1347<ul>
1348<li>
1349<p>The College of New Jersey</p>
1350</li>
1351</ul>
1352</div>
1353<div class="paragraph">
1354<p><strong>New York</strong></p>
1355</div>
1356<div class="ulist">
1357<ul>
1358<li>
1359<p>Barnard College</p>
1360</li>
1361<li>
1362<p>Colgate University</p>
1363</li>
1364<li>
1365<p>CUNY - College of Staten Island</p>
1366</li>
1367<li>
1368<p>CUNY - Hunter College</p>
1369</li>
1370<li>
1371<p>Hofstra University</p>
1372</li>
1373<li>
1374<p>Ithaca College</p>
1375</li>
1376<li>
1377<p>Pace University</p>
1378</li>
1379<li>
1380<p>Skidmore College</p>
1381</li>
1382<li>
1383<p>St. Lawrence University</p>
1384</li>
1385<li>
1386<p>West Point</p>
1387</li>
1388</ul>
1389</div>
1390<div class="paragraph">
1391<p><strong>North Carolina</strong></p>
1392</div>
1393<div class="ulist">
1394<ul>
1395<li>
1396<p>Davidson College</p>
1397</li>
1398<li>
1399<p>Duke University</p>
1400</li>
1401<li>
1402<p>High Point University</p>
1403</li>
1404<li>
1405<p>UNC Charlotte</p>
1406</li>
1407<li>
1408<p>Wake Forest University</p>
1409</li>
1410</ul>
1411</div>
1412<div class="paragraph">
1413<p><strong>Ohio</strong></p>
1414</div>
1415<div class="ulist">
1416<ul>
1417<li>
1418<p>Lakeland Community College</p>
1419</li>
1420<li>
1421<p>Xavier University</p>
1422</li>
1423</ul>
1424</div>
1425<div class="paragraph">
1426<p><strong>Oregon</strong></p>
1427</div>
1428<div class="ulist">
1429<ul>
1430<li>
1431<p>Lewis and Clark</p>
1432</li>
1433<li>
1434<p>Portland State University</p>
1435</li>
1436<li>
1437<p>Pactific University</p>
1438</li>
1439</ul>
1440</div>
1441<div class="paragraph">
1442<p><strong>Pennsylvania</strong></p>
1443</div>
1444<div class="ulist">
1445<ul>
1446<li>
1447<p>Bryn Mawr College</p>
1448</li>
1449<li>
1450<p>Drexel University</p>
1451</li>
1452<li>
1453<p>Haverford College</p>
1454</li>
1455<li>
1456<p>Kutztown University</p>
1457</li>
1458<li>
1459<p>Lafayette College</p>
1460</li>
1461<li>
1462<p>Lehigh University</p>
1463</li>
1464<li>
1465<p>Misericordia University</p>
1466</li>
1467<li>
1468<p>Swarthmore College</p>
1469</li>
1470<li>
1471<p>University of Pennsylvania</p>
1472</li>
1473<li>
1474<p>Widener University</p>
1475</li>
1476</ul>
1477</div>
1478<div class="paragraph">
1479<p><strong>Tennesee</strong></p>
1480</div>
1481<div class="ulist">
1482<ul>
1483<li>
1484<p>Rhodes College</p>
1485</li>
1486<li>
1487<p>Sewanee: University of the South</p>
1488</li>
1489</ul>
1490</div>
1491<div class="paragraph">
1492<p><strong>Washington</strong></p>
1493</div>
1494<div class="ulist">
1495<ul>
1496<li>
1497<p>Evergreen State College</p>
1498</li>
1499<li>
1500<p>University of Puget Sound</p>
1501</li>
1502</ul>
1503</div>
1504<div class="paragraph">
1505<p><strong>Wisconsin</strong></p>
1506</div>
1507<div class="ulist">
1508<ul>
1509<li>
1510<p>Marquette University</p>
1511</li>
1512<li>
1513<p>University of Wisconsin - Eu Claire</p>
1514</li>
1515</ul>
1516</div></div></td>
1517</tr>
1518</tbody>
1519</table>
1520<div class="paragraph">
1521<p><strong>International Adopters</strong></p>
1522</div>
1523<div class="ulist">
1524<ul>
1525<li>
1526<p>NYU Paris - Paris, France</p>
1527</li>
1528<li>
1529<p>Polish-Japanese Academy of Computer Science - Warsaw, Poland</p>
1530</li>
1531<li>
1532<p>IT University of Copenhagen - Copenhagen, Denmark</p>
1533</li>
1534</ul>
1535</div>
1536</div>
1537</div>
1538</div>
1539<div class="sect1">
1540<h2 id="people">People</h2>
1541<div class="sectionbody">
1542<div class="paragraph">
1543<p><strong>Principle Investigators</strong></p>
1544</div>
1545<div class="ulist">
1546<ul>
1547<li>
1548<p><a href="http://www.suzannejmatthews.com/">Suzanne J. Matthews</a>, West Point</p>
1549</li>
1550<li>
1551<p><a href="https://www.cs.swarthmore.edu/~newhall/">Tia Newhall</a>, Swarthmore College</p>
1552</li>
1553<li>
1554<p><a href="https://www.cs.swarthmore.edu/~kwebb/">Kevin C. Webb</a>, Swarthmore College</p>
1555</li>
1556</ul>
1557</div>
1558<div class="paragraph">
1559<p><strong>Current Students:</strong></p>
1560</div>
1561<div class="ulist">
1562<ul>
1563<li>
1564<p>Akiva Sherin, Swarthmore College</p>
1565</li>
1566<li>
1567<p>Bohou Zhang, Swarthmore College</p>
1568</li>
1569</ul>
1570</div>
1571<div class="paragraph">
1572<p><strong>Past Students:</strong></p>
1573</div>
1574<div class="ulist">
1575<ul>
1576<li>
1577<p>Jay Iyer, Swarthmore College</p>
1578</li>
1579<li>
1580<p>Zhengfei (Alex) Li, Swarthmore College</p>
1581</li>
1582<li>
1583<p>Xiaoya (Yana) Yuan, Swarthmore College</p>
1584</li>
1585<li>
1586<p>Emily Dai, Swarthmore College</p>
1587</li>
1588<li>
1589<p>Grace Kim, West Point</p>
1590</li>
1591<li>
1592<p>D&#8217;Angelo Gourdine, West Point</p>
1593</li>
1594<li>
1595<p>Dylan Green, West Point</p>
1596</li>
1597<li>
1598<p>Isabel Romea, Swarthmore College</p>
1599</li>
1600<li>
1601<p>Emma Stavis, Swarthmore College</p>
1602</li>
1603<li>
1604<p>Jasmine Fan, Swarthmore College</p>
1605</li>
1606<li>
1607<p>Khang (Tony) Cao, Swarthmore College</p>
1608</li>
1609<li>
1610<p>
1610Yue Zhang, Swarthmore College</p>
1611</li>
1612<li>
1613<p>Noor Ali, Swarthmore College</p>
1614</li>
1615<li>
1616<p>Arys Aikyn, Swarthmore College</p>
1617</li>
1618<li>
1619<p>Kuzivakwashe Mavera, Swarthmore College</p>
1620</li>
1621<li>
1622<p>Sigrid Lokensgard, Swarthmore College</p>
1623</li>
1624<li>
1625<p>Paulina Trifonova, Swarthmore College</p>
1626</li>
1627<li>
1628<p>Rezhwan Kamal, Swarthmroe College</p>
1629</li>
1630</ul>
1631</div>
1632</div>
1633</div>
1634<div class="sect1">
1635<h2 id="mailinglist">Mailing List</h2>
1636<div class="sectionbody">
1637<div class="paragraph">
1638<p>To hear announcements and updates related to the textbook, please consider joining our <a href="https://groups.google.com/forum/#!forum/dive-into-systems">low-volume mailing list</a>.</p>
1639</div>
1640</div>
1641</div>
1642<div class="sect1">
1643<h2 id="_contact_us">Contact Us</h2>
1644<div class="sectionbody">
1645<div class="paragraph">
1646<p>If you have any questions, comments or want to see your institution listed,
1647please e-mail us at <a href="mailto:[email protected]">[email protected]</a></p>
1648</div>
1649</div>
1650</div>
1651</div>
1652</body>
1653</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.