-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathintroduction.html
1377 lines (1271 loc) · 63.5 KB
/
introduction.html
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
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en"><head>
<script src="quarto_files/clipboard/clipboard.min.js"></script>
<script src="quarto_files/quarto-html/tabby.min.js"></script>
<script src="quarto_files/quarto-html/popper.min.js"></script>
<script src="quarto_files/quarto-html/tippy.umd.min.js"></script>
<link href="quarto_files/quarto-html/tippy.css" rel="stylesheet">
<link href="quarto_files/quarto-html/light-border.css" rel="stylesheet">
<link href="quarto_files/quarto-html/quarto-html.min.css" rel="stylesheet" data-mode="light">
<link href="quarto_files/quarto-html/quarto-syntax-highlighting-dark.css" rel="stylesheet" id="quarto-text-highlighting-styles"><meta charset="utf-8">
<meta name="generator" content="quarto-1.5.56">
<title>Introduction</title>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="quarto_files/revealjs/dist/reset.css">
<link rel="stylesheet" href="quarto_files/revealjs/dist/reveal.css">
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<link rel="stylesheet" href="quarto_files/revealjs/dist/theme/quarto.css">
<link rel="stylesheet" href="ccc.css">
<link href="quarto_files/revealjs/plugin/quarto-line-highlight/line-highlight.css" rel="stylesheet">
<link href="quarto_files/revealjs/plugin/reveal-menu/menu.css" rel="stylesheet">
<link href="quarto_files/revealjs/plugin/reveal-menu/quarto-menu.css" rel="stylesheet">
<link href="quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/css/all.css" rel="stylesheet">
<link href="quarto_files/revealjs/plugin/reveal-chalkboard/style.css" rel="stylesheet">
<link href="quarto_files/revealjs/plugin/quarto-support/footer.css" rel="stylesheet">
<style type="text/css">
.callout {
margin-top: 1em;
margin-bottom: 1em;
border-radius: .25rem;
}
.callout.callout-style-simple {
padding: 0em 0.5em;
border-left: solid #acacac .3rem;
border-right: solid 1px silver;
border-top: solid 1px silver;
border-bottom: solid 1px silver;
display: flex;
}
.callout.callout-style-default {
border-left: solid #acacac .3rem;
border-right: solid 1px silver;
border-top: solid 1px silver;
border-bottom: solid 1px silver;
}
.callout .callout-body-container {
flex-grow: 1;
}
.callout.callout-style-simple .callout-body {
font-size: 1rem;
font-weight: 400;
}
.callout.callout-style-default .callout-body {
font-size: 0.9rem;
font-weight: 400;
}
.callout.callout-titled.callout-style-simple .callout-body {
margin-top: 0.2em;
}
.callout:not(.callout-titled) .callout-body {
display: flex;
}
.callout:not(.no-icon).callout-titled.callout-style-simple .callout-content {
padding-left: 1.6em;
}
.callout.callout-titled .callout-header {
padding-top: 0.2em;
margin-bottom: -0.2em;
}
.callout.callout-titled .callout-title p {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.callout.callout-titled.callout-style-simple .callout-content p {
margin-top: 0;
}
.callout.callout-titled.callout-style-default .callout-content p {
margin-top: 0.7em;
}
.callout.callout-style-simple div.callout-title {
border-bottom: none;
font-size: .9rem;
font-weight: 600;
opacity: 75%;
}
.callout.callout-style-default div.callout-title {
border-bottom: none;
font-weight: 600;
opacity: 85%;
font-size: 0.9rem;
padding-left: 0.5em;
padding-right: 0.5em;
}
.callout.callout-style-default div.callout-content {
padding-left: 0.5em;
padding-right: 0.5em;
}
.callout.callout-style-simple .callout-icon::before {
height: 1rem;
width: 1rem;
display: inline-block;
content: "";
background-repeat: no-repeat;
background-size: 1rem 1rem;
}
.callout.callout-style-default .callout-icon::before {
height: 0.9rem;
width: 0.9rem;
display: inline-block;
content: "";
background-repeat: no-repeat;
background-size: 0.9rem 0.9rem;
}
.callout-title {
display: flex
}
.callout-icon::before {
margin-top: 1rem;
padding-right: .5rem;
}
.callout.no-icon::before {
display: none !important;
}
.callout.callout-titled .callout-body > .callout-content > :last-child {
padding-bottom: 0.5rem;
margin-bottom: 0;
}
.callout.callout-titled .callout-icon::before {
margin-top: .5rem;
padding-right: .5rem;
}
.callout:not(.callout-titled) .callout-icon::before {
margin-top: 1rem;
padding-right: .5rem;
}
/* Callout Types */
div.callout-note {
border-left-color: #4582ec !important;
}
div.callout-note .callout-icon::before {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAEU0lEQVRYCcVXTWhcVRQ+586kSUMMxkyaElstCto2SIhitS5Ek8xUKV2poatCcVHtUlFQk8mbaaziwpWgglJwVaquitBOfhQXFlqlzSJpFSpIYyXNjBNiTCck7x2/8/LeNDOZxDuEkgOXe++553zfefee+/OYLOXFk3+1LLrRdiO81yNqZ6K9cG0P3MeFaMIQjXssE8Z1JzLO9ls20MBZX7oG8w9GxB0goaPrW5aNMp1yOZIa7Wv6o2ykpLtmAPs/vrG14Z+6d4jpbSKuhdcSyq9wGMPXjonwmESXrriLzFGOdDBLB8Y6MNYBu0dRokSygMA/mrun8MGFN3behm6VVAwg4WR3i6FvYK1T7MHo9BK7ydH+1uurECoouk5MPRyVSBrBHMYwVobG2aOXM07sWrn5qgB60rc6mcwIDJtQrnrEr44kmy+UO9r0u9O5/YbkS9juQckLed3DyW2XV/qWBBB3ptvI8EUY3I9p/67OW+g967TNr3Sotn3IuVlfMLVnsBwH4fsnebJvyGm5GeIUA3jljERmrv49SizPYuq+z7c2H/jlGC+Ghhupn/hcapqmcudB9jwJ/3jvnvu6vu5lVzF1fXyZuZZ7U8nRmVzytvT+H3kilYvH09mLWrQdwFSsFEsxFVs5fK7A0g8gMZjbif4ACpKbjv7gNGaD8bUrlk8x+KRflttr22JEMRUbTUwwDQScyzPgedQHZT0xnx7ujw2jfVfExwYHwOsDTjLdJ2ebmeQIlJ7neo41s/DrsL3kl+W2lWvAga0tR3zueGr6GL78M3ifH0rGXrBC2aAR8uYcIA5gwV8zIE8onoh8u0Fca/ciF7j1uOzEnqcIm59sEXoGc0+z6+H45V1CvAvHcD7THztu669cnp+L0okAeIc6zjbM/24LgGM1gZk7jnRu1aQWoU9sfUOuhrmtaPIO3YY1KLLWZaEO5TKUbMY5zx8W9UJ6elpLwKXbsaZ4EFl7B4bMtDv0iRipKoDQT2sNQI9b1utXFdYisi+wzZ/ri/1m7QfDgEuvgUUEIJPq3DhX/5DWNqIXDOweC2wvIR90Oq3lDpdMIgD2r0dXvGdsEW5H6x6HLRJYU7C69VefO1x8Gde1ZFSJLfWS1jbCnhtOPxmpfv2LXOA2Xk2tvnwKKPFuZ/oRmwBwqRQDcKNeVQkYcOjtWVBuM/JuYw5b6isojIkYxyYAFn5K7ZBF10fea52y8QltAg6jnMqNHFBmGkQ1j+U43HMi2xMar1Nv0zGsf1s8nUsmUtPOOrbFIR8bHFDMB5zL13Gmr/kGlCkUzedTzzmzsaJXhYawnA3UmARpiYj5ooJZiUoxFRtK3X6pgNPv+IZVPcnwbOl6f+aBaO1CNvPW9n9LmCp01nuSaTRF2YxHqZ8DYQT6WsXT+RD6eUztwYLZ8rM+rcPxamv1VQzFUkzFXvkiVrySGQgJNvXHJAxiU3/NwiC03rSf05VBaPtu/Z7/B8Yn/w7eguloAAAAAElFTkSuQmCC');
}
div.callout-note.callout-style-default .callout-title {
background-color: #dae6fb
}
div.callout-important {
border-left-color: #d9534f !important;
}
div.callout-important .callout-icon::before {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAEKklEQVRYCcVXTWhcVRS+575MJym48A+hSRFr00ySRQhURRfd2HYjk2SSTokuBCkU2o0LoSKKraKIBTcuFCoidGFD08nkBzdREbpQ1EDNIv8qSGMFUboImMSZd4/f9zJv8ibJMC8xJQfO3HPPPef7zrvvvnvviIkpC9nsw0UttFunbUhpFzFtarSd6WJkStVMw5xyVqYTvkwfzuf/5FgtkVoB0729j1rjXwThS7Vio+Mo6DNnvLfahoZ+i/o32lULuJ3NNiz7q6+pyAUkJaFF6JwaM2lUJlV0MlnQn5aTRbEu0SEqHUa0A4AdiGuB1kFXRfVyg5d87+Dg4DL6m2TLAub60ilj7A1Ec4odSAc8X95sHh7+ZRPCFo6Fnp7HfU/fBng/hi10CjCnWnJjsxvDNxWw0NfV6Rv5GgP3I3jGWXumdTD/3cbEOP2ZbOZp69yniG3FQ9z1jD7bnBu9Fc2tKGC2q+uAJOQHBDRiZX1x36o7fWBs7J9ownbtO+n0/qWkvW7UPIfc37WgT6ZGR++EOJyeQDSb9UB+DZ1G6DdLDzyS+b/kBCYGsYgJbSQHuThGKRcw5xdeQf8YdNHsc6ePXrlSYMBuSIAFTGAtQo+VuALo4BX83N190NWZWbynBjhOHsmNfFWLeL6v+ynsA58zDvvAC8j5PkbOcXCMg2PZFk3q8MjI7WAG/Dp9AwP7jdGBOOQkAvlFUB+irtm16I1Zw9YBcpGTGXYmk3kQIC/Cds55l+iMI3jqhjAuaoe+am2Jw5GT3Nbz3CkE12NavmzN5+erJW7046n/CH1RO/RVa8lBLozXk9uqykkGAyRXLWlLv5jyp4RFsG5vGVzpDLnIjTWgnRy2Rr+tDKvRc7Y8AyZq10jj8DqXdnIRNtFZb+t/ZRtXcDiVnzpqx8mPcDWxgARUqx0W1QB9MeUZiNrV4qP+Ehc+BpNgATsTX8ozYKL2NtFYAHc84fG7ndxUPr+AR/iQSns7uSUufAymwDOb2+NjK27lEFocm/EE2WpyIy/Hi66MWuMKJn8RvxIcj87IM5Vh9663ziW36kR0HNenXuxmfaD8JC7tfKbrhFr7LiZCrMjrzTeGx+PmkosrkNzW94ObzwocJ7A1HokLolY+AvkTiD/q1H0cN48c5EL8Crkttsa/AXQVDmutfyku0E7jShx49XqV3MFK8IryDhYVbj7Sj2P2eBxwcXoe8T8idsKKPRcnZw1b+slFTubwUwhktrfnAt7J++jwQtLZcm3sr9LQrjRzz6cfMv9aLvgmnAGvpoaGLxM4mAEaLV7iAzQ3oU0IvD5x9ix3yF2RAAuYAOO2f7PEFWCXZ4C9Pb2UsgDeVnFSpbFK7/IWu7TPTvBqzbGdCHOJQSxiEjt6IyZmxQyEJHv6xyQsYk//moVFsN2zP6fRImjfq7/n/wFDguUQFNEwugAAAABJRU5ErkJggg==');
}
div.callout-important.callout-style-default .callout-title {
background-color: #f7dddc
}
div.callout-warning {
border-left-color: #f0ad4e !important;
}
div.callout-warning .callout-icon::before {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAETklEQVRYCeVWW2gcVRg+58yaTUnizqbipZeX4uWhBEniBaoUX1Ioze52t7sRq6APio9V9MEaoWlVsFasRq0gltaAPuxms8lu0gcviE/FFOstVbSIxgcv6SU7EZqmdc7v9+9mJtNks51NTUH84ed889/PP+cmxP+d5FIbMJmNbpREu4WUkiTtCicKny0l1pIKmBzovF2S+hIJHX8iEu3hZJ5lNZGqyRrGSIQpq15AzF28jgpeY6yk6GVdrfFqdrD6Iw+QlB8g0YS2g7dyQmXM/IDhBhT0UCiRf59lfqmmDvzRt6kByV/m4JjtzuaujMUM2c5Z2d6JdKrRb3K2q6mA+oYVz8JnDdKPmmNthzkAk/lN63sYPgevrguc72aZX/L9C6x09GYyxBgCX4NlvyGUHOKELlm5rXeR1kchuChJt4SSwyddZRXgvwMGvYo4QSlk3/zkHD8UHxwVJA6zjZZqP8v8kK8OWLnIZtLyCAJagYC4rTGW/9Pqj92N/c+LUaAj27movwbi19tk/whRCIE7Q9vyI6yvRpftAKVTdUjOW40X3h5OXsKCdmFcx0xlLJoSuQngnrJe7Kcjm4OMq9FlC7CMmScQANuNvjfP3PjGXDBaUQmbp296S5L4DrpbrHN1T87ZVEZVCzg1FF0Ft+dKrlLukI+/c9ENo+TvlTDbYFvuKPtQ9+l052rXrgKoWkDAFnvh0wTOmYn8R5f4k/jN/fZiCM1tQx9jQQ4ANhqG4hiL0qIFTGViG9DKB7GYzgubnpofgYRwO+DFjh0Zin2m4b/97EDkXkc+f6xYAPX0KK2I/7fUQuwzuwo/L3AkcjugPNixC8cHf0FyPjWlItmLxWw4Ou9YsQCr5fijMGoD/zpdRy95HRysyXA74MWOnscpO4j2y3HAVisw85hX5+AFBRSHt4ShfLFkIMXTqyKFc46xdzQM6XbAi702a7sy04J0+feReMFKp5q9esYLCqAZYw/k14E/xcLLsFElaornTuJB0svMuJINy8xkIYuL+xPAlWRceH6+HX7THJ0djLUom46zREu7tTkxwmf/FdOZ/sh6Q8qvEAiHpm4PJ4a/doJe0gH1t+aHRgCzOvBvJedEK5OFE5jpm4AGP2a8Dxe3gGJ/pAutug9Gp6he92CsSsWBaEcxGx0FHytmIpuqGkOpldqNYQK8cSoXvd+xLxXADw0kf6UkJNFtdo5MOgaLjiQOQHcn+A6h5NuL2s0qsC2LOM75PcF3yr5STuBSAcGG+meA14K/CI21HcS4LBT6tv0QAh8Dr5l93AhZzG5ZJ4VxAqdZUEl9z7WJ4aN+svMvwHHL21UKTd1mqvChH7/Za5xzXBBKrUcB0TQ+Ulgkfbi/H/YT5EptrGzsEK7tR1B7ln9BBwckYfMiuSqklSznIuoIIOM42MQO+QnduCoFCI0bpkzjCjddHPN/F+2Yu+sd9bKNpVwHhbS3LluK/0zgfwD0xYI5dXuzlQAAAABJRU5ErkJggg==');
}
div.callout-warning.callout-style-default .callout-title {
background-color: #fcefdc
}
div.callout-tip {
border-left-color: #02b875 !important;
}
div.callout-tip .callout-icon::before {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAADr0lEQVRYCe1XTWgTQRj9ZjZV8a9SPIkKgj8I1bMHsUWrqYLVg4Ue6v9BwZOxSYsIerFao7UiUryIqJcqgtpimhbBXoSCVxUFe9CTiogUrUp2Pt+3aUI2u5vdNh4dmMzOzHvvezuz8xNFM0mjnbXaNu1MvFWRXkXEyE6aYOYJpdW4IXuA4r0fo8qqSMDBU0v1HJUgVieAXxzCsdE/YJTdFcVIZQNMyhruOMJKXYFoLfIfIvVIMWdsrd+Rpd86ZmyzzjJmLStqRn0v8lzkb4rVIXvnpScOJuAn2ACC65FkPzEdEy4TPWRLJ2h7z4cArXzzaOdKlbOvKKX25Wl00jSnrwVxAg3o4dRxhO13RBSdNvH0xSARv3adTXbBdTf64IWO2vH0LT+cv4GR1DJt+DUItaQogeBX/chhbTBxEiZ6gftlDNXTrvT7co4ub5A6gp9HIcHvzTa46OS5fBeP87Qm0fQkr4FsYgVQ7Qg+ZayaDg9jhg1GkWj8RG6lkeSacrrHgDaxdoBiZPg+NXV/KifMuB6//JmYH4CntVEHy/keA6x4h4CU5oFy8GzrBS18cLJMXcljAKB6INjWsRcuZBWVaS3GDrqB7rdapVIeA+isQ57Eev9eCqzqOa81CY05VLd6SamW2wA2H3SiTbnbSxmzfp7WtKZkqy4mdyAlGx7ennghYf8voqp9cLSgKdqNfa6RdRsAAkPwRuJZNbpByn+RrJi1RXTwdi8RQF6ymDwGMAtZ6TVE+4uoKh+MYkcLsT0Hk8eAienbiGdjJHZTpmNjlbFJNKDVAp2fJlYju6IreQxQ08UJDNYdoLSl6AadO+fFuCQqVMB1NJwPm69T04Wv5WhfcWyfXQB+wXRs1pt+nCknRa0LVzSA/2B+a9+zQJadb7IyyV24YAxKp2Jqs3emZTuNnKxsah+uabKbMk7CbTgJx/zIgQYErIeTKRQ9yD9wxVof5YolPHqaWo7TD6tJlh7jQnK5z2n3+fGdggIOx2kaa2YI9QWarc5Ce1ipNWMKeSG4DysFF52KBmTNMmn5HqCFkwy34rDg05gDwgH3bBi+sgFhN/e8QvRn8kbamCOhgrZ9GJhFDgfcMHzFb6BAtjKpFhzTjwv1KCVuxHvCbsSiEz4CANnj84cwHdFXAbAOJ4LTSAawGWFn5tDhLMYz6nWeU2wJfIhmIJBefcd/A5FWQWGgrWzyORZ3Q6HuV+Jf0Bj+BTX69fm1zWgK7By1YTXchFDORywnfQ7GpzOo6S+qECrsx2ifVQAAAABJRU5ErkJggg==');
}
div.callout-tip.callout-style-default .callout-title {
background-color: #ccf1e3
}
div.callout-caution {
border-left-color: #fd7e14 !important;
}
div.callout-caution .callout-icon::before {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAACV0lEQVRYCdVWzWoUQRCuqp2ICBLJXgITZL1EfQDBW/bkzUMUD7klD+ATSHBEfAIfQO+iXsWDxJsHL96EHAwhgzlkg8nBg25XWb0zIb0zs9muYYWkoKeru+vn664fBqElyZNuyh167NXJ8Ut8McjbmEraKHkd7uAnAFku+VWdb3reSmRV8PKSLfZ0Gjn3a6Xlcq9YGb6tADjn+lUfTXtVmaZ1KwBIvFI11rRXlWlatwIAAv2asaa9mlB9wwygiDX26qaw1yYPzFXg2N1GgG0FMF8Oj+VIx7E/03lHx8UhvYyNZLN7BwSPgekXXLribw7w5/c8EF+DBK5idvDVYtEEwMeYefjjLAdEyQ3M9nfOkgnPTEkYU+sxMq0BxNR6jExrAI31H1rzvLEfRIdgcv1XEdj6QTQAS2wtstEALLG1yEZ3QhH6oDX7ExBSFEkFINXH98NTrme5IOaaA7kIfiu2L8A3qhH9zRbukdCqdsA98TdElyeMe5BI8Rs2xHRIsoTSSVFfCFCWGPn9XHb4cdobRIWABNf0add9jakDjQJpJ1bTXOJXnnRXHRf+dNL1ZV1MBRCXhMbaHqGI1JkKIL7+i8uffuP6wVQAzO7+qVEbF6NbS0LJureYcWXUUhH66nLR5rYmva+2tjRFtojkM2aD76HEGAD3tPtKM309FJg5j/K682ywcWJ3PASCcycH/22u+Bh7Aa0ehM2Fu4z0SAE81HF9RkB21c5bEn4Dzw+/qNOyXr3DCTQDMBOdhi4nAgiFDGCinIa2owCEChUwD8qzd03PG+qdW/4fDzjUMcE1ZpIAAAAASUVORK5CYII=');
}
div.callout-caution.callout-style-default .callout-title {
background-color: #ffe5d0
}
</style>
<style type="text/css">
.reveal div.sourceCode {
margin: 0;
overflow: auto;
}
.reveal div.hanging-indent {
margin-left: 1em;
text-indent: -1em;
}
.reveal .slide:not(.center) {
height: 100%;
}
.reveal .slide.scrollable {
overflow-y: auto;
}
.reveal .footnotes {
height: 100%;
overflow-y: auto;
}
.reveal .slide .absolute {
position: absolute;
display: block;
}
.reveal .footnotes ol {
counter-reset: ol;
list-style-type: none;
margin-left: 0;
}
.reveal .footnotes ol li:before {
counter-increment: ol;
content: counter(ol) ". ";
}
.reveal .footnotes ol li > p:first-child {
display: inline-block;
}
.reveal .slide ul,
.reveal .slide ol {
margin-bottom: 0.5em;
}
.reveal .slide ul li,
.reveal .slide ol li {
margin-top: 0.4em;
margin-bottom: 0.2em;
}
.reveal .slide ul[role="tablist"] li {
margin-bottom: 0;
}
.reveal .slide ul li > *:first-child,
.reveal .slide ol li > *:first-child {
margin-block-start: 0;
}
.reveal .slide ul li > *:last-child,
.reveal .slide ol li > *:last-child {
margin-block-end: 0;
}
.reveal .slide .columns:nth-child(3) {
margin-block-start: 0.8em;
}
.reveal blockquote {
box-shadow: none;
}
.reveal .tippy-content>* {
margin-top: 0.2em;
margin-bottom: 0.7em;
}
.reveal .tippy-content>*:last-child {
margin-bottom: 0.2em;
}
.reveal .slide > img.stretch.quarto-figure-center,
.reveal .slide > img.r-stretch.quarto-figure-center {
display: block;
margin-left: auto;
margin-right: auto;
}
.reveal .slide > img.stretch.quarto-figure-left,
.reveal .slide > img.r-stretch.quarto-figure-left {
display: block;
margin-left: 0;
margin-right: auto;
}
.reveal .slide > img.stretch.quarto-figure-right,
.reveal .slide > img.r-stretch.quarto-figure-right {
display: block;
margin-left: auto;
margin-right: 0;
}
</style>
</head>
<body class="quarto-dark">
<div class="reveal">
<div class="slides">
<section id="title-slide" class="quarto-title-block center">
<p class="titlep"> </p>
<div class="orangetitle">
<h1 class="title" style="color:white !important">CS 4970</h1>
<h2 class="subtitle" style="color:white !important">Cryptocurrency</h2>
<h2 class="subtitle" style="color:white !important">Introduction</h2>
</div>
<p class="titlep"> </p>
<p class="titlep"> </p>
<div class="titlesmall"><p>
<a href="https://www.cs.virginia.edu/~asb">Aaron Bloomfield</a> ([email protected])<br>
<a href="https://github.com/aaronbloomfield/ccc">@github</a> | <a href="index.html">↑</a> | <a href="?print-pdf"><img class="print" width="20" src="images/print-icon.svg" style="top:0px;vertical-align:middle;background-color:transparent;display:inline;width:30px;height:30px"></a>
</p></div>
<p class="titlep"> </p>
</section><section id="TOC">
<nav role="doc-toc">
<h2 id="toc-title">Contents</h2>
<ul>
<li><a href="#/motivation" id="/toc-motivation">Motivation</a></li>
<li><a href="#/course-structure-and-logistics" id="/toc-course-structure-and-logistics">Course Structure and Logistics</a></li>
<li><a href="#/honor-policy" id="/toc-honor-policy">Honor Policy</a></li>
<li><a href="#/legal-issues" id="/toc-legal-issues">Legal Issues</a></li>
</ul>
</nav>
</section>
<section>
<section id="motivation" class="title-slide slide level1 center">
<h1>Motivation</h1>
<div class="cclogosubtitle">
<p><img data-src="images/logos/btc-coin-symbol.svg"> <img data-src="images/logos/eth-coin-symbol.svg"></p>
</div>
</section>
<section id="if-you-bought-bitcoin" class="slide level2">
<h2>If you bought Bitcoin…</h2>
<div class="right-float-img nopad">
<p><img data-src="images/overview/bitcoin-coin.webp"></p>
</div>
<ul>
<li>…in 2010 for $0.25 per BTC
<ul>
<li>Let’s say you spent $100</li>
<li>You would have owned 400 BTC</li>
</ul></li>
<li>That would be worth $37 million today!
<ul>
<li>(assuming <a href="https://coinmarketcap.com/currencies/bitcoin/">a price of $94k per BTC</a>)</li>
</ul></li>
<li>That amount of growth is not likely to ever happen again…</li>
</ul>
</section>
<section id="this-course-will-not-make-you-rich" class="slide level2">
<h2>This course will not make you rich</h2>
<ul>
<li>It does not teach you about investing in cryptocurrency</li>
<li>Instead, it will focus on the technical aspects of cryptocurrency</li>
<li>Two rock-solid investing tips:
<ol type="1">
<li>Go back in time to 10 years ago and buy a <em>lot</em> of Bitcoin</li>
<li>Be VERY wary of anything cryptocurrency related, as it’s <a href="https://web3isgoinggreat.com/">full of scams</a></li>
</ol></li>
</ul>
</section>
<section id="coins-studied" class="slide level2">
<h2>Coins Studied</h2>
<ul>
<li>This course will primarily focus on the technical aspects of two coins / networkss:
<ul>
<li><a href="https://coinmarketcap.com/currencies/bitcoin/"><img src="images/logos/btc-coin-symbol.svg" style="display:inline-block;float:left;margin-right:20px;width:100px"></a> Bitcoin (BTC, ₿): the first real viable cryptocurrency and the most valuable; ASIC mineable <br clear="all"></li>
<li><a href="https://coinmarketcap.com/currencies/ethereum/"><img src="images/logos/eth-coin-symbol.svg" style="display:inline-block;float:left;margin-right:30px;width:100px"></a> Ethereum (ETH, Ξ): has significant improvements over Bitcoin with much more functionality; no longer ASIC mineable <br clear="all"></li>
</ul></li>
<li>We’ll also see a bunch more, but in lesser detail…</li>
</ul>
<aside data-markdown="" class="notes">
ASIC = application-specific integrated circuit
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="all-the-coins-well-discuss" class="slide level2">
<h2>All the coins we’ll discuss</h2>
<p><a href="https://coinmarketcap.com/currencies/algorand/"><img data-src="images/logos/algo-coin-symbol.svg#cclogomed" alt="algo logo"></a> <a href="https://coinmarketcap.com/currencies/cosmos/"><img data-src="images/logos/atom-coin-symbol.svg#cclogomed" alt="atom logo"></a> <a href="https://coinmarketcap.com/currencies/anchorust/"><img data-src="images/logos/aust-coin-symbol.svg#cclogomed" alt="aust logo"></a> <a href="https://coinmarketcap.com/currencies/beam/"><img data-src="images/logos/beam-coin-symbol.svg#cclogomed" alt="beam logo"></a> <a href="https://coinmarketcap.com/currencies/bitcoin/"><img data-src="images/logos/btc-coin-symbol.svg#cclogomed" alt="btc logo"></a> <a href="https://coinmarketcap.com/currencies/bitcoin-gold/"><img data-src="images/logos/btg-coin-symbol.svg#cclogomed" alt="btg logo"></a> <a href="https://coinmarketcap.com/currencies/multi-collateral-dai/"><img data-src="images/logos/dai-coin-symbol.svg#cclogomed" alt="dai logo"></a> <a href="https://coinmarketcap.com/currencies/polkadot-new/"><img data-src="images/logos/dot-coin-symbol.svg#cclogomed" alt="dot logo"></a> <a href="https://coinmarketcap.com/currencies/ergo/"><img data-src="images/logos/erg-coin-symbol.svg#cclogomed" alt="erg logo"></a> <a href="https://coinmarketcap.com/currencies/ethereum-classic/"><img data-src="images/logos/etc-coin-symbol.svg#cclogomed" alt="etc logo"></a> <a href="https://coinmarketcap.com/currencies/ethereum/"><img data-src="images/logos/eth-coin-symbol.svg#cclogomed" alt="eth logo"></a> <a href="https://coinmarketcap.com/currencies/fei-usd/"><img data-src="images/logos/fei-coin-symbol.svg#cclogomed" alt="fei logo"></a> <a href="https://coinmarketcap.com/currencies/filecoin/"><img data-src="images/logos/fil-coin-symbol.svg#cclogomed" alt="fil logo"></a> <a href="https://coinmarketcap.com/currencies/firo/"><img data-src="images/logos/firo-coin-symbol.svg#cclogomed" alt="firo logo"></a> <a href="https://coinmarketcap.com/currencies/frax/"><img data-src="images/logos/frax-coin-symbol.svg#cclogomed" alt="frax logo"></a> <a href="https://coinmarketcap.com/currencies/juno/"><img data-src="images/logos/juno-coin-symbol.svg#cclogomed" alt="juno logo"></a> <a href="https://coinmarketcap.com/currencies/terra-luna/"><img data-src="images/logos/lunac-coin-symbol.svg#cclogomed" alt="luna logo"></a> <a href="https://coinmarketcap.com/currencies/polygon/"><img data-src="images/logos/matic-coin-symbol.svg#cclogomed" alt="matic logo"></a> <a href="https://coinmarketcap.com/currencies/magic-internet-money/"><img data-src="images/logos/mim-coin-symbol.svg#cclogomed" alt="mim logo"></a> <a href="https://coinmarketcap.com/currencies/maker/"><img data-src="images/logos/mkr-coin-symbol.svg#cclogomed" alt="mkr logo"></a> <a href="https://coinmarketcap.com/currencies/neoxa/"><img data-src="images/logos/neox-coin-symbol.svg#cclogomed" alt="neox logo"></a> <a href="https://coinmarketcap.com/currencies/namecoin/"><img data-src="images/logos/nmc-coin-symbol.svg#cclogomed" alt="nmc logo"></a> <a href="https://coinmarketcap.com/currencies/peercoin/"><img data-src="images/logos/ppc-coin-symbol.svg#cclogomed" alt="ppc logo"></a> <a href="https://coinmarketcap.com/currencies/ravencoin/"><img data-src="images/logos/rvn-coin-symbol.svg#cclogomed" alt="rvn logo"></a> <a href="https://coinmarketcap.com/currencies/single-collateral-dai/"><img data-src="images/logos/sai-coin-symbol.svg#cclogomed" alt="sai logo"></a> <a href="https://coinmarketcap.com/currencies/shiba-inu/"><img data-src="images/logos/shib-coin-symbol.svg#cclogomed" alt="shib logo"></a> <a href="https://coinmarketcap.com/currencies/solana/"><img data-src="images/logos/sol-coin-symbol.svg#cclogomed" alt="sol logo"></a> <a href="https://coinmarketcap.com/currencies/spell-token/"><img data-src="images/logos/spell-coin-symbol.svg#cclogomed" alt="spell logo"></a> <a href="https://coinmarketcap.com/currencies/storj/"><img data-src="images/logos/storj-coin-symbol.svg#cclogomed" alt="storj logo"></a> <a href="https://coinmarketcap.com/currencies/tomb/"><img data-src="images/logos/tomb-coin-symbol.svg#cclogomed" alt="tomb logo"></a> <a href="https://coinmarketcap.com/currencies/tribe/"><img data-src="images/logos/tribe-coin-symbol.svg#cclogomed" alt="tribe logo"></a> <a href="https://coinmarketcap.com/currencies/usd-coin/"><img data-src="images/logos/usdc-coin-symbol.svg#cclogomed" alt="usdc logo"></a> <a href="https://coinmarketcap.com/currencies/tether/"><img data-src="images/logos/usdt-coin-symbol.svg#cclogomed" alt="usdt logo"></a> <a href="https://coinmarketcap.com/currencies/terrausd/"><img data-src="images/logos/ustc-coin-symbol.svg#cclogomed" alt="ustc logo"></a> <a href="https://coinmarketcap.com/currencies/wrapped-bitcoin/"><img data-src="images/logos/wbtc-coin-symbol.svg#cclogomed" alt="wbtc logo"></a> <a href="https://coinmarketcap.com/currencies/weth/"><img data-src="images/logos/weth-coin-symbol.svg#cclogomed" alt="weth logo"></a> <a href="https://coinmarketcap.com/currencies/stellar/"><img data-src="images/logos/xlm-coin-symbol.svg#cclogomed" alt="xlm logo"></a> <a href="https://coinmarketcap.com/currencies/petrodollar/"><img data-src="images/logos/xpd-coin-symbol.svg#cclogomed" alt="xpd logo"></a> <a href="https://coinmarketcap.com/currencies/primecoin/"><img data-src="images/logos/xpm-coin-symbol.svg#cclogomed" alt="xpm logo"></a> <a href="https://coinmarketcap.com/currencies/zcash/"><img data-src="images/logos/zec-coin-symbol.svg#cclogomed" alt="zec logo"></a></p>
</section>
<section id="cryptocurrency-market-cap" class="slide level2">
<h2>Cryptocurrency Market Cap</h2>
<img src="images/timely/cc-market-cap.webp" class="stretch" style="padding:0"><p>From <a href="https://coinmarketcap.com/charts/">https://coinmarketcap.com/charts/</a></p>
<!--
## CC Market Cap w/o BTC
<img src="images/timely/cc-market-cap-no-btc.svg" class="stretch" style="padding:0">
From [https://coinmarketcap.com/charts/](https://coinmarketcap.com/charts/)
-->
</section>
<section id="bitcoin-dominance" class="slide level2">
<h2>Bitcoin dominance</h2>
<img src="images/timely/btc-dominance.webp" class="stretch" style="padding:0"><p>From <a href="https://coinmarketcap.com/charts/">https://coinmarketcap.com/charts/</a></p>
<!-- ============================================================ -->
</section></section>
<section>
<section id="course-structure-and-logistics" class="title-slide slide level1 center">
<h1>Course Structure and Logistics</h1>
</section>
<section id="instructional-staff" class="slide level2">
<h2>Instructional Staff</h2>
<img src="images/introduction/aaronbloomfield.jpg" style="padding:0;margin:auto;height:35vh">
<p style="text-align:center">
Aaron Bloomfield
</p>
<p style="text-align:center">
Rice Hall, room 402<br>[email protected]
</p>
</section>
<section id="course-tas" class="slide level2">
<h2>Course TAs</h2>
<div class="center">
<p><img src="https://andromeda.cs.virginia.edu/ccc/tas/wcb8ze.jpg" style="display:inline;height:28vh"> <img src="https://andromeda.cs.virginia.edu/ccc/tas/jja3em.jpg" style="display:inline;height:28vh"> <img src="https://andromeda.cs.virginia.edu/ccc/tas/hse2dq.jpg" style="display:inline;height:28vh"> <img src="https://andromeda.cs.virginia.edu/ccc/tas/jhu7uc.jpg" style="display:inline;height:28vh"></p>
</div>
<p>William, Youssef, Abby, and Jonah</p>
</section>
<section id="course-resources" class="slide level2">
<h2>Course resources</h2>
<ul>
<li>Contained in the <a href="https://canvas.its.virginia.edu/">Canvas</a> workspace: landing page of links, Piazza, Gradescope, lecture videos, files download
<ul>
<li>And a link to the course email address</li>
</ul></li>
<li>External course materials
<ul>
<li>Most of the course materials can be found online at <br> <a href="https://aaronbloomfield.github.io/ccc">https://aaronbloomfield.github.io/ccc</a></li>
<li>Or via the github repo at <br> <a href="https://github.com/aaronbloomfield/ccc">https://github.com/aaronbloomfield/ccc</a></li>
</ul></li>
</ul>
</section>
<section id="contacting-us" class="slide level2">
<h2>Contacting Us</h2>
<ul>
<li>Feel free to chat with me right after any class
<ul>
<li><del>Although I teach another class right after this, so it will have to be quick</del></li>
</ul></li>
<li>Please email the course email rather than emailing me
<ul>
<li>Linked to from the Canvas landing page</li>
</ul></li>
<li>Office hours will start next week</li>
<li>Anonymous feedback through Canvas</li>
</ul>
</section>
<section id="contacting-you" class="slide level2">
<h2>Contacting You</h2>
<ul>
<li>The <a href="../uva/daily-announcements.html">daily announcements slide set</a>
<ul>
<li>If you miss lecture, you are responsible for checking it!</li>
</ul></li>
<li>Anything else that is “urgent” will be posted to Piazza as an instructor note</li>
<li>VERY few notifications (possibly none!) will be sent out as a course email
<ul>
<li>How to do this is non-intuitive in Canvas</li>
</ul></li>
<li>Thus, you have to check two places for updates: the <a href="../uva/daily-announcements.html">daily announcements slide set</a> and Piazza
<ul>
<li>But if you log into Piazza via Canvas, then that one action will check two of them</li>
</ul></li>
</ul>
</section>
<section id="meetings" class="slide level2">
<h2>Meetings</h2>
<ul>
<li>Lectures: Tu/Th 11:00-12:15 in Thornton A120</li>
<li>Lectures are required
<ul>
<li>There will be surprise pop quizzes and/or attendance taking in lecture</li>
</ul></li>
<li>If you have to miss a lecture, there (will be) a Google form for you to fill out
<ul>
<li>Linked to from the Canvas landing page</li>
<li>Please don’t email me or the course email that you are going to miss a lecture!</li>
<li>These generally have to be in before class starts
<ul>
<li>Reasonable exceptions for unexpected circumstances and emergencies, of course</li>
</ul></li>
</ul></li>
</ul>
</section>
<section id="expectations" class="slide level2">
<h2>Expectations</h2>
<ul>
<li>Prerequisites: CS 2150 (PDR) or CS 3100 (DSA2), with a grade of C- or higher
<ul>
<li>This is a strict pre-req!</li>
<li>Reason: you need three semesters of collegiate-level programming courses</li>
<li>Another programming class, that requires CS 2100 as it’s pre-req, is likely acceptable
<ul>
<li>Chat with me after class</li>
</ul></li>
</ul></li>
</ul>
</section>
<section id="homeworks" class="slide level2">
<h2>Homeworks</h2>
<ul>
<li>There will be a combination of:
<ul>
<li>Larger programming homeworks (about a dozen): the ‘P’ homeworks</li>
<li>Smaller (‘S’) homeworks, such as tutorials and readings (currently about half a dozen; more may be added)</li>
</ul></li>
<li>Often one of each may be assigned at any given time
<ul>
<li>But their due dates will be staggered</li>
</ul></li>
<li>There will also be random in-class quizzes on the readings; if you are absent that day, you get a zero
<ul>
<li>Unless it’s an emergency, you can only be excused if you fill out the excuse form BEFORE lecture with a valid reason</li>
</ul></li>
</ul>
</section>
<section id="homeworks-1" class="slide level2">
<h2>Homeworks</h2>
<ul>
<li>You can see them all on the <a href="../hws/index.html">homeworks page</a></li>
<li>Please don’t start them early!
<ul>
<li>They are all going to have changes made, including some fairly significant changes</li>
<li>I’ll have them ready a week or so before they are due</li>
<li>And I will clearly announce when that happens
<ul>
<li>Either in the daily announcements or on Piazza</li>
</ul></li>
</ul></li>
</ul>
</section>
<section id="hw-submission-gradescope" class="slide level2">
<h2>HW submission: Gradescope</h2>
<ul>
<li>We will be using <a href="https://gradescope.com">Gradescope</a></li>
<li>All assignments will be <strong><em>autograded</em></strong></li>
<li>The specifications and <em>some</em> test cases will be included in the homework descriptions
<ul>
<li>Gradescope will use the same <em>type</em> of tests, but with different data</li>
<li>You may submit as many (reasonable!) times to Gradescope as you want before the deadline passes</li>
</ul></li>
<li>Gradescope submissions will open 3 days (72 hours) before the due date/time</li>
</ul>
</section>
<section id="hw-submission-smart-contracts" class="slide level2">
<h2>HW Submission: smart contracts</h2>
<ul>
<li>Starting with homework P5, you will have to deploy your code to a private Ethereum blockchain in addition to the Gradescope submission
<ul>
<li>You can deploy as many times as you would like</li>
</ul></li>
<li>There will be a bunch of other oddball submission requirements</li>
<li>To ensure you submit everything you should, you will have to submit a Python file as well
<ul>
<li>We’ll provide the template, such as <a href="../hws/gradebook/gradebook.py.html">this one</a>; you just have to fill in the values</li>
</ul></li>
</ul>
</section>
<section id="piazza" class="slide level2">
<h2>Piazza</h2>
<ul>
<li>We all know <a href="https://piazza.com">Piazza</a>
<ul>
<li>If the e-mail settings default to “send annoying emails all the time”, you can easily change this</li>
<li>In Piazza, in the upper-right, click on the gear/settings icon, select “Account/Email Settings”, and then select “Edit Email Notifications” under “Class & Email Settings”</li>
</ul></li>
<li>Rules
<ul>
<li>Don’t post any code on it, period (that’s an honor violation!)</li>
<li>Note that you can post anonymously to each other, but the course instructional staff will know who you are</li>
<li>If you start trolling other students on Piazza, I will permanently ban you from it
<ul>
<li>Please be respectful of your fellow students in the course!</li>
</ul></li>
</ul></li>
</ul>
</section>
<section id="development-environment" class="slide level2">
<h2>Development environment</h2>
<ul>
<li>You will have to have a (working and recent) notebook computer for this course
<ul>
<li>Don’t have one? Speak to me, and the dept can loan you one</li>
</ul></li>
<li>You can use any development environment you want (Windows, Mac, Linux; IDEs are okay also)</li>
<li>You will have to use a free development environment that we will provide info on
<ul>
<li>Either the <a href="https://remix.ethereum.org/">Remix IDE</a> or the <a href="https://archive.trufflesuite.com">Truffle Suite</a> or <a href="https://hardhat.org">Hardhat</a></li>
</ul></li>
</ul>
</section>
<section id="nothing-to-buy" class="slide level2">
<h2>Nothing to buy!</h2>
<ul>
<li>Textbooks: Nope! Too expensive and too much of a scam</li>
<li>Cryptocurrency: also nope; not required for this course
<ul>
<li>If you want to buy it on your own, please wait until we discuss the legal and tax implications before doing so</li>
</ul></li>
</ul>
</section>
<section id="course-syllabus" class="slide level2">
<h2>Course syllabus</h2>
<ul>
<li>It is available in the github repo
<ul>
<li>Click <a href="../uva/syllabus.html">here</a> to view it</li>
</ul></li>
<li>It contains all the information covered so far, plus some more information</li>
</ul>
</section>
<section id="grades" class="slide level2">
<h2>Grades</h2>
<ul>
<li>Grades are computed by:
<ul>
<li>10% class participation (in-class quizzes)</li>
<li>45% homeworks</li>
<li>20% midterm: Thursday, February 27th, in class</li>
<li>25% final exam: Friday, May 9th, from 9am - noon</li>
</ul></li>
</ul>
</section>
<section id="learning-your-names" class="slide level2">
<h2>Learning your names…</h2>
<p>I am determined to learn each of your (first) names<br>
<br>
So if you raise your hand in lecture, and I don’t call on you by name, you have to say your first name before your question<br>
<br>
Don’t be offended if it takes me a while – there are 80 students in this course (and 200+ in my other course)…</p>
</section>
<section id="course-goals" class="slide level2">
<h2>Course Goals</h2>
<ul>
<li>Understand the theoretical aspects of cryptocurrency</li>
<li>Understand the basics of blockchain in general, and the details of a selected number of blockchains</li>
<li>Understand the uses of cryptocurrency and blockchain beyond that as a form of money</li>
<li>Understand the policy, ethical, legal, and tax implications of cryptocurrency</li>
<li>Be able to develop programs for a specific Blockchain</li>
<li>Implement a fully working modern cryptocurrency</li>
</ul>
</section>
<section id="lecture-topics" class="slide level2">
<h2>Lecture topics</h2>
<p>You can see the slides on the <a href="index.html">lecture slides page</a></p>
<table class="transparent">
<tbody><tr>
<td>
<ul>
<li>Course Introduction</li>
<li>Cryptocurrency overview</li>
<li>Encryption</li>
<li>Bitcoin</li>
<li>Mining</li>
<li>Ethereum</li>
<li>Solidity</li>
<li>Tokens</li>
<li>Consensus</li>
</ul>
</td>
<td>
<ul>
<li>Blockchain Applications</li>
<li>Stablecoins</li>
<li>zkSNARKs</li>
<li>Scalability</li>
<li>Algorand</li>
<li>Ethics, Legality, and Policy</li>
<li>The Dark Side of Cryptocurrency</li>
<li>Course Conclusion</li>
</ul>
</td>
</tr>
</tbody></table>
</section>
<section id="initial-assignments" class="slide level2">
<h2>Initial assignments</h2>
<ul>
<li>HW S1: Introductory Survey is an online Google survey
<ul>
<li>Link on the Canvas landing page</li>
<li>Due next Tuesday (by midnight)</li>
</ul></li>
<li>Soon (but not ready yet!): start on <a href="../hws/intro/index.html">HW P1: Introduction</a>
<ul>
<li>You may want to wait until the <a href="overview.html#/">Cryptocurrency Overview</a> slide set is discussed first</li>
<li>This is (essentially) the same as what was assigned in my sections of CS 3710: ICS
<ul>
<li>So you can use <em>your</em> code from that course, if you did it in that course</li>
<li>But there are a couple of tweaks to the program and output format</li>
</ul></li>
<li>Due the Tuesday, January 21st (the second week of the semester)</li>
</ul></li>
</ul>
</section>
<section id="late-policy" class="slide level2">
<h2>Late Policy</h2>
<ul>
<li>There are expected to be 13 assignments this semester (12 P assignments, and 2 S assignments)
<ul>
<li>The other few S assignments are readings and surveys</li>
</ul></li>
<li>Standard late penalty: 25% off per day (or fraction thereof)</li>
<li>You may submit 6 of them up to 4 days late with no penalty
<ul>
<li>You have to fill out a form <em>before</em> the due date for this; it will be on the Canvas landing page</li>
</ul></li>
<li>After using your 6 free passes, the late penalty applies</li>
<li>This covers <em>ALL</em> circumstances: sick, busy, travel, dog ate your homework, family emergencies, etc.
<ul>
<li>And, generally, SDAC accommodations</li>
</ul></li>
</ul>
</section>
<section id="late-policy-rules" class="slide level2">
<h2>Late Policy Rules</h2>
<ul>
<li>There is no penalty for using all of them</li>
<li>There is no bonus for not using some of them</li>
<li>You have to submit the request (via the Google form) <em>BEFORE</em> the due date/time</li>
<li>If you use them all early, and an emergency comes up, then you do not get any more extensions</li>
<li>You can only use one per assignment</li>
<li>After 4 free days, the standard late penalty applies</li>
</ul>
</section>
<section id="programming-homeworks" class="slide level2">
<h2>Programming Homeworks</h2>
<div class="font-85">
<ul>
<li>Introduction & Bitcoin assignments:
<ul>
<li>HW P1: Overview</li>
<li>HW P2: ECDSA</li>
<li>HW P3: BTC parser</li>
<li>HW P4: Bitcoin scripting</li>
</ul></li>
<li>Ethereum smart contract assignments:
<ul>
<li>HW P5: dApp Gradebook</li>
<li>HW P6: dApp Tokens</li>
<li>HW P7: dApp Auction</li>
<li>HW P8: DEX</li>
</ul></li>
<li>Web3 assignments:
<ul>
<li>HW P9: DAO & web3</li>
<li>HW P10: Arbitrage trading</li>
<li>HW P11: MetaMask</li>
</ul></li>
</ul>
</div>
<!-- ============================================================ -->
</section></section>
<section>
<section id="honor-policy" class="title-slide slide level1 center">
<h1>Honor Policy</h1>
</section>
<section id="class-honor-policy" class="slide level2">
<h2>Class Honor Policy</h2>
<p>The University of Virginia Honor Policy in effect. In addition to the normal rules, we have additional rules (full details in the <a href="../uva/syllabus.html">course syllabus</a>):</p>
<ol type="1">
<li>You may not look at the code of another student (past or present) for ANY reason</li>
<li>You may not try to hack my submission system</li>
<li>You may not discuss the midterm details to someone who has not already taken it</li>
<li>You may not release your source code online (including in a public github repo)</li>
</ol>
</section>
<section id="class-honor-policy-continued" class="slide level2">
<h2>Class Honor Policy, continued</h2>
<p>The University of Virginia Honor Policy in effect. In addition to the normal rules, we have additional rules (full details in the <a href="../uva/syllabus.html">course syllabus</a>):</p>
<ol start="5" type="1">
<li>We realize we shouldn’t have to say this, but we will not sign more than one conscientious retraction for a given student within one semester.</li>
<li>We thought this was obvious also, but apparently we have to say it: you can’t submit somebody else’s code as the main part of the assignment and claim it is valid because you cited that code. The point of the labs is for <em>you</em> to do the work, not for you to do a Google search.</li>
</ol>
</section>
<section id="generative-ai" class="slide level2">
<h2>Generative AI</h2>
<ul>
<li>You may use generative AI, such as ChatGPT, to help you study and understand concepts</li>
<li>All the <em>code</em> you submit must be your own, and cannot come from a generative AI
<ul>
<li>It turns out that generative AI is not all that useful for most of our assignments</li>
</ul></li>
</ul>
</section>
<section id="class-honor-policy-1" class="slide level2">
<h2>Class Honor Policy</h2>
<p>Any honor violation or cheating will be referred to the honor committee, and will result in <strong class="red">immediate failure</strong> for the course<br>
<br>
We have done this before, and we will do it again. Please don’t test me on this.</p>
<p><!-- ============================================================ --></p>
</section></section>
<section>
<section id="legal-issues" class="title-slide slide level1 center">
<h1>Legal Issues</h1>
<!-- .slide: class="right-float-img-600" -->
</section>
<section id="cryptocurrency-mining" class="slide level2">
<h2>Cryptocurrency mining</h2>
<div class="right-float-img-600">
<p><a href="https://vectorportal.com/vector/bitcoin-mining/36004"><img data-src="images/introduction/bitcoin-mining.svg"></a></p>
</div>
<ul>
<li>“Mining” cryptocurrency is a process by which a computer performs significant comptuations to help the cryptocurrency</li>
<li>The user gets a small amount of the cryptocurrency as a reward for doing so</li>
<li>This uses a <em>lot</em> of electricity, and costs money as a result</li>
<li>We will see mining in great detail this semester</li>
</ul>
</section>
<section id="disclaimer" class="slide level2">
<h2>Disclaimer</h2>
<p>I am not a lawyer. But I have discussed this with UVA’s lawyers. However, they are lawyers for me (as a UVA employee) but not for you (as a UVA student).</p>
</section>
<section id="mining-legality" class="slide level2">
<h2>Mining legality</h2>
<ul>
<li>Can you mine cryptocurrency at UVA?</li>
<li>Consider Virginia statute <a href="https://law.lis.virginia.gov/vacode/6.2-1901">6.2-1901</a>:</li>
</ul>
<blockquote>
<p>No person shall engage in the business of selling money orders or engage in the business of money transmission, whether or not the person has a location in the Commonwealth, unless the person obtains from the Commission a license issued pursuant to this chapter.</p>
</blockquote>
</section>
<section id="mining-legality-1" class="slide level2">
<h2>Mining legality</h2>
<ul>
<li>Virginia statute <a href="https://law.lis.virginia.gov/vacode/6.2-1901">6.2-1901</a> requires:
<ul>
<li>You get a license if you are in the <em>business</em> of money transmission</li>
</ul></li>
<li>Bug if mining is not your business, then you are not directly targetted by that statute</li>
<li>Thus, so far, mining is fine in the state of Virginia. But…</li>
</ul>
</section>
<section id="uvas-acceptable-use" class="slide level2">
<h2>UVA’s acceptable use</h2>
<ul>
<li>UVA has an <a href="https://security.virginia.edu/acceptable-use">acceptable use policy</a> – and policy <a href="https://uvapolicy.virginia.edu/policy/PRM-011">PRM-011</a>:</li>
</ul>
<blockquote style="width:85%">
<p>
Students are allowed reasonable use of University equipment when it is related to scholarship, research, and public service, and/or approved extracurricular activities. Such use requires approval of the appropriate equipment supervisor, provided the University incurs no unreasonable costs for materials, supplies, maintenance, and/or repairs.
</p>
</blockquote>
</section>
<section id="uvas-acceptable-use-1" class="slide level2">
<h2>UVA’s acceptable use</h2>
<ul>
<li>This means you can NOT mine cryptocurrency that:
<ul>
<li>Uses UVA equipment
<ul>
<li>Either server-based machines or a loaned notebook</li>
<li>This includes a UVA machine mining at your off-grounds apartment</li>
</ul></li>
<li>Uses UVA electricity
<ul>
<li>This means you are not allowed to mine in your dorm room, even on your own machine</li>
</ul></li>
</ul></li>
</ul>
</section>
<section id="legal-permission" class="slide level2">
<h2>Legal permission</h2>
<ul>
<li>But… how to teach cryptocurrency without mining?</li>
<li>This course has received legal permission from UVA’s general counsel to mine cryptocurrency, as long as ALL of the following are true:
<ul>
<li>The mining resource use is “reasonable” and necessary in pursuit of the academic goals of this course</li>
<li>The cryptocurrency mined has zero market value (a “fake” cryptocurrency)
<ul>
<li>This implies that it cannot be traded for any other “real” cryptocurrency (meaning one with a monetary value)</li>
</ul></li>
</ul></li>
</ul>
</section>
<section id="further-permissions" class="slide level2">
<h2>Further permissions</h2>
<ul>
<li>ITS and InfoSec have also approved the use of “fake” cryptocurrency in this course, as long as…
<ul>
<li>Any mining that you do must ONLY use mining software or libraries that I approve
<ul>
<li>The reason is that there is a LOT of malware distributed through shady mining software</li>
</ul></li>
<li>Any software linked to from an assignment for this course, or provided on the VirtualBox image, is thus considered approved for your use</li>
</ul></li>
</ul>
</section>
<section id="tax-implications" class="slide level2">
<h2>Tax implications</h2>
<ul>
<li>The IRS will ask this question on the IRS <a href="https://www.irs.gov/pub/irs-pdf/f1040.pdf">form 1040</a>:
<ul>
<li>“At any time during the past tax year, did you: (a) receive (as a reward, award, or payment for property or services); or (b) sell, exchange, gift, or otherwise dispose of a digital asset (or a financial interest in a digital asset)?”
<ul>
<li>The wording tends to change slightly from year to year; previous years used the phrase “virtual currency”</li>
</ul></li>
</ul></li>
<li>This is why we aren’t making you buy any cryptocurrency for this course</li>
<li>The “fake” cryptocurrency that you mine and trade in this course does not qualify as a ‘yes’ for that question…
<ul>
<li>… as there is no “financial interest” with it since it has zero market value</li>
</ul></li>
</ul>
</section>
<section id="can-should-you-mine-cryptocurrency-on-your-own" class="slide level2">
<h2>Can (should?) you mine cryptocurrency on your own?</h2>
<ul>
<li>Not on UVA equipment or on grounds!
<ul>
<li>ITS scans for this, and can revoke your computing access if they catch you</li>
</ul></li>
<li>If you do it on your own off grounds…
<ul>
<li>Be sure to understand the tax implications involved</li>
<li>And the electrical cost versus the reward gained</li>
</ul></li>
</ul>
<div class="quarto-auto-generated-content">
<p><img src="images/quarto.webp" class="slide-logo"></p>
<div class="footer footer-default">
<p><a href="https://github.com/aaronbloomfield/ccc" class="uri">https://github.com/aaronbloomfield/ccc</a></p>
</div>
</div>
</section></section>
</div>
</div>
<script>window.backupDefine = window.define; window.define = undefined;</script>
<script src="quarto_files/revealjs/dist/reveal.js"></script>
<!-- reveal.js plugins -->
<script src="quarto_files/revealjs/plugin/quarto-line-highlight/line-highlight.js"></script>
<script src="quarto_files/revealjs/plugin/pdf-export/pdfexport.js"></script>
<script src="quarto_files/revealjs/plugin/reveal-menu/menu.js"></script>
<script src="quarto_files/revealjs/plugin/reveal-menu/quarto-menu.js"></script>
<script src="quarto_files/revealjs/plugin/reveal-chalkboard/plugin.js"></script>
<script src="quarto_files/revealjs/plugin/quarto-support/support.js"></script>
<script src="quarto_files/revealjs/plugin/notes/notes.js"></script>
<script src="quarto_files/revealjs/plugin/search/search.js"></script>
<script src="quarto_files/revealjs/plugin/zoom/zoom.js"></script>
<script src="quarto_files/revealjs/plugin/math/math.js"></script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script>
<script>
// Full list of configuration options available at:
// https://revealjs.com/config/
Reveal.initialize({
'controlsAuto': false,
'previewLinksAuto': true,
'pdfSeparateFragments': false,
'autoAnimateEasing': "ease",
'autoAnimateDuration': 1,