-
Notifications
You must be signed in to change notification settings - Fork 31
Expand file tree
/
Copy pathREADME.html
More file actions
543 lines (503 loc) · 47.3 KB
/
README.html
File metadata and controls
543 lines (503 loc) · 47.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
<!doctype html>
<html>
<head>
<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>
<title>README</title><link href='https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext' rel='stylesheet' type='text/css' /><style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:"Lucida Console",Consolas,"Courier",monospace; }
html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
body { margin: 0px; padding: 0px; height: auto; bottom: 0px; top: 0px; left: 0px; right: 0px; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; background: inherit; tab-size: 4; }
iframe { margin: auto; }
a.url { word-break: break-all; }
a:active, a:hover { outline: 0px; }
.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }
#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 40px; }
#write.first-line-indent p { text-indent: 2em; }
#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }
#write.first-line-indent li { margin-left: 2em; }
.for-image #write { padding-left: 8px; padding-right: 8px; }
body.typora-export { padding-left: 30px; padding-right: 30px; }
.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }
@media screen and (max-width: 500px) {
body.typora-export { padding-left: 0px; padding-right: 0px; }
#write { padding-left: 20px; padding-right: 20px; }
.CodeMirror-sizer { margin-left: 0px !important; }
.CodeMirror-gutters { display: none !important; }
}
#write li > figure:last-child { margin-bottom: 0.5rem; }
#write ol, #write ul { position: relative; }
img { max-width: 100%; vertical-align: middle; }
button, input, select, textarea { color: inherit; font: inherit; }
input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0px; }
*, ::after, ::before { box-sizing: border-box; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }
p { line-height: inherit; }
h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 4; }
p { orphans: 4; }
h1 { font-size: 2rem; }
h2 { font-size: 1.8rem; }
h3 { font-size: 1.6rem; }
h4 { font-size: 1.4rem; }
h5 { font-size: 1.2rem; }
h6 { font-size: 1rem; }
.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }
.hidden { display: none; }
.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }
a { cursor: pointer; }
sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; }
sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }
#write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit; }
figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }
figure > table { margin: 0px !important; }
tr { break-inside: avoid; break-after: auto; }
thead { display: table-header-group; }
table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }
table.md-table td { min-width: 32px; }
.CodeMirror-gutters { border-right: 0px; background-color: inherit; }
.CodeMirror-linenumber { user-select: none; }
.CodeMirror { text-align: left; }
.CodeMirror-placeholder { opacity: 0.3; }
.CodeMirror pre { padding: 0px 4px; }
.CodeMirror-lines { padding: 0px; }
div.hr:focus { cursor: none; }
#write pre { white-space: pre-wrap; }
#write.fences-no-line-wrapping pre { white-space: pre; }
#write pre.ty-contain-cm { white-space: normal; }
.CodeMirror-gutters { margin-right: 4px; }
.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; }
.md-diagram-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }
#write .md-fences.mock-cm { white-space: pre-wrap; }
.md-fences.md-fences-with-lineno { padding-left: 0px; }
#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }
.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }
.CodeMirror-line, twitterwidget { break-inside: avoid; }
.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }
.footnotes + .footnotes { margin-top: 0px; }
.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; }
li div { padding-top: 0px; }
blockquote { margin: 1rem 0px; }
li .mathjax-block, li p { margin: 0.5rem 0px; }
li { margin: 0px; position: relative; }
blockquote > :last-child { margin-bottom: 0px; }
blockquote > :first-child, li > :first-child { margin-top: 0px; }
.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }
#write .footnote-line { white-space: pre-wrap; }
@media print {
body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; font-variant-ligatures: no-common-ligatures; }
#write { margin-top: 0px; padding-top: 0px; border-color: transparent !important; }
.typora-export * { -webkit-print-color-adjust: exact; }
html.blink-to-pdf { font-size: 13px; }
.typora-export #write { padding-left: 32px; padding-right: 32px; padding-bottom: 0px; break-after: avoid; }
.typora-export #write::after { height: 0px; }
}
.footnote-line { margin-top: 0.714em; font-size: 0.7em; }
a img, img a { cursor: pointer; }
pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; }
p > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }
#write.first-line-indent p > .md-image:only-child:not(.md-img-error) img { left: -2em; position: relative; }
p > .md-image:only-child { display: inline-block; width: 100%; }
#write .MathJax_Display { margin: 0.8em 0px 0px; }
.md-math-block { width: 100%; }
.md-math-block:not(:empty)::after { display: none; }
[contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus { outline: 0px; box-shadow: none; }
.md-task-list-item { position: relative; list-style-type: none; }
.task-list-item.md-task-list-item { padding-left: 0px; }
.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }
.math { font-size: 1rem; }
.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; }
.md-toc-content { position: relative; margin-left: 0px; }
.md-toc-content::after, .md-toc::after { display: none; }
.md-toc-item { display: block; color: rgb(65, 131, 196); }
.md-toc-item a { text-decoration: none; }
.md-toc-inner:hover { text-decoration: underline; }
.md-toc-inner { display: inline-block; cursor: pointer; }
.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }
.md-toc-h2 .md-toc-inner { margin-left: 2em; }
.md-toc-h3 .md-toc-inner { margin-left: 4em; }
.md-toc-h4 .md-toc-inner { margin-left: 6em; }
.md-toc-h5 .md-toc-inner { margin-left: 8em; }
.md-toc-h6 .md-toc-inner { margin-left: 10em; }
@media screen and (max-width: 48em) {
.md-toc-h3 .md-toc-inner { margin-left: 3.5em; }
.md-toc-h4 .md-toc-inner { margin-left: 5em; }
.md-toc-h5 .md-toc-inner { margin-left: 6.5em; }
.md-toc-h6 .md-toc-inner { margin-left: 8em; }
}
a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }
.footnote-line a:not(.reversefootnote) { color: inherit; }
.md-attr { display: none; }
.md-fn-count::after { content: "."; }
code, pre, samp, tt { font-family: var(--monospace); }
kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; }
.md-comment { color: rgb(162, 127, 3); opacity: 0.8; font-family: var(--monospace); }
code { text-align: left; vertical-align: initial; }
a.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; }
.md-inline-math .MathJax_SVG .noError { display: none !important; }
.html-for-mac .inline-math-svg .MathJax_SVG { vertical-align: 0.2px; }
.md-math-block .MathJax_SVG_Display { text-align: center; margin: 0px; position: relative; text-indent: 0px; max-width: none; max-height: none; min-height: 0px; min-width: 100%; width: auto; overflow-y: hidden; display: block !important; }
.MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display { width: auto; margin: inherit; display: inline-block !important; }
.MathJax_SVG .MJX-monospace { font-family: var(--monospace); }
.MathJax_SVG .MJX-sans-serif { font-family: sans-serif; }
.MathJax_SVG { display: inline; font-style: normal; font-weight: 400; line-height: normal; zoom: 90%; text-indent: 0px; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; }
.MathJax_SVG * { transition: none 0s ease 0s; }
.MathJax_SVG_Display svg { vertical-align: middle !important; margin-bottom: 0px !important; margin-top: 0px !important; }
.os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; }
.md-diagram-panel > svg { max-width: 100%; }
[lang="flow"] svg, [lang="mermaid"] svg { max-width: 100%; height: auto; }
[lang="mermaid"] .node text { font-size: 1rem; }
table tr th { border-bottom: 0px; }
video { max-width: 100%; display: block; margin: 0px auto; }
iframe { max-width: 100%; width: 100%; border: none; }
.highlight td, .highlight tr { border: 0px; }
svg[id^="mermaidChart"] { line-height: 1em; }
mark { background: rgb(255, 255, 0); color: rgb(0, 0, 0); }
.md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; }
mark .md-meta { color: rgb(0, 0, 0); opacity: 0.3 !important; }
:root {
--side-bar-bg-color: #fafafa;
--control-text-color: #777;
}
@include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);
html {
font-size: 16px;
}
body {
font-family: "Open Sans","Clear Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
color: rgb(51, 51, 51);
line-height: 1.6;
}
#write {
max-width: 860px;
margin: 0 auto;
padding: 30px;
padding-bottom: 100px;
}
@media only screen and (min-width: 1400px) {
#write {
max-width: 1024px;
}
}
@media only screen and (min-width: 1800px) {
#write {
max-width: 1200px;
}
}
#write > ul:first-child,
#write > ol:first-child{
margin-top: 30px;
}
a {
color: #4183C4;
}
h1,
h2,
h3,
h4,
h5,
h6 {
position: relative;
margin-top: 1rem;
margin-bottom: 1rem;
font-weight: bold;
line-height: 1.4;
cursor: text;
}
h1:hover a.anchor,
h2:hover a.anchor,
h3:hover a.anchor,
h4:hover a.anchor,
h5:hover a.anchor,
h6:hover a.anchor {
text-decoration: none;
}
h1 tt,
h1 code {
font-size: inherit;
}
h2 tt,
h2 code {
font-size: inherit;
}
h3 tt,
h3 code {
font-size: inherit;
}
h4 tt,
h4 code {
font-size: inherit;
}
h5 tt,
h5 code {
font-size: inherit;
}
h6 tt,
h6 code {
font-size: inherit;
}
h1 {
padding-bottom: .3em;
font-size: 2.25em;
line-height: 1.2;
border-bottom: 1px solid #eee;
}
h2 {
padding-bottom: .3em;
font-size: 1.75em;
line-height: 1.225;
border-bottom: 1px solid #eee;
}
h3 {
font-size: 1.5em;
line-height: 1.43;
}
h4 {
font-size: 1.25em;
}
h5 {
font-size: 1em;
}
h6 {
font-size: 1em;
color: #777;
}
p,
blockquote,
ul,
ol,
dl,
table{
margin: 0.8em 0;
}
li>ol,
li>ul {
margin: 0 0;
}
hr {
height: 2px;
padding: 0;
margin: 16px 0;
background-color: #e7e7e7;
border: 0 none;
overflow: hidden;
box-sizing: content-box;
}
li p.first {
display: inline-block;
}
ul,
ol {
padding-left: 30px;
}
ul:first-child,
ol:first-child {
margin-top: 0;
}
ul:last-child,
ol:last-child {
margin-bottom: 0;
}
blockquote {
border-left: 4px solid #dfe2e5;
padding: 0 15px;
color: #777777;
}
blockquote blockquote {
padding-right: 0;
}
table {
padding: 0;
word-break: initial;
}
table tr {
border-top: 1px solid #dfe2e5;
margin: 0;
padding: 0;
}
table tr:nth-child(2n),
thead {
background-color: #f8f8f8;
}
table tr th {
font-weight: bold;
border: 1px solid #dfe2e5;
border-bottom: 0;
margin: 0;
padding: 6px 13px;
}
table tr td {
border: 1px solid #dfe2e5;
margin: 0;
padding: 6px 13px;
}
table tr th:first-child,
table tr td:first-child {
margin-top: 0;
}
table tr th:last-child,
table tr td:last-child {
margin-bottom: 0;
}
.CodeMirror-lines {
padding-left: 4px;
}
.code-tooltip {
box-shadow: 0 1px 1px 0 rgba(0,28,36,.3);
border-top: 1px solid #eef2f2;
}
.md-fences,
code,
tt {
border: 1px solid #e7eaed;
background-color: #f8f8f8;
border-radius: 3px;
padding: 0;
padding: 2px 4px 0px 4px;
font-size: 0.9em;
}
code {
background-color: #f3f4f4;
padding: 0 2px 0 2px;
}
.md-fences {
margin-bottom: 15px;
margin-top: 15px;
padding-top: 8px;
padding-bottom: 6px;
}
.md-task-list-item > input {
margin-left: -1.3em;
}
@media print {
html {
font-size: 13px;
}
table,
pre {
page-break-inside: avoid;
}
pre {
word-wrap: break-word;
}
}
.md-fences {
background-color: #f8f8f8;
}
#write pre.md-meta-block {
padding: 1rem;
font-size: 85%;
line-height: 1.45;
background-color: #f7f7f7;
border: 0;
border-radius: 3px;
color: #777777;
margin-top: 0 !important;
}
.mathjax-block>.code-tooltip {
bottom: .375rem;
}
.md-mathjax-midline {
background: #fafafa;
}
#write>h3.md-focus:before{
left: -1.5625rem;
top: .375rem;
}
#write>h4.md-focus:before{
left: -1.5625rem;
top: .285714286rem;
}
#write>h5.md-focus:before{
left: -1.5625rem;
top: .285714286rem;
}
#write>h6.md-focus:before{
left: -1.5625rem;
top: .285714286rem;
}
.md-image>.md-meta {
/*border: 1px solid #ddd;*/
border-radius: 3px;
padding: 2px 0px 0px 4px;
font-size: 0.9em;
color: inherit;
}
.md-tag {
color: #a7a7a7;
opacity: 1;
}
.md-toc {
margin-top:20px;
padding-bottom:20px;
}
.sidebar-tabs {
border-bottom: none;
}
#typora-quick-open {
border: 1px solid #ddd;
background-color: #f8f8f8;
}
#typora-quick-open-item {
background-color: #FAFAFA;
border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;
border-style: solid;
border-width: 1px;
}
/** focus mode */
.on-focus-mode blockquote {
border-left-color: rgba(85, 85, 85, 0.12);
}
header, .context-menu, .megamenu-content, footer{
font-family: "Segoe UI", "Arial", sans-serif;
}
.file-node-content:hover .file-node-icon,
.file-node-content:hover .file-node-open-state{
visibility: visible;
}
.mac-seamless-mode #typora-sidebar {
background-color: #fafafa;
background-color: var(--side-bar-bg-color);
}
.md-lang {
color: #b4654d;
}
.html-for-mac .context-menu {
--item-hover-bg-color: #E6F0FE;
}
#md-notification .btn {
border: 0;
}
.dropdown-menu .divider {
border-color: #e5e5e5;
}
.ty-preferences .window-content {
background-color: #fafafa;
}
.ty-preferences .nav-group-item.active {
color: white;
background: #999;
}
</style>
</head>
<body class='typora-export' >
<div id='write' class = 'is-node'><h1><a name="database-and-backend-developer-course" class="md-header-anchor"></a><span>Database and Backend Developer Course </span></h1><h3><a name="essentials" class="md-header-anchor"></a><span>essentials</span></h3><figure><table><thead><tr><th style='text-align:right;' ><span>#</span></th><th style='text-align:left;' ><span>resource</span></th></tr></thead><tbody><tr><td style='text-align:right;' ><span>1</span></td><td style='text-align:left;' ><a href='https://github.com/zacharski/database-course'><span>The current version of this syllabus</span></a></td></tr><tr><td style='text-align:right;' ><span>2</span></td><td style='text-align:left;' ><a href='https://youtu.be/WSYTu3fCc1Q'><span>Welcome Video</span></a></td></tr><tr><td style='text-align:right;' ><span>3</span></td><td style='text-align:left;' ><a href='https://github.com/zacharski/database-course/tree/master/jumpstart'><span>What should you do the first week</span></a></td></tr><tr><td style='text-align:right;' ><span>4</span></td><td style='text-align:left;' ><span>Instructor: Ron Zacharski </span><a href='mailto:ron.zacharski@gmail.com' target='_blank' class='url'>ron.zacharski@gmail.com</a><span>, 575.680.4041</span></td></tr><tr><td style='text-align:right;' ><span>5</span></td><td style='text-align:left;' ><a href='https://docs.google.com/spreadsheets/d/1QbIEZTDdazrk35U9Xw1dznYRI9sKKKP5dg5RaQB0G5g/edit?usp=sharing'><span>Experience Point Sheet</span></a></td></tr><tr><td style='text-align:right;' ><span>6</span></td><td style='text-align:left;' ><span>The </span><a href='https://umwdatabaseclass.slack.com/'><span>UMW Database Slack Workspace</span></a></td></tr></tbody></table></figure><p> </p><h2><a name="course-description" class="md-header-anchor"></a><span>Course Description</span></h2><p><span>This course provides an introduction to databases and backend web development. It covers Postgresql, Javascript, HTML/CSS, and Elasticsearch. </span></p><h3><a name="an-asynchronous-online-class" class="md-header-anchor"></a><span>An asynchronous online class</span></h3><p><span>This class is asynchronous meaning there is no mandatory real-time interaction. You will be working through the Inquiryum Backend Developer Fundamentals Course. You can watch the videos anytime you want. You can play them at a faster speed, you can rewatch them or pause them. You can work on the course material in 20 minute blocks throughout a day, or devote a large contiguous block of time once per week. When you need help you can use the class Slack channel to get assistance from me or your classmates. </span></p><p><span>The advantages of this approach is that it allows you great flexibility in when you want to work on the material and for how long. And, as described below under mastery learning, it allows you to work at your own pace.</span></p><h3><a name="optional-zoom-study-groups" class="md-header-anchor"></a><span>Optional Zoom Study Groups</span></h3><p><span>See the description of the study groups on the </span><a href='https://github.com/zacharski/database-course/blob/master/jumpstart/what_to_expect.md'><span>What to expect page</span></a><span>.</span></p><h3><a name="instructor-availability" class="md-header-anchor"></a><span>Instructor availability</span></h3><p><span>I will be sitting at my laptop on the </span><a href='http://umwdatabaseclass.slack.com'><span>UMW Database Slack workspace</span></a><span> on Monday through Wednesdays from 11am until 2pm ET. This means that if you message me, I will respond immediately unless I am helping another student. Excluding those times, my next level of availability is Monday through Thursday from 11am to 4pm. My average response time during that period is 15 minutes. Feel free to message me outside of those times but my response delay might be significant. Often I turn off Slack notifications at midnight. There may be times during Friday through Sunday when I don't have cell coverage and I will not be able to receive your message.</span></p><p><span>The above hours may be subject to change if other times benefit more students. These changes will be announced in the Slack channel.</span></p><p> </p><h2><a name="expected-outcomes" class="md-header-anchor"></a><span>Expected Outcomes</span></h2><h3><a name="javascript--nodejs" class="md-header-anchor"></a><span>JavaScript / Node.JS</span></h3><p><span>JavaScript, often abbreviated JS, is the core programming language of the web, running both in a user's browser and on the backend. It is a high-level, just-in-time compiled language. Node.js is a runtime environment that allows JavaScript to be executed outside of browser typically on the server side.</span></p><p><span>Students should be able to </span></p><ul><li><span>write complex command line programs in JavaScript.</span></li><li><span>write code that executes asynchronously </span></li><li><span>write a scalable, maintainable, backend server.</span></li><li><span>write code that interacts with a database server</span></li><li><span>test and evaluate code using an industry-standard test environment.</span></li></ul><h3><a name="postgresql" class="md-header-anchor"></a><span>PostgreSQL</span></h3><p><span>PostgreSQL is one of the most popular free and open-source relational database management systems, and is available on wide variety of operating systems. </span></p><p><span>Students should be able to</span></p><ul><li><span>design and implement databases based on an English description of the data.</span></li><li><span>understand database normalization and design database that meet the normalization requirements.</span></li><li><span>demonstrate a good understanding of SQL including subqueries, joins, and transactions.</span></li></ul><p> </p><h3><a name="htmlcss" class="md-header-anchor"></a><span>HTML/CSS</span></h3><p><span>HTML and CSS define the user interface of a web application. Understanding both are are of major importance to web developers.</span></p><p><span>Students should be able to</span></p><ul><li><span>Read and write HTML and CSS</span></li><li><span>Utilize semantic tags to provide clear structure to HTML</span></li><li><span>Manage the layout of a complex web page using CSS</span></li></ul><p> </p><h2><a name="tasks-and-projects" class="md-header-anchor"></a><span>Tasks and Projects</span></h2><p><span>The majority of effort in the course is in working on tasks and project, which have different levels of expected knowledge and independence.</span></p><p> </p><h3><a name="tasks" class="md-header-anchor"></a><span>Tasks</span></h3><ul><li><p><span>Closely mirror the examples shown in the course videos.</span></p></li><li><p><span>The majority of the code is provided to you.</span></p></li><li><p><span>Where appropriate, test code is also provided enabling you to get instant feedback.</span></p></li><li><p><span>You are to:</span></p><ul><li><span>write a small amount of code to complete the task</span></li><li><span>evaluate what you have done by running the tests</span></li></ul></li></ul><p><span>Tasks are evaluated on a four tier system.</span></p><ul><li><strong><span>tier 1</span></strong><span> the task code works and all code is 100% correct. The code is formatted correctly (indentation follows programming standards, comments when needed, no debugging print statements remain, no old code lines commented.) - (100% xp)</span></li><li><strong><span>tier 2</span></strong><span> the task code works and all code is 100% correct. However, the code is not formatted correctly -(65-75% xp)</span></li><li><strong><span>tier 3</span></strong><span> most of the task code works. However, there are coding errors or missing functions. - (25-50% xp)</span></li><li><strong><span>tier 4</span></strong><span> the code mostly does not work or was not submitted. - (0% xp)</span></li></ul><p><span>For example, if a task is worth 20 points, you might get 20 for tier 1, 15 for tier 2, 7 for tier 3, and zero for tier 4. </span></p><p><strong><span>You can submit up to two tasks per week.</span></strong></p><h3><a name="projects" class="md-header-anchor"></a><span>Projects</span></h3><ul><li><p><span>Follow examples shown in the course videos.</span></p></li><li><p><span>Build off of concepts and skills you learned completing prerequisite tasks.</span></p></li><li><p><span>Project definition provides either</span></p><ul><li><span>an API specification and test file</span></li><li><span>a video showing an example of a completed project</span></li></ul></li><li><p><span>You are to </span></p><ul><li><span>design and create the database to support the project</span></li><li><span>write the Javascript code to implement the specification</span></li><li><span>test and evaluate you code.</span></li><li><span>move you code to a production environment.</span></li></ul></li></ul><p><span>Projects are evaluated as to whether the code works or not (passes the necessary tests). If it does not you will fix your code and resubmit. You can submit as many times as necessary to pass the tests. The test set that is used to evaluate your code may be larger than that given to you to aid you in development. For some projects there are optional parts for which you will get additional points.</span></p><p><span>You must complete the prerequisite tasks before starting a project and you cannot submit more than 2 projects per week.</span></p><p> </p><h2><a name="core-competency-task" class="md-header-anchor"></a><span>Core Competency Task</span></h2><p><span>Often when you are applying for a job, you are given a timed programming task. The core competency task is designed to help you prepare for this. The tasks involves writing a backend for a web service in JavaScript and PostgreSQL. You can take the test at any time (after you meet the prerequisites), but once you start you will have four hours to complete it. By </span><em><span>any time</span></em><span> I mean that you can decide to take it at 1 in the afternoon on a particular Tuesday, or 1am on a Sunday morning.</span></p><p> </p><h2><a name="mastery-learning" class="md-header-anchor"></a><span>Mastery Learning</span></h2><p><span>Traditional classes are time-based learning. You spend a specific amount of time on a topic and then you move on to the next topic. For example, in a traditional programming course you might cover </span><em><span>while</span></em><span> and </span><em><span>for</span></em><span> loops in week 5, take a quiz on them, and then move on to ArrayLists in week 6. Suppose you got a 75% on that quiz in week 5. That means that you did not learn 25% of the material. Then perhaps in week 10 you take a test on inheritance and get an 80% (you did not master 20% of the material). These gaps in your mastery start adding up, and eventually, in either in some future class or on the job, you hit a wall because your current task requires that you are skilled in areas that you failed to master. </span></p><p><span>This class doesn't work like that.</span></p><p><span>In contrast to time-based learning, in mastery Learning you stay on the topic until you master it. You work at your own pace. This online class is based on this approach. You stay on a topic until you master it. The lectures are a set of videos (mostly screencasts) that you can watch at anytime. If the material is easy for you, you can speed up the videos and watch them at 1.5 speed. If you find the material challenging, you can rewatch the videos, google for more information, interact with other learners on the Slack channel, or request a private Zoom conference with the instructor. </span></p><p><span>Obviously, the work-at-your-own pace approach will collide with the end of the semester and there will be some material that you will not cover. The course is designed so that the essential core information is presented first, to enable you to develop solid foundational skills with no gaps. </span></p><p> </p><h3><a name="mastery-learning-difficulties" class="md-header-anchor"></a><span>Mastery Learning Difficulties</span></h3><p><span>This course is work at your own pace. Other courses you might be taking have fixed deadlines, So, for example, you might have a gnarly project for a programming class due this week and a big operating systems project due next week. It is likely that you will work on those projects since they have immediate deadlines and ignore working on this course. It is human nature. To give you some flexibility but to help you stay focused, there will be both recommended and hard deadlines for each project. For example, one project has a recommended deadline of the fourth week of class and a hard deadline of the eighth week. </span></p><p><span>By </span><strong><span>hard deadline</span></strong><span> I mean that any work received after the deadline will not receive any xp. </span></p><p><span> By </span><strong><span>recommended deadline</span></strong><span> I mean a suggested deadline that is designed to help you get an A in the course and equally distribute the work throughout the semester.</span></p><p><strong><span>There is nothing to prevent you from doing all the course work in 12 weeks, get an A, and spend the remainder of the semester focused on your other classes.</span></strong></p><h3><a name="the-design-of-hard-and-soft-deadlines" class="md-header-anchor"></a><span>The design of hard and soft deadlines</span></h3><p><span>If you work at a pace set by the hard deadlines you will pass the course with a D. In a sense, the hard deadlines are provided as a safety net to have people stay on track to pass the course.</span></p><p><span>If you work at a pace set by the soft deadlines you will get an A in the class.</span></p><h2><a name="the-course-material" class="md-header-anchor"></a><span>The course material</span></h2><figure><table><thead><tr><th style='text-align:right;' ><span>Order</span></th><th style='text-align:left;' ><span>Lesson</span></th></tr></thead><tbody><tr><td style='text-align:right;' ><span>1</span></td><td style='text-align:left;' ><a href='jumpstart'><span>JumpStart</span></a></td></tr><tr><td style='text-align:right;' ><span>2</span></td><td style='text-align:left;' ><a href='tasks'><span>Tasks</span></a></td></tr><tr><td style='text-align:right;' ><span>3</span></td><td style='text-align:left;' ><a href='rudiments'><span>Projects</span></a></td></tr></tbody></table></figure><p> </p><p> </p><p><span>Again, the class is work-at-your-own pace, but we provide a suggested schedule below.</span></p><p> </p><h2><a name="week-by-week" class="md-header-anchor"></a><span>Week-by-Week </span></h2><figure><table><thead><tr><th style='text-align:right;' ><span>Week</span></th><th style='text-align:left;' ><span>Date</span></th><th style='text-align:left;' ><span>Unit</span></th><th style='text-align:left;' ><span>Topics</span></th></tr></thead><tbody><tr><td style='text-align:right;' ><span>1</span></td><td style='text-align:left;' ><span>25 Jan</span></td><td style='text-align:left;' ><span>Intro</span></td><td style='text-align:left;' ><span>Intro, MVC, RESTful, Gitlab lab</span></td></tr><tr><td style='text-align:right;' ><span>2</span></td><td style='text-align:left;' ><span>1 Feb</span></td><td style='text-align:left;' ><span>SQL</span></td><td style='text-align:left;' ><span>creating and inserting data into a databas. Update, alter, delete</span></td></tr><tr><td style='text-align:right;' ><span>3</span></td><td style='text-align:left;' ><span>8 Feb</span></td><td style='text-align:left;' ><span>Javascript</span></td><td style='text-align:left;' ><span>Intro to Javascript</span></td></tr><tr><td style='text-align:right;' ><span>4</span></td><td style='text-align:left;' ><span>15 Feb</span></td><td style='text-align:left;' ><span>JavaScript</span></td><td style='text-align:left;' ><span>NodeJS, using PostgreSQL with Node</span></td></tr><tr><td style='text-align:right;' ><span>5</span></td><td style='text-align:left;' ><span>22 Feb</span></td><td style='text-align:left;' ><span>Deplayment</span></td><td style='text-align:left;' ><span>Google Cloud, Nginx reverse proxy</span></td></tr><tr><td style='text-align:right;' ><span>6</span></td><td style='text-align:left;' ><span>1 Mar</span></td><td style='text-align:left;' ><span>SQL</span></td><td style='text-align:left;' ><span>3NF, joins</span></td></tr><tr><td style='text-align:right;' ><span>7</span></td><td style='text-align:left;' ><span>8 Mar</span></td><td style='text-align:left;' ><span>SQL</span></td><td style='text-align:left;' ><span>transactions</span></td></tr><tr><td style='text-align:right;' ><span>8</span></td><td style='text-align:left;' ><span>15 Mar</span></td><td style='text-align:left;' ><span>Javascript</span></td><td style='text-align:left;' ><span>Intro to React and Nextjs</span></td></tr><tr><td style='text-align:right;' ><span>9</span></td><td style='text-align:left;' ><span>22 Mar</span></td><td style='text-align:left;' ><span>JavaScript</span></td><td style='text-align:left;' ><span>Full Stack Web Development</span></td></tr><tr><td style='text-align:right;' ><span>10</span></td><td style='text-align:left;' ><span>29 Mar</span></td><td style='text-align:left;' ><span>JavaScript</span></td><td style='text-align:left;' ><span>cookies</span></td></tr><tr><td style='text-align:right;' ><span>11</span></td><td style='text-align:left;' ><span>5 Apr</span></td><td style='text-align:left;' ><span>JavaScript</span></td><td style='text-align:left;' ><span>-</span></td></tr><tr><td style='text-align:right;' ><span>12</span></td><td style='text-align:left;' ><span>12 Apr</span></td><td style='text-align:left;' ><span>ElasticSearch</span></td><td style='text-align:left;' ><span>noSQL, Elastic Search</span></td></tr><tr><td style='text-align:right;' ><span>13</span></td><td style='text-align:left;' ><span>19 Apr</span></td><td style='text-align:left;' ><span>Projects</span></td><td style='text-align:left;' ><span>-</span></td></tr><tr><td style='text-align:right;' ><span>14</span></td><td style='text-align:left;' ><span>26 Apr</span></td><td style='text-align:left;' ><span>Projects</span></td><td style='text-align:left;' ><span>-</span></td></tr></tbody></table></figure><h3><a name="deadlines-hard-and-soft" class="md-header-anchor"></a><span>Deadlines hard and soft</span></h3><p><span>Meeting the hard deadlines should put you around a C for the course. To be considered to be on time for a hard deadline, the code must be submitted </span><strong><span>before</span></strong><span> the date indicated.</span></p><figure><table><thead><tr><th style='text-align:left;' ><span>Project</span></th><th style='text-align:center;' ><span>Recommended Deadline</span></th><th style='text-align:center;' ><span>Hard Deadline</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>1 Workshop v1</span></td><td style='text-align:center;' ><span>27 Feb</span></td><td style='text-align:center;' ><span>13 Mar</span></td></tr><tr><td style='text-align:left;' ><span>2 Workshop v2</span></td><td style='text-align:center;' ><span>6 Mar</span></td><td style='text-align:center;' ><span>27 Mar</span></td></tr><tr><td style='text-align:left;' ><span>3 NextJS</span></td><td style='text-align:center;' ><span>20 Mar</span></td><td style='text-align:center;' ><span>16 Apr</span></td></tr><tr><td style='text-align:left;' ><span>4 Complete Web App</span></td><td style='text-align:center;' ><span>27 Mar</span></td><td style='text-align:center;' ><span>30 Apr</span></td></tr><tr><td style='text-align:left;' ><span>5 SuperSearch</span></td><td style='text-align:center;' ><span>10 Apr</span></td><td style='text-align:center;' ><span>-</span></td></tr><tr><td style='text-align:left;' ><span>6 ElasticSearch</span></td><td style='text-align:center;' ><span>30 Apr</span></td><td style='text-align:center;' ><span>-</span></td></tr></tbody></table></figure><p> </p><h2><a name="required-materials" class="md-header-anchor"></a><strong><span>Required materials</span></strong></h2><p><strong><span>Google Cloud Account (or equivalent)</span></strong></p><p><strong><span>Laptop</span></strong></p><p><a href='http://inquiryum.com/'><span>Inquiryum’s Backend Developer Fundamentals course </span></a></p><p> </p><h2><a name="slack" class="md-header-anchor"></a><span>Slack </span></h2><p><span>Slack is a work chat application that many tech companies use. We are going to be using Slack in a number of ways. If you have a particular programming question you can ask it in a general channel and hopefully you will get an answer or suggestion quickly from either myself or fellow learners. </span></p><p> </p><p><a href='https://join.slack.com/t/umwdatabaseclass/shared_invite/zt-k29hsocn-UTDcbu8hYxHvKpHspHAuKA'><span>Sign up for Slack here</span></a><span>.</span></p><h2><a name="okay-but-how-do-i-pass" class="md-header-anchor"></a><span>Okay but how do I pass?</span></h2><p><span>Grading is based on a method developed by Professor Lee Sheldon at Indiana University. It is based on obtaining experience points (XP). The number of XP determines what level you are at. You start the class at Level Zero and with 0 XP. The level you obtain at the end of the semester determines your final grade. Here is the chart:</span></p><figure><table><thead><tr><th style='text-align:center;' ><span>Level</span></th><th style='text-align:center;' ><span>XP</span></th><th style='text-align:center;' ><span>Grade</span></th></tr></thead><tbody><tr><td style='text-align:center;' ><span>Zero</span></td><td style='text-align:center;' ><span>0</span></td><td style='text-align:center;' ><span>F</span></td></tr><tr><td style='text-align:center;' ><span>One</span></td><td style='text-align:center;' ><span>240</span></td><td style='text-align:center;' ><span>D</span></td></tr><tr><td style='text-align:center;' ><span>Two</span></td><td style='text-align:center;' ><span>340</span></td><td style='text-align:center;' ><span>D+</span></td></tr><tr><td style='text-align:center;' ><span>Three</span></td><td style='text-align:center;' ><span>450</span></td><td style='text-align:center;' ><span>C-</span></td></tr><tr><td style='text-align:center;' ><span>Four</span></td><td style='text-align:center;' ><span>550</span></td><td style='text-align:center;' ><span>C</span></td></tr><tr><td style='text-align:center;' ><span>Five</span></td><td style='text-align:center;' ><span>650</span></td><td style='text-align:center;' ><span>C+</span></td></tr><tr><td style='text-align:center;' ><span>Six</span></td><td style='text-align:center;' ><span>750</span></td><td style='text-align:center;' ><span>B-</span></td></tr><tr><td style='text-align:center;' ><span>Seven</span></td><td style='text-align:center;' ><span>850</span></td><td style='text-align:center;' ><span>B</span></td></tr><tr><td style='text-align:center;' ><span>Eight</span></td><td style='text-align:center;' ><span>925</span></td><td style='text-align:center;' ><span>B+</span></td></tr><tr><td style='text-align:center;' ><span>Nine</span></td><td style='text-align:center;' ><span>1000</span></td><td style='text-align:center;' ><span>A-</span></td></tr><tr><td style='text-align:center;' ><span>Ten</span></td><td style='text-align:center;' ><span>1100</span></td><td style='text-align:center;' ><span>A</span></td></tr></tbody></table></figure><p><span>Here are the ways of earning XP:</span></p><ul><li><p><span>there will be at least 10 tasks. On average each will be worth 22xp</span></p></li><li><p><span>there are 6 PostgreSQL projects. On average, each is worth 125xp</span></p></li><li><p><span>there is an ElasticSearch project worth 150xp</span></p></li><li><p><span>the core competency programming challenge is worth 150xp</span></p><p> </p></li></ul><h2><a name="honor-code-policy" class="md-header-anchor"></a><span>Honor Code Policy</span></h2><p><a href='https://cas.umw.edu/computerscience/cpsc-department-honor-code-policy/'><span>Computer Science Department Honor Code Policy</span></a></p><p><span>The amendments to the Computer Science Department policy are as follows (the numbers related to the numbers in the policy):</span></p><ol start='' ><li><span>In the initial comment block of any submitted assignment, type </span><em><span>I hereby swear upon my word of honor that I have neither given nor received unauthorized aid on this work</span></em><span> followed by your name.</span></li><li><span>I am more flexible than the policy "you are </span><em><span>not</span></em><span> to communicate to others in any way about your assignment." My rule of thumb is What would a responsible adult do on the job? If you have a deadline on the job at a startup and didn't know how to do something, the responsible thing wouldn't be to sit at your workstation just getting more and more frustrated and depressed and missing the deadline. The responsible person would get whatever help was necessary to complete the task. On the other hand, a responsible person wouldn't let someone else do all the work and present it as his own. That would be a violation of this policy. (See the Slack section of the syllabus)</span></li><li><span>Regarding " Remember that </span><em><span>giving</span></em><span> unauthorized help violates the Honor Code just as much as </span><em><span>receiving</span></em><span> unauthorized help does." Again, I refer to the 'responsible adult' mentioned above. I would like people to help each other but yet do the work to learn the material. Sharing a complete assignment violates this point, but helping a person debug a function is fine.</span></li><li><span>Sadly, this contradicts what you want to do in your professional life. In your professional life, you want to post solutions to things you figured out as a way of helping people in the community. In fact, we are going to be using some material people posted in this class. However, to prevent plagiarism, you will only post your material to a private github repository. Sorry.</span></li><li><span>You should acknowledge the people that helped you in writing in your submission. For example, "Ann Mulkern helped me with the code to divide the dataset into training and testing sets"</span></li><li><span>All the rest of the conditions of the computer science policy hold as is.</span></li></ol><h3><a name="avatar-names-pseudonyms-noms-de-plume" class="md-header-anchor"></a><span>Avatar names, pseudonyms, noms de plume</span></h3><p><span>During the first week of class you will need to fill out the </span><a href='https://forms.gle/zg8A7GwdrxGLuNhE8'><span>Avatar Form</span></a><span> for your avatar name, pseudonym, whatever. This is the name that will appear on the Experience Point Google Spreadsheet that will be viewable by everyone in the class. If you wish to remain anonymous, don’t share your avatar name with anyone. To further protect the anonymity of those who wish to remain anonymous, the spreadsheet will also be populated by fictitious avatar names.</span></p><p> </p><p> </p><h2><a name="accessibility-statement" class="md-header-anchor"></a><strong><span>Accessibility Statement</span></strong></h2><p><span>The Office of Disability Resources has been designated by the college as the primary office to guide, counsel, and assist students with disabilities. If you receive services through the Office of Disability Resources and require accommodations for this class, make an appointment with me as soon as possible to discuss your approved accommodation needs. Bring your accommodation letter, along with a copy of our class syllabus with you to the appointment. I will hold any information you share with me in strictest confidence unless you give me permission to do otherwise.</span></p><p><span>If you have not made contact with the Office of Disability Resources and have reasonable accommodation needs, (note taking assistance, extended time for tests, etc.), I will be happy to refer you. The office will require appropriate documentation of disability</span></p><p> </p><h2><a name="title-ix-statement" class="md-header-anchor"></a><span>Title IX Statement</span></h2><p><span>University of Mary Washington faculty are committed to supporting students and upholding the University’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence. Under Title IX and this Policy, discrimination based upon sex or gender is prohibited. If you experience an incident of sex or gender based discrimination, we encourage you to report it. While you may talk to me, understand that as a “Responsible Employee” of the University, I MUST report to UMW’s Title IX Coordinator what you share. If you wish to speak to someone confidentially, please contact the below confidential resources. They can connect you with support services and help you explore your options. You may also seek assistance from UMW’s Title IX Coordinator. Please visit </span><a href='http://diversity.umw.edu/title-ix/' target='_blank' class='url'>http://diversity.umw.edu/title-ix/</a><span> to view UMW’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence and to find further information on support and resources.</span></p><h4><a name="resources" class="md-header-anchor"></a><span>Resources</span></h4><p><span>Tiffany W. Oldfield, J.D.</span>
<span>Title IX Coordinator</span>
<span>Office of Title IX</span>
<span>Fairfax House</span>
<span>540-654-5656</span>
<a href='mailto:toldfiel@umw.edu' target='_blank' class='url'>toldfiel@umw.edu</a></p><p><span>Myranda Thomson</span>
<span>Title IX Deputy for Students</span>
<span>Area Coordinator</span>
<span>540-654-1184</span>
<a href='mailto:mthomson@umw.edu' target='_blank' class='url'>mthomson@umw.edu</a></p><h4><a name="confidential-resources" class="md-header-anchor"></a><span>Confidential Resources</span></h4><p><em><span>On Campus</span></em></p><p><span>Talley Center for Counseling Services</span>
<span>Lee Hall 106</span></p><p><span>Student Health Center</span>
<span>Lee Hall 112</span></p><p><em><span>Off-Campus</span></em></p><p><span>Empowerhouse</span>
<span>540-373-9373</span></p><p><span>RCASA</span>
<span>540-371-1666</span></p><h2><a name="recording-policy" class="md-header-anchor"></a><span>Recording Policy</span></h2><p><span>Classroom material in this course may be copied by students enrolled in the course for the</span>
<span>personal, educational use of that student or for all students presently enrolled in the class only,</span>
<span>and may not be further copied, distributed, published or otherwise used for any other purpose</span>
<span>without the express written consent of the course instructor. Distribution or sale of class</span>
<span>material is prohibited without the written permission of the instructor and other students who</span>
<span>are recorded. Distribution without permission is a violation of copyright law. This policy is</span>
<span>consistent with </span><a href='https://www.boarddocs.com/va/umw/Board.nsf/goto?open&id=ATZSXG724B54'><span>UMW’s Policy on Recording Class and Distribution of Course Materials.</span></a>
<span>Academic Integrity</span></p></div>
</body>
</html>