about summary refs log blame commit diff stats
path: root/js/games/nluqo.github.io/~bh/bridge.ps
blob: 5897f8edaad9bfd1f99714fb997374fec46c0f8f (plain) (tree)
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206





















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































                                                                        
%!PS-Adobe-2.0
%%Creator: dvips 5.528 Copyright 1986, 1994 Radical Eye Software
%%Title: bridge.dvi
%%Pages: 9
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips bridge.dvi -o bridge.ps
%DVIPSParameters: dpi=300, comments removed
%DVIPSSource:  TeX output 1994.07.21:1332
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get
round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0
0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn
begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X
array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo
setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx
FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{
pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}
B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B
/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp
0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2
index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{
ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn
/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1
sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D
}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0
moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley
false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley
scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave
transform round exch round exch itransform moveto rulex 0 rlineto 0
ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta
0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{
3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p
-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{
3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
TeXDict begin 40258431 52099146 1200 300 300
(/home/anarres/g/users/bh/papers/bridge.dvi) @start /Fa
35 122 df<006000F001F001F001E001E003E003E003C003C003C0078007800780070007
0007000E000E000E000C000C001C0018001800000000000000000000007000F800F800F0
00E0000C237BA20F>33 D<0E1F1F1F1D010102020408081020C0080F7E840F>44
D<FFC0FFC0FF800B037B8B12>I<00000300000007000000070000000F0000001F000000
1F0000003F0000003F0000006F80000067800000C7800000C78000018780000387800003
07800006078000060780000C0780000C0780001807800018078000300780007FFF80007F
FF8000C0078000C00780018003C0018003C0030003C0030003C0060003C01F0007C0FFC0
7FFCFFC07FFC1E227DA125>65 D<0000FC040007FF0C001F839C003C00FC00F800F801E0
007803C00078078000780F8000300F0000301F0000303E0000303E0000607C0000007C00
00007C000000F8000000F8000000F8000000F8000000F8000000F0000000F0000180F000
0180F0000300F0000300F800060078000C0078000C003C0018001E0070000F81C00007FF
800000FC00001E2278A124>67 D<00FFFC00FFFC000780000780000F00000F00000F0000
0F00001E00001E00001E00001E00003C00003C00003C00003C0000780000780000780000
780000F00000F00000F00000F00001E00001E00001E00001E00003C00003C00003C00007
C000FFFC00FFFC0016227EA113>73 D<007FFE0000FFFE000007800000078000000F0000
000F0000000F0000000F0000001E0000001E0000001E0000001E0000003C0000003C0000
003C0000003C00000078000000780000007800000078000000F0000000F000C000F000C0
00F0018001E0018001E0018001E0030001E0030003C0070003C00E0003C01E0007C07E00
7FFFFC00FFFFFC001A227DA11F>76 D<0001FC00000F0700001C0380007001C000E001E0
01C000E003C000F0078000F00F0000F00F0000F81E0000F83E0000F83E0000F87C0000F8
7C0000F87C0000F8F80001F0F80001F0F80001F0F80001E0F80003E0F00003E0F00007C0
F00007C0F0000F80F0000F00F0001F0078001E0078003C00380078003C00E0001E01C000
0707000001F800001D2278A126>79 D<007FFFE000FFFFF80007807C0007803C000F001E
000F001E000F001E000F001E001E003E001E003E001E003E001E003C003C007C003C0078
003C00F0003C01E0007807C0007FFF00007800000078000000F0000000F0000000F00000
00F0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000007C00000
7FFC0000FFFC00001F227DA122>I<0003E080000FF980003C1F8000700F8000E0070000
C0070001C0070001C0070003800600038006000380000003C0000003C0000003F0000001
FE000001FFC00000FFE000003FF0000007F0000000F80000007800000078000000780000
0078003000700030007000300070003000E0007000E0007801C000780380006E070000C7
FE000081F8000019227CA11C>83 D<0FFFFFFC0FFFFFFC0F01E03C1C01E01C1C03C01C18
03C01C3003C0183003C01830078018600780186007801860078018000F0000000F000000
0F0000000F0000001E0000001E0000001E0000001E0000003C0000003C0000003C000000
3C00000078000000780000007800000078000000F0000000F0000000F0000001F000007F
FFC000FFFFC0001E2278A124>I<00F180038B80070F800E07001E07001C07003C070038
0E00780E00780E00780E00F01C00F01C00F01C20F01C30F03860F0386070786070D8C031
98801E0F0014157B9419>97 D<03C03F803F800380038007000700070007000E000E000E
000E001C001CF81D8C1E0E3C063C073807380F700F700F700F700FE01EE01EE01EE03CE0
38E038607060E031C01F0010237BA217>I<007C01C2030307070E0F1C0F3C0038007800
78007800F000F000F000F000F00170037006301C18380FC010157B9417>I<0000780007
F00007F00000700000700000E00000E00000E00000E00001C00001C00001C00001C00003
8000F380038B80070F800E07001E07001C07003C0700380E00780E00780E00780E00F01C
00F01C00F01C20F01C30F03860F0386070786070D8C03198801E0F0015237BA219>I<00
F803840E061C063C063806780CF038FFE0F000F000E000E000E000E000E002E006600C70
3830700F800F157A9417>I<00007C0000CE00019E00039E00038C000300000700000700
000700000700000E00000E00000E00000E0001FFF001FFF0001C00001C00001C00001C00
001C0000380000380000380000380000380000700000700000700000700000700000E000
00E00000E00000E00001C00001C00001C00001C000038000738000F30000F30000660000
3C0000172D82A20F>I<001F180031B800E0F801C0F001C0700380700780700700E00F00
E00F00E00F00E01E01C01E01C01E01C01E01C01E03800E03800E0780060F80061F0001E7
00000700000700000E00000E00000E00701C00F01800F0300060E0003F8000151F7E9417
>I<00F0000FE0000FE00000E00000E00001C00001C00001C00001C00003800003800003
8000038000070000071E0007638007C1800F81C00F01C00E01C00E01C01C03801C03801C
03801C0380380700380700380E08380E0C700E18701C18701C30700C20E00C6060078016
237DA219>I<00E000E001E000C00000000000000000000000000000000000001E003300
63806380C380C700C70007000E000E000E001C001C001C40386038C070C0708031803100
1E000C227CA10F>I<0001C00003C00003C0000180000000000000000000000000000000
000000000000000000000000003C00004600008700018700030700030700030700000E00
000E00000E00000E00001C00001C00001C00001C00003800003800003800003800007000
00700000700000700000E00000E00000E00071C000F18000F380006600003C0000122C82
A10F>I<00F0000FE0000FE00000E00000E00001C00001C00001C00001C0000380000380
000380000380000700000701E00706300708700E10F00E20F00E20600E40001D80001E00
001FC0001CE0003870003830003838203838307070607070607070407030C0E01880600F
0014237DA217>I<01E01FC01FC001C001C0038003800380038007000700070007000E00
0E000E000E001C001C001C001C0038003800380038007000700071007180E300E300E300
620066003C000B237CA20D>I<1E07C07C00331861860063B033030063E03E0380C3C03C
0380C3C03C0380C38038038007807807000700700700070070070007007007000E00E00E
000E00E00E000E00E01C100E00E01C181C01C01C301C01C038301C01C038601C01C01840
38038018C01801800F0026157C9429>I<1E0780003318E00063B0600063E07000C3C070
00C3807000C38070000700E0000700E0000700E0000700E0000E01C0000E01C0000E0382
000E0383001C0386001C0706001C070C001C030800380318001801E00019157C941C>I<
007C0001C6000303000603800E03C01C03C03C03C03803C07803C07803C07803C0F00780
F00780F00780F00F00F00E00701E00701C003038001860000F800012157B9419>I<03C1
E00666300C7C380C781818781C18701C18701C00E03C00E03C00E03C00E03C01C07801C0
7801C07801C0700380E003C0E003C1C003C380076700073C000700000700000E00000E00
000E00000E00001C00001C0000FFC000FFC000161F7F9419>I<00F840018CC00707C00E
07800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E00F0
1C00701C00703C00307C0030F8000F380000380000380000700000700000700000700000
E00000E0000FFE001FFE00121F7B9417>I<1E1F0033318063E1C063C3C0C3C3C0C38180
C380000700000700000700000700000E00000E00000E00000E00001C00001C00001C0000
1C000038000018000013157C9415>I<007801840306020E061E061E0608070007F007F8
03FC007C001E000E700EF00CF00CE008601030601F800F157D9414>I<006000E000E000
E000E001C001C001C001C00380FFF8FFF8038007000700070007000E000E000E000E001C
001C001C101C18383038303860186018C00F000D1F7C9E11>I<0F003011807021C07061
C0E0C1C0E0C380E0C380E00381C00701C00701C00701C00E03800E03800E03840E03860E
070C0C070C0E070C0E0B1806131003E1E018157C941B>I<0F01C01183C021C3E061C1E0
C1C0E0C380E0C380E00380C00700C00700C00700C00E01800E01800E01800E03000E0300
0E02000E04000E0C0006180001E00014157C9417>I<0F003070118070F021C070F861C0
E078C1C0E038C380E038C380E0380381C0300701C0300701C0300701C0300E0380600E03
80600E0380600E0380C00E0380C00E0780800E078180060F83000319860001F078001E15
7C9421>I<0F003011807021C07061C0E0C1C0E0C380E0C380E00381C00701C00701C007
01C00E03800E03800E03800E03800E07000C07000E07000E0F00061E0003EE00000E0000
0E00001C00301C0078380078300070600060C0002180001E0000151F7C9418>121
D E /Fb 78 125 df<000FE1F80078178C00E03E1E01C07E3E03C07C3E07807C1C07803C
0007803C0007803C0007803C0007803C0007803C0007803C0007803C00FFFFFFE0FFFFFF
E007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C
0007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C007FF1FF
E07FF1FFE01F2380A21D>11 D<000FC0000078300000E0080001C03C0003C07C0007807C
0007807C0007803800078000000780000007800000078000000780000007800000FFFFFC
00FFFFFC0007807C0007803C0007803C0007803C0007803C0007803C0007803C0007803C
0007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C
007FF1FFC07FF1FFC01A2380A21C>I<000FEC0000783C0000E07C0001C07C0003C07C00
07803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C00
FFFFFC00FFFFFC0007803C0007803C0007803C0007803C0007803C0007803C0007803C00
07803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C00
07803C007FF1FFC07FF1FFC01A2380A21C>I<000FE03F00003819E0C000E007802001C0
1F00F003C03F01F007803E01F007803E01F007801E00E007801E000007801E000007801E
000007801E000007801E000007801E0000FFFFFFFFF0FFFFFFFFF007801E01F007801E00
F007801E00F007801E00F007801E00F007801E00F007801E00F007801E00F007801E00F0
07801E00F007801E00F007801E00F007801E00F007801E00F007801E00F007801E00F007
801E00F07FF0FFC7FF7FF0FFC7FF282380A22A>I<70F8F8F8F8F8F8F870707070707070
70707070202020202020000000000070F8F8F87005237CA20E>33
D<701CF83EFC3FFC3F741D0401040104010401080208021004100420084010100F7EA219
>I<70F8FCFC7404040404080810102040060F7CA20E>39 D<0010002000400080018003
00060006000C001C001C0018003800380030007000700070007000F000E000E000E000E0
00E000E000E000E000E000E000F000700070007000700030003800380018001C001C000C
00060006000300018000800040002000100C327DA413>I<800040002000100018000C00
06000600030003800380018001C001C000C000E000E000E000E000F00070007000700070
00700070007000700070007000F000E000E000E000E000C001C001C00180038003800300
060006000C00180010002000400080000C327DA413>I<00C00000E00000C00000C00040
C080E0C1C0F0C3C07CCF801EDE0003F00000C00003F0001EDE007CCF80F0C3C0E0C1C040
C08000C00000C00000E00000C00012157DA419>I<000180000001800000018000000180
000001800000018000000180000001800000018000000180000001800000018000000180
00000180000001800000018000FFFFFFFFFFFFFFFF000180000001800000018000000180
000001800000018000000180000001800000018000000180000001800000018000000180
0000018000000180000001800020227D9C27>I<70F8FCFC740404040408081010204006
0F7C840E>I<FFF0FFF0FFF00C037F8B11>I<70F8F8F87005057C840E>I<00600000E000
03E000FFE000FDE00001E00001E00001E00001E00001E00001E00001E00001E00001E000
01E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E000
01E00001E00001E00001E0007FFF807FFF8011207D9F19>49 D<03F8000FFF00181F8020
07C04003E0F801E0FC01F0FC00F0FC00F07800F03001F00001E00001E00003E00003C000
0780000700000E00001C0000380000700000E00000C00001001002001004001008003010
00203FFFE07FFFE0FFFFE0FFFFE014207E9F19>I<03F8000FFE00180F803803C07C03C0
7C03E07C01E03C01E01803E00003C00003C0000780000F00001C0003F800000E00000780
0003C00003E00001E00001F00001F03001F07801F0FC01F0FC01E0FC03E0F803C06007C0
380F801FFE0003F80014207E9F19>I<000180000180000380000780000F80000F800017
800027800067800047800087800107800307800207800407800807801807801007802007
80400780C00780FFFFFCFFFFFC00078000078000078000078000078000078000078000FF
FC00FFFC16207F9F19>I<1800401E03801FFF801FFF001FFC0013F00010000010000010
000010000010000010000011FC001606001803801003C00001C00001E00001E00001F000
01F07001F0F801F0F801F0F801F0F801E04003E04003C03007801C0F000FFE0003F00014
207E9F19>I<003E0000FF8003C0C00700E00E01E01C03E01C03E03801C0380000780000
700000700000F0F800F30600F40380F401C0F801C0F800E0F000E0F000F0F000F0F000F0
7000F07000F07000F03800E03801E01801C01C03800F070007FE0001F80014207E9F19>
I<4000006000007FFFF07FFFF07FFFE07FFFE0400040C000808001008001008002000004
0000080000080000100000300000300000700000700000E00000E00000E00001E00001E0
0001E00001E00003E00003E00003E00003E00003E00003E00003E00001C00014227DA119
>I<01F80007FF000C07801001C02000C06000606000607000607800607C00C03F00C03F
81801FE6000FFC0007FC0001FF0006FF800C3FC0381FE03007E07001F0E000F0E000F0E0
0070E00070E000707000607000E03801C01E07800FFE0001F80014207E9F19>I<01F800
07FE000E0F001C03803801C07801C07001E0F000E0F000E0F000E0F000F0F000F0F000F0
7000F07001F03801F03802F01C02F0060CF001F0F00000F00000E00000E00001E03801C0
7C01C07C0380780700300E00303C001FF80007E00014207E9F19>I<70F8F8F870000000
000000000000000070F8F8F87005157C940E>I<70F8F8F8700000000000000000000000
70F8F8F87808080808101010204040051F7C940E>I<07F000181C00200E00400700F007
80F80780F80780F80780700780000F00000E00001C0000380000700000600000C0000080
000080000180000100000100000100000100000100000100000000000000000000000000
0000000003800007C00007C00007C00003800011237DA218>63 D<000180000001800000
0180000003C0000003C0000003C0000007E0000007E000000FF0000009F0000009F00000
11F8000010F8000010F8000020FC0000207C0000207C0000403E0000403E0000403E0000
801F0000801F0000FFFF0001FFFF8001000F8003000FC0020007C0020007C0040007E004
0003E00C0003E01E0003F0FFC03FFFFFC03FFF20227EA125>65 D<FFFFF800FFFFFE0007
C00F8007C007C007C003E007C001E007C001F007C001F007C001F007C001F007C001F007
C001E007C003E007C007C007C00F8007C03E0007FFFE0007C0078007C003C007C001E007
C001F007C000F007C000F807C000F807C000F807C000F807C000F807C000F807C001F007
C001F007C003E007C00FC0FFFFFF00FFFFFC001D227EA123>I<0007F008003FFC1800FC
073801F001B803C000F8078000780F0000381E0000183E0000183C0000187C0000087C00
000878000008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000780000007C0000087C0000083C0000083E0000081E0000100F0000100780002003C0
004001F0018000FC0700003FFE000007F0001D227DA124>I<FFFFF800FFFFFE0007C00F
8007C003C007C001E007C000F007C0007807C0007807C0003C07C0003C07C0001E07C000
1E07C0001E07C0001F07C0001F07C0001F07C0001F07C0001F07C0001F07C0001F07C000
1F07C0001F07C0001E07C0001E07C0003E07C0003C07C0003C07C0007807C000F007C001
E007C003C007C00F80FFFFFF00FFFFF80020227EA126>I<FFFFFFE0FFFFFFE007C003E0
07C000E007C0006007C0002007C0003007C0003007C0001007C0201007C0201007C02010
07C0200007C0600007C0E00007FFE00007FFE00007C0E00007C0600007C0200007C02000
07C0200407C0200407C0000407C0000807C0000807C0000807C0001807C0001807C00038
07C0007807C001F0FFFFFFF0FFFFFFF01E227EA122>I<FFFFFFE0FFFFFFE007C003E007
C000E007C0006007C0002007C0003007C0003007C0001007C0001007C0201007C0201007
C0200007C0200007C0600007C0E00007FFE00007FFE00007C0E00007C0600007C0200007
C0200007C0200007C0200007C0000007C0000007C0000007C0000007C0000007C0000007
C0000007C00000FFFF0000FFFF00001C227EA121>I<0007F008003FFC1800FC073801F0
01B803C000F8078000780F0000381E0000183E0000183C0000187C0000087C0000087800
0008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8003FFF7800
3FFF7C0000F87C0000F83C0000F83E0000F81E0000F80F0000F8078000F803C000F801F0
017800FC0638003FFC180007F00820227DA127>I<FFFE7FFFFFFE7FFF07C003E007C003
E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003
E007C003E007C003E007FFFFE007FFFFE007C003E007C003E007C003E007C003E007C003
E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003
E007C003E0FFFE7FFFFFFE7FFF20227EA125>I<FFFEFFFE07C007C007C007C007C007C0
07C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C0
07C007C007C007C007C007C0FFFEFFFE0F227FA112>I<0FFFF00FFFF0001F00001F0000
1F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0000
1F00001F00001F00001F00001F00001F00001F00001F00001F00301F00781F00FC1F00FC
1F00FC1E00783E00403C003070000FC00014227EA11A>I<FFFF0000FFFF000007C00000
07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000
07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000
07C0004007C0004007C0004007C0004007C000C007C000C007C0008007C0018007C00180
07C0078007C01F80FFFFFF80FFFFFF801A227EA11F>76 D<FFC00003FF80FFC00003FF80
07C00003F00005E00005F00005E00005F00004F00009F00004F00009F00004F00009F000
04780011F00004780011F00004780011F000043C0021F000043C0021F000043C0021F000
041E0041F000041E0041F000040F0081F000040F0081F000040F0081F00004078101F000
04078101F00004078101F0000403C201F0000403C201F0000401E401F0000401E401F000
0401E401F0000400F801F0000400F801F0000400F801F00004007001F0001F007001F000
FFE0703FFF80FFE0203FFF8029227EA12E>I<FFC007FFFFE007FF07F000F805F0002004
F8002004F80020047C0020047E0020043E0020041F0020041F8020040F80200407C02004
07E0200403E0200401F0200401F0200400F8200400FC2004007C2004003E2004003F2004
001F2004000FA004000FE0040007E0040003E0040003E0040001E0040001E0040000E01F
000060FFE00060FFE0002020227EA125>I<000FF00000781E0000E0070003C003C00780
01E00F0000F01E0000781E0000783C00003C3C00003C7C00003E7800001E7800001EF800
001FF800001FF800001FF800001FF800001FF800001FF800001FF800001F7800001E7C00
003E7C00003E3C00003C3E00007C1E0000781E0000780F0000F0078001E003C003C000E0
070000781E00000FF00020227DA127>I<FFFFF800FFFFFE0007C01F0007C007C007C003
C007C001E007C001E007C001F007C001F007C001F007C001F007C001F007C001E007C003
E007C003C007C0078007C01F0007FFFC0007C0000007C0000007C0000007C0000007C000
0007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C000
00FFFE0000FFFE00001C227EA122>I<FFFFE00000FFFFFC000007C01F000007C0078000
07C003C00007C003E00007C001E00007C001F00007C001F00007C001F00007C001F00007
C001E00007C003E00007C003C00007C007000007C03E000007FFF0000007C03C000007C0
1E000007C00F000007C00F800007C007C00007C007C00007C007C00007C007C00007C007
C00007C007C00007C007C00007C007C00007C007C04007C003C04007C003E080FFFE00F1
80FFFE003E0022227EA125>82 D<03F8100FFE301E07703801F0780070700030F00030F0
0010F00010F00010F80000F800007E00007FC0003FFC001FFF000FFFC007FFE000FFE000
0FF00001F00000F80000F8000078800078800078800078C00070C00070E000E0F001E0FE
03C0C7FF8080FE0015227DA11C>I<7FFFFFFC7FFFFFFC7807C03C6007C00C4007C00440
07C004C007C006C007C0068007C0028007C0028007C0028007C0020007C0000007C00000
07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000
07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00003
FFFF8003FFFF801F227EA124>I<FFFE07FFFFFE07FF07C000F807C0002007C0002007C0
002007C0002007C0002007C0002007C0002007C0002007C0002007C0002007C0002007C0
002007C0002007C0002007C0002007C0002007C0002007C0002007C0002007C0002007C0
002007C0002007C0002003C0004003E0004001E000C000F0018000700300003C0E00001F
FC000003F00020227EA125>I<FFFC00FFC0FFFC00FFC00FC0001E0007C000080007C000
080003E000100003E000100003F000100001F000200001F000200000F800400000F80040
0000F8004000007C008000007C008000007E008000003E010000003E010000001F020000
001F020000001F820000000F840000000F840000000FCC00000007C800000007C8000000
03F000000003F000000003F000000001E000000001E000000000C000000000C000000000
C0000022227FA125>I<FFFC3FFF03FFFFFC3FFF03FF0FC003F000780FC001F0003007C0
01F0002007C001F8002007E001F8002003E001F8004003E001FC004003E0027C004001F0
027C008001F0027E008001F0043E008000F8043E010000F8043E010000F8081F0100007C
081F0200007C081F0200007C100F8200003E100F8400003E100F8400003E2007C400001F
2007C800001F2007C800001F4003E800000FC003F000000FC003F000000F8001F000000F
8001F00000078001E00000070000E00000070000E00000030000C0000002000040003022
7FA133>I<FFFC007FE0FFFC007FE00FE0001E0007E000080003E000180003F000100001
F000200001F800200000FC004000007C004000007E008000003E008000003F010000001F
830000000F820000000FC600000007C400000007E800000003F800000003F000000001F0
00000001F000000001F000000001F000000001F000000001F000000001F000000001F000
000001F000000001F000000001F000000001F00000003FFF8000003FFF800023227FA125
>89 D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07317BA40E>91 D<080210042008200840104010
8020802080208020B82EFC3FFC3F7C1F380E100F7AA219>I<FEFE060606060606060606
060606060606060606060606060606060606060606060606060606060606060606060606
FEFE07317FA40E>I<1FF000381C007C0E007C0F007C078038078000078000078000FF80
07C7801E07803C0780780780700780F00784F00784F00784F00F84780F843C33F80FC1F0
16157E9419>97 D<0F0000FF0000FF00001F00000F00000F00000F00000F00000F00000F
00000F00000F00000F00000F00000F1F800F60E00F80300F00380F001C0F001E0F000E0F
000F0F000F0F000F0F000F0F000F0F000F0F000F0F000E0F001E0F001C0F00380E80700C
60E0081F8018237FA21C>I<01FE000707000C0F801C0F80380F80780700700000F00000
F00000F00000F00000F00000F00000F000007000007800403800401C00800C0100070600
01F80012157E9416>I<0000F0000FF0000FF00001F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F001F8F00706F00E01F01C00F03800F07800F07000
F0F000F0F000F0F000F0F000F0F000F0F000F0F000F07000F07800F03800F01C01F00C03
F80704FF01F8FF18237EA21C>I<01FC000707000C03801C01C03801C07800E07000E0F0
00E0FFFFE0F00000F00000F00000F00000F000007000007800203800201C00400E008007
030000FC0013157F9416>I<003E0000E30001C78003CF80038F80078700078000078000
078000078000078000078000078000078000FFF800FFF800078000078000078000078000
078000078000078000078000078000078000078000078000078000078000078000078000
0780007FFC007FFC00112380A20F>I<01F078071D9C0E0E1C1C07001C07003C07803C07
803C07803C07801C07001C07000E0E000F1C0019F0001000001000001800001C00001FFF
000FFFE00FFFF03800F870003860001CE0001CE0001CE0001C6000187000383800700F03
C001FE0016207F9419>I<0F000000FF000000FF0000001F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0FC0000F
30E0000F4070000F8078000F8078000F0078000F0078000F0078000F0078000F0078000F
0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F007800FF
F3FF80FFF3FF8019237FA21C>I<0E001F001F001F000E00000000000000000000000000
000000000F00FF00FF001F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F00FFE0FFE00B2280A10D>I<007000F800F800F80070000000000000000000
00000000000000007807F807F800F8007800780078007800780078007800780078007800
7800780078007800780078007800780078007800787078F870F870F8E071C01F000D2C82
A10F>I<0F0000FF0000FF00001F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F03FC0F03FC0F01E00F01800F03000F04000F08000F18000F38
000F7C000FBE000F1E000F1F000F0F800F07800F07C00F03C00F03E00F01F0FFE7FEFFE7
FE17237FA21A>I<0F00FF00FF001F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F00FFF0FFF00C2380A20D>I<0F0FE03F80FF3070C1C0FF403900E01F803E00F00F803E
00F00F003C00F00F003C00F00F003C00F00F003C00F00F003C00F00F003C00F00F003C00
F00F003C00F00F003C00F00F003C00F00F003C00F00F003C00F00F003C00F00F003C00F0
FFF3FFCFFFFFF3FFCFFF28157F942B>I<0F0FC000FF30E000FF4070001F8078000F8078
000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078
000F0078000F0078000F0078000F0078000F007800FFF3FF80FFF3FF8019157F941C>I<
00FC000703800E01C01C00E0380070780078700038F0003CF0003CF0003CF0003CF0003C
F0003CF0003C7000387800783800701C00E00E01C007038000FC0016157F9419>I<0F1F
80FF60E0FF80700F00380F001C0F001E0F001E0F000F0F000F0F000F0F000F0F000F0F00
0F0F000F0F001E0F001E0F001C0F00380F80700F60E00F1F800F00000F00000F00000F00
000F00000F00000F00000F0000FFF000FFF000181F7F941C>I<01F020070C600E02E01C
03E03801E07801E07801E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001E078
01E03801E01C03E00C03E0070DE001F1E00001E00001E00001E00001E00001E00001E000
01E00001E0001FFE001FFE171F7E941A>I<0F1E00FF2300FF47801F87800F83000F8000
0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F0000FFF800FFF80011157F9414>I<0FC4383C600C6004E004E004F000FE007FE03FF0
1FF807FC007E801E800EC00EC00EC00CE01CD83887E00F157E9414>I<01000100010001
00030003000300070007000F003FF8FFF80F000F000F000F000F000F000F000F000F000F
000F040F040F040F040F040F040788038800F00E1F7F9E13>I<0F007800FF07F800FF07
F8001F00F8000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F00
78000F0078000F0078000F0078000F0078000F00F8000F00F80007017C0003827F8000FC
7F8019157F941C>I<FFE1FEFFE1FE1F00700F00200F802007804007804003C08003C080
03E08001E10001E10000F20000F20000FA00007C00007C00003800003800003800001000
17157F941A>I<FFCFFC7F80FFCFFC7F801F01F01E000F00E00C000F00F008000F01F008
000781781000078178100007C238300003C23C200003C23C200001E41C400001E41E4000
01E41E400000F80E800000F80F800000F80F800000700700000070070000007007000000
2002000021157F9424>I<FFE3FEFFE3FE0F81E007818007C10003C20001E60001F40000
F800007800003C00003C00005E00008F00018F800107800203C00603E01E03E0FF87FFFF
87FF18157F941A>I<FFE1FEFFE1FE1F00700F00200F802007804007804003C08003C080
03E08001E10001E10000F20000F20000FA00007C00007C00003800003800003800001000
001000002000002000002000F84000F84000F88000B980006300003E0000171F7F941A>
I<3FFFC0380780300F80200F00601E00403E00403C0040780000F80000F00001E00003C0
0007C0400780400F00401F00C01E00803C00807C0180780780FFFF8012157F9416>I<FF
FFFFFFFFFF803101808C32>124 D E /Fc 38 122 df<0007F800007FFC0001FC1E0003
F01F0007E03F000FC03F000FC03F000FC03F000FC01E000FC00C000FC000000FC000000F
C0FF80FFFFFF80FFFFFF80FFFFFF800FC01F800FC01F800FC01F800FC01F800FC01F800F
C01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800F
C01F800FC01F807FF8FFF07FF8FFF07FF8FFF01C237FA220>12 D<3C7EFFFFFFFF7E3C08
087C8710>46 D<3C7EFFFFFFFF7E3C0000000000003C7EFFFFFFFF7E3C08167C9510>58
D<000078000000007800000000FC00000000FC00000000FC00000001FE00000001FE0000
0003FF00000003FF00000003FF000000073F800000073F8000000F3FC000000E1FC00000
0E1FC000001C0FE000001C0FE000003C0FF000003807F000003807F000007003F8000070
03F80000FFFFFC0000FFFFFC0000FFFFFC0001E001FE0001C000FE0003C000FF00038000
7F000380007F000780007F80FFF807FFFCFFF807FFFCFFF807FFFC26227EA12B>65
D<0003FE00C0001FFFC1C0007FFFF3C001FF80FFC003FC003FC007F0000FC00FE00007C0
1FC00007C03FC00003C03F800003C07F800001C07F000001C07F000001C0FF00000000FF
00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000007F00
0000007F000001C07F800001C03F800001C03FC00003C01FC00003800FE000078007F000
0F0003FC001E0001FF807C00007FFFF800001FFFE0000003FF000022227DA129>67
D<FFFFFF8000FFFFFFF800FFFFFFFC0007F001FF0007F0007F8007F0001FC007F0000FE0
07F00007E007F00007F007F00007F007F00003F807F00003F807F00003F807F00003FC07
F00003FC07F00003FC07F00003FC07F00003FC07F00003FC07F00003FC07F00003FC07F0
0003FC07F00003F807F00003F807F00003F807F00007F007F00007F007F0000FE007F000
1FC007F0003F8007F001FF00FFFFFFFE00FFFFFFF800FFFFFFC00026227EA12C>I<FFFF
FFFC00FFFFFFFC00FFFFFFFC0007F001FE0007F0007E0007F0003E0007F0001E0007F000
0E0007F0000E0007F01C0E0007F01C070007F01C070007F01C070007F03C000007F07C00
0007FFFC000007FFFC000007FFFC000007F07C000007F03C000007F01C038007F01C0380
07F01C038007F01C070007F000070007F000070007F0000F0007F0000F0007F0001F0007
F0003F0007F001FE00FFFFFFFE00FFFFFFFE00FFFFFFFE0021227EA126>I<FFFF81FFFF
FFFF81FFFFFFFF81FFFF07F0000FE007F0000FE007F0000FE007F0000FE007F0000FE007
F0000FE007F0000FE007F0000FE007F0000FE007F0000FE007F0000FE007F0000FE007FF
FFFFE007FFFFFFE007FFFFFFE007F0000FE007F0000FE007F0000FE007F0000FE007F000
0FE007F0000FE007F0000FE007F0000FE007F0000FE007F0000FE007F0000FE007F0000F
E007F0000FE0FFFF81FFFFFFFF81FFFFFFFF81FFFF28227EA12D>72
D<FFFFE0FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F8
0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
0003F80003F80003F80003F80003F80003F80003F800FFFFE0FFFFE0FFFFE013227FA116
>I<FFFFE000FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0003807F0003807F0003807F0007007F0007007F0007007F0
00F007F000F007F001F007F007F007F01FE0FFFFFFE0FFFFFFE0FFFFFFE01D227EA122>
76 D<FFF0001FFFFFF8001FFFFFFC001FFF07FE0000E007FF0000E007FF8000E0077FC0
00E0073FC000E0071FE000E0070FF000E00707F800E00707FC00E00703FE00E00701FE00
E00700FF00E007007F80E007003FC0E007003FE0E007001FF0E007000FF0E0070007F8E0
070003FCE0070001FEE0070000FFE0070000FFE00700007FE00700003FE00700001FE007
00000FE007000007E007000007E0FFF80003E0FFF80001E0FFF80000E028227EA12D>78
D<FFFFFF8000FFFFFFE000FFFFFFF80007F003FC0007F000FE0007F000FF0007F0007F00
07F0007F8007F0007F8007F0007F8007F0007F8007F0007F8007F0007F8007F0007F0007
F000FF0007F000FE0007F003FC0007FFFFF80007FFFFC00007F000000007F000000007F0
00000007F000000007F000000007F000000007F000000007F000000007F000000007F000
000007F000000007F0000000FFFF800000FFFF800000FFFF80000021227EA127>80
D<FFFFFE0000FFFFFFE000FFFFFFF80007F003FC0007F000FE0007F000FF0007F0007F00
07F0007F8007F0007F8007F0007F8007F0007F8007F0007F8007F0007F0007F000FF0007
F001FE0007F007F80007FFFFE00007FFFF800007F00FE00007F007F00007F003F80007F0
01FC0007F001FC0007F001FC0007F001FC0007F001FE0007F001FE0007F001FE0007F001
FE0707F001FF0707F000FF07FFFF80FF8EFFFF803FFCFFFF800FF828227EA12B>82
D<01FE060007FFCE001FFFFE003F01FE003C007E0078003E0078001E00F8000E00F8000E
00F8000E00FC000000FF000000FFF000007FFF80003FFFE0003FFFF8001FFFFC0007FFFE
0003FFFF00003FFF000001FF0000003F8000001F8000001F80E0000F80E0000F80E0000F
80F0000F00F0001F00FC001E00FF807C00FFFFF800E7FFF000C07FC00019227DA120>I<
7FFFFFFFC07FFFFFFFC07FFFFFFFC07E03F80FC07C03F807C07803F803C07003F801C0F0
03F801E0F003F801E0E003F800E0E003F800E0E003F800E0E003F800E00003F800000003
F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
00000003F800000003F800000003F800000003F800000003F800000003F800000003F800
000003F8000003FFFFF80003FFFFF80003FFFFF80023217EA028>I<FFFF07FFF81FFFFF
FF07FFF81FFFFFFF07FFF81FFF07F0003F8000E007F0003F8000E003F8003F8001C003F8
003FC001C003FC003FC003C001FC007FE0038001FC007FE0038001FE007FE0078000FE00
FFF0070000FE00E7F00700007F00E7F00E00007F01C3F80E00007F01C3F80E00003F81C3
F81C00003F8381FC1C00003FC381FC3C00001FC781FE3800001FC700FE3800001FE700FE
7800000FEF00FF7000000FEE007F70000007FE007FE0000007FC003FE0000007FC003FE0
000003FC003FC0000003F8001FC0000003F8001FC0000001F8001F80000001F0000F8000
0000F0000F00000000E00007000038227FA13B>87 D<07FE00001FFF80003F07E0003F03
F0003F01F0003F01F8001E01F8000001F8000001F80000FFF80007FFF8001FE1F8003F01
F8007E01F800FC01F800FC01F800FC01F800FC01F8007E03F8007F0EFF801FFCFF8007F0
3F8019167E951C>97 D<FF800000FF800000FF8000001F8000001F8000001F8000001F80
00001F8000001F8000001F8000001F8000001F8000001F8000001F8FF0001FBFFC001FF0
7E001FC01F001F801F801F800FC01F800FC01F800FE01F800FE01F800FE01F800FE01F80
0FE01F800FE01F800FE01F800FC01F800FC01F800FC01F801F801FC01F001FF07E001E3F
FC001C0FE0001B237EA220>I<00FF8007FFE00FC3F01F03F03F03F07E03F07E01E07E00
00FE0000FE0000FE0000FE0000FE0000FE00007E00007E00007F00003F00701F80E00FE1
E007FFC000FE0014167E9519>I<0001FF000001FF000001FF0000003F0000003F000000
3F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000FE3F0007FF
FF000FC1FF001F007F003F003F007E003F007E003F007E003F00FE003F00FE003F00FE00
3F00FE003F00FE003F00FE003F00FE003F007E003F007E003F003F003F001F007F000FC1
FFE007FFBFE001FE3FE01B237EA220>I<00FE0007FF800F87E01F03E03F01F07E01F07E
01F8FE00F8FE00F8FFFFF8FFFFF8FE0000FE0000FE0000FE00007E00007F00383F00381F
80700FC1F003FFC000FF0015167E951A>I<001F8000FFE001F1F003E3F007E3F00FC3F0
0FC1E00FC0000FC0000FC0000FC0000FC0000FC000FFFE00FFFE00FFFE000FC0000FC000
0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
0FC0000FC0007FFC007FFC007FFC0014237EA212>I<00FE0F8003FFBFC00F83F3C01F01
F3C01F01F3803F01F8003F01F8003F01F8003F01F8003F01F8001F01F0001F01F0000F83
E0000FFF80001CFE00001C0000001C0000001E0000001FFFE0001FFFFC000FFFFF000FFF
FF003FFFFF807C001FC0F8000FC0F80007C0F80007C0F80007C07C000F803E001F001F80
7E000FFFFC0001FFE0001A217F951D>I<FF800000FF800000FF8000001F8000001F8000
001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F87F0
001F9FFC001FB87E001FE03E001FC03F001FC03F001F803F001F803F001F803F001F803F
001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F
00FFF1FFE0FFF1FFE0FFF1FFE01B237DA220>I<0E003F807F807F807F807F803F800E00
000000000000000000000000FF80FF80FF801F801F801F801F801F801F801F801F801F80
1F801F801F801F801F801F801F80FFF0FFF0FFF00C247EA30F>I<FF80FF80FF801F801F
801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
801F801F801F801F801F801F801F801F801F80FFF0FFF0FFF00C237EA20F>108
D<FF03F803F800FF0FFE0FFE00FF383F383F001F601F601F001FC01FC01F801FC01FC01F
801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
801F801F801F80FFF0FFF0FFF0FFF0FFF0FFF0FFF0FFF0FFF02C167D9533>I<FF07F000
FF1FFC00FF387E001F603E001FC03F001FC03F001F803F001F803F001F803F001F803F00
1F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F00
FFF1FFE0FFF1FFE0FFF1FFE01B167D9520>I<00FF0007FFE00FC3F01F00F83F00FC7E00
7E7E007E7E007EFE007FFE007FFE007FFE007FFE007FFE007FFE007F7E007E7E007E3F00
FC1F00F80FC3F007FFE000FF0018167E951D>I<FF8FF000FFBFFC00FFF07E001FC03F00
1F801F801F801FC01F801FC01F800FE01F800FE01F800FE01F800FE01F800FE01F800FE0
1F800FE01F800FC01F801FC01F801FC01F801F801FC03F001FF07E001FBFFC001F8FE000
1F8000001F8000001F8000001F8000001F8000001F8000001F800000FFF00000FFF00000
FFF000001B207E9520>I<FF0F80FF3FE0FF33F01F63F01FC3F01FC3F01FC1E01F80001F
80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8000FFF800FF
F800FFF80014167E9518>114 D<07F9801FFF80380F80700780F00380F00380F80000FF
0000FFF8007FFE003FFF001FFF8007FF80003FC0E007C0E003C0F003C0F003C0F80380FC
0F00FFFE00C3F80012167E9517>I<01C00001C00001C00001C00003C00003C00003C000
07C00007C0000FC0003FFF00FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC000
0FC0000FC0000FC0000FC0000FC3800FC3800FC3800FC3800FC3800FC30007E70003FE00
00FC0011207F9F16>I<FF81FF00FF81FF00FF81FF001F803F001F803F001F803F001F80
3F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F80
3F001F803F001F807F001F80FF000FC1FFE007FF3FE001FE3FE01B167D9520>I<FFF03F
E0FFF03FE0FFF03FE00FC00E000FE01E0007E01C0007E01C0003F0380003F0380003F878
0001F8700001FCF00000FCE00000FCE000007FC000007FC000007FC000003F8000003F80
00001F0000001F0000000E00001B167F951E>I<FFE3FF8FFCFFE3FF8FFCFFE3FF8FFC0F
C07C01C00FC07E01C00FC07E03C007E07E038007E0FF038003F0FF070003F0FF070003F1
CF870001F9CF8E0001FBCFCE0001FF87DE0000FF87DC0000FF03FC00007F03F800007F03
F800007E01F800003E01F000003E01F000001C00E00026167F9529>I<FFF0FFC0FFF0FF
C0FFF0FFC007E0780007F0F00003F0E00001F9E00000FFC000007F8000007F0000003F00
00001F8000003FC000007FE00000F7F00001E3F00001C1F80003C0FC000780FE00FFC1FF
E0FFC1FFE0FFC1FFE01B167F951E>I<FFF03FE0FFF03FE0FFF03FE00FC00E000FE01E00
07E01C0007E01C0003F0380003F0380001F8780001F8700001FCF00000FCE00000FEE000
007FC000007FC000003FC000003F8000003F8000001F0000001F0000000E0000000E0000
001E0000001C0000783C0000FC380000FC780000FC70000079E000007FC000001F000000
1B207F951E>I E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin

%%EndSetup
%%Page: 1 1
1 0 bop 368 50 a Fc(Sym)n(b)r(o)o(lic)19 b(Program)n(m)m(ing)d(vs.)j
(the)g(A.P)-5 b(.)20 b(Curriculum)829 129 y Fb(Brian)c(Harv)o(ey)611
193 y(Univ)o(ersit)o(y)i(of)f(California,)h(Berk)o(eley)100
293 y(A)e(p)q(opular)g(metaphor)e(in)j(recen)o(t)f(y)o(ears)f(compares)
f(the)i(pro)q(cess)f(of)i(writing)g(a)f(computer)e(pro-)0
357 y(gram)j(to)j(that)g(of)f(designing)h(and)f(building)h(a)f(bridge.)
30 b(The)20 b(p)q(oin)o(t)f(of)h(the)g(metaphor)d(is)j(that)f(it's)0
420 y(not)e(acceptable)h(to)g(debug)e(a)h(new)g(bridge)g(design)g(b)o
(y)f(building)j(the)e(bridge,)g(op)q(ening)g(it)h(to)g(tra\016c,)0
484 y(and)f(w)o(aiting)i(to)f(see)g(whether)f(or)h(not)f(it)i
(collapses.)27 b(P)o(eople)18 b(who)f(use)h(this)g(metaphor)e(argue)h
(that)0 548 y(the)22 b(analogous)f(tec)o(hnique)i(isn't)f(acceptable)h
(in)f(computer)e(programm)o(ing)f(either.)39 b(The)21
b(phrase)0 611 y Fa(softwar)m(e)d(engine)m(ering)i Fb(w)o(as)14
b(coined)i(to)f(ev)o(ok)o(e)g(the)h(comparison)d(with)j(civil)i
(engineering)d(and)g(other,)0 675 y(similar)i(disciplines.)25
b(The)17 b(view)h(of)f(programm)n(ing)e(as)h(soft)o(w)o(are)g
(engineering)i(has)e(had)g(a)h(profound)0 739 y(in\015uence)j(on)h
(computer)d(science)j(education.)34 b(The)20 b(purp)q(ose)g(of)g(this)h
(pap)q(er)f(is)h(to)g(examine)f(that)0 802 y(in\015uence,)15
b(particularly)h(at)f(the)g(high)g(sc)o(ho)q(ol)f(lev)o(el)j(through)c
(the)i(College)i(Board)d(Adv)m(anced)g(Place-)0 866 y(men)o(t)h
(curriculum,)g(and)h(suggest)g(an)g(alternativ)o(e)i(view.)100
935 y(\(I)i(am)e(fo)q(cusing)i(atten)o(tion)h(on)e(the)h(A.P)l(.)f
(curriculum)g(to)h(mak)o(e)e(the)i(p)q(oin)o(t)g(concrete,)g(but)g(it)0
999 y(is)j(just)f(one)g(of)h(man)o(y)d(similar)j(in\015uences.)39
b(The)22 b(College)i(Board)e(did)h(not)f(in)o(v)o(en)o(t)g(the)h(soft)o
(w)o(are)0 1063 y(engineering)18 b(view;)i(it)g(tries)e(to)g(follo)o(w)
i(the)e(lead)h(of)f(its)h(clien)o(t)g(colleges.)28 b(A)o(t)19
b(the)f(college)i(lev)o(el,)g(the)0 1126 y(A)o(CM)e(curriculum)f
(standard)f(could)j(b)q(e)f(cited)i(instead.)27 b(I)18
b(teac)o(h)h(at)f(b)q(oth)h(lev)o(els,)h(but)e(I)g(feel)i(most)0
1190 y(strongly)h(ab)q(out)f(the)h(inappropriateness)f(of)h(the)f(soft)
o(w)o(are)g(engineering)h(approac)o(h)e(in)i(secondary)0
1254 y(education.\))0 1383 y Fc(Soft)n(w)n(are)e(Engineering:)26
b(Program)n(m)m(ing)16 b(as)j(Discipline)100 1512 y Fb(What)d(are)f
(the)i(c)o(haracteristics)f(of)g(the)g(soft)o(w)o(are)f(engineering)i
(approac)o(h?)i(One)d(fundamen)o(tal)0 1576 y(assumption)g(is)j(that)f
Fa(the)i(go)m(al)g(of)g(a)g(pr)m(oje)m(ct)h(is)f(given)f(in)h(advanc)m
(e)p Fb(.)28 b(It)19 b(is)g(not)f(the)g(civil)j(engineer's)0
1640 y(job)e(to)g(decide)g(where)f(a)h(bridge)g(should)f(b)q(e)h
(built,)h(or)f(whether)f(a)h(bridge)f(should)g(b)q(e)h(built)i(in)e
(the)0 1703 y(\014rst)h(place.)37 b(Those)20 b(decisions)i(are)e(made)g
(b)o(y)g(someone)f(else|p)q(oliti)q(ci)q(ans,)24 b(tra\016c)d(\015o)o
(w)f(exp)q(erts,)0 1767 y(p)q(erhaps)15 b(railroad)i(o)o(wners.)j(The)c
(engineer)h(is)g(emplo)o(y)o(ed)e(to)h(carry)g(out)h(a)f(prede\014ned)f
(pro)s(ject,)h(and)0 1831 y(is)h(giv)o(en)g(a)g(formal)e(sp)q
(eci\014cation)j(of)f(the)g(requiremen)o(ts.)100 1900
y(A)j(natural)h(consequence)f(of)g(externally-pro)o(vided)i(goals)e(is)
h(a)g Fa(top-down)h(design)k Fb(tec)o(hnique.)0 1964
y(Ideally)l(,)16 b(b)q(eginning)e(with)h(the)f(formal)f(goal)h(sp)q
(eci\014cation,)i(the)e(engineer)g(maps)d(out)j(large)g(subtasks,)0
2028 y(then)23 b(dev)o(elops)g(eac)o(h)g(subtask)f(in)o(to)i(more)d
(and)h(more)g(detailed)i(structure)e(b)o(y)h(a)g(pro)q(cess)f(called)0
2091 y(\\step)o(wise)15 b(re\014nemen)o(t,")e(one)i(of)g(the)g(cen)o
(tral)g(elemen)o(ts)g(of)g(the)g Fa(structur)m(e)m(d)i(pr)m(o)m(gr)m
(amming)22 b Fb(metho)q(d-)0 2155 y(ology)l(.)29 b(Mastery)18
b(of)h(this)h(tec)o(hnique)f(is)g(the)g(main)f(con)o(ten)o(t,)g(apart)h
(from)d(programm)o(ing)g(language)0 2219 y(syn)o(tax,)g(of)h(most)e(in)
o(tro)q(ductory)h(computer)f(science)i(courses.)100 2288
y(If)j(a)g(bridge)f(falls)j(do)o(wn,)d(its)i(designer)e(can)h(b)q(e)g
(sued)f(for)h(damages.)29 b(A)21 b(similar)f(standard)e(of)0
2352 y Fa(pr)m(ofessiona)q(l)f(liability)h Fb(should)13
b(apply)g(to)h(the)f(authors)f(of)i(computer)d(programs,)f(if)15
b(liv)o(es)f(or)f(prop)q(ert)o(y)0 2415 y(are)g(endangered)f(b)o(y)h
(their)h(failure.)22 b(Some)12 b(professional)h(so)q(cieties)j(ha)o(v)o
(e)d(b)q(egun)g(to)g(prop)q(ose)g(uniform)0 2479 y(standards)22
b(for)h(licensing)j(of)e(soft)o(w)o(are)f(engineers.)43
b(If)24 b(programm)n(ers)c(are)k(held)g(liable)i(for)d(their)0
2543 y(failures,)16 b(it)g(pa)o(ys)e(to)h(use)f Fa(c)m(onservative)j
(te)m(chniques)i Fb(in)d(the)f(design)f(of)h(new)g(programs)o(.)k(Just)
14 b(as)g(civil)0 2606 y(engineers)e(rely)h(on)e(a)h(few)h(w)o
(ell-understo)q(o)q(d)f(designs)g(for)f(bridges,)i(programm)n(ers)8
b(should)k(use)g(pro)o(v)o(en)0 2670 y(algorithms)17
b(to)g(ensure)g(program)d(correctness.)24 b(Mistak)o(es)17
b(should)g(not)h(b)q(e)f(debugged)g(b)o(y)g(trial)i(and)963
2790 y(1)p eop
%%Page: 2 2
2 1 bop 0 50 a Fb(error,)13 b(but)h(should)f(b)q(e)i(prev)o(en)o(ted)d
(in)j(adv)m(ance)f(b)o(y)g(redundan)o(t)e(error)g(c)o(hec)o(king,)j
(strict)g(adherence)e(to)0 113 y(design)k(standards,)d(and)i(formal)g
(pro)q(ofs)g(of)h(correctness,)e(tec)o(hniques)i(that)g(one)f(p)q
(opular)h(text)h(calls)0 177 y Fa(antibugging)j Fb([Co)q(op)q(er)16
b(and)g(Clancy)l(,)h(1985].)100 244 y(One)22 b(p)q(erson)f(can't)i
(build)g(a)f(bridge)h(alone.)40 b(Bridges)22 b(are)g(built)i(b)o(y)e
(large)h(teams,)g(and)e(it's)0 307 y(imp)q(ortan)o(t)d(that)h(eac)o(h)g
(team)f(mem)o(ber)e(ha)o(v)o(e)j(a)g(w)o(ell-de\014ned)g(job.)29
b(Similarly)l(,)20 b(soft)o(w)o(are)e(engineer-)0 371
y(ing)k(emphasizes)e(the)i(needs)f(of)h Fa(pr)m(o)m(gr)m(amming)j(te)m
(ams)h Fb(in)d(whic)o(h)e(eac)o(h)g(programm)o(er)d(is)23
b(assigned)0 435 y(a)e(subtask.)34 b(The)21 b(top-do)o(wn)e(design)i
(approac)o(h)e(is)i(particularly)i(imp)q(ortan)o(t)d(in)h(a)g(team)f
(en)o(viron-)0 498 y(men)o(t)14 b(so)i(that)g(eac)o(h)g(program)d
(segmen)o(t)h(has)h(a)h(w)o(ell-de\014ned)g(in)o(terface)h(to)f(the)g
(rest)g(of)g(the)g(pro)s(ject.)0 562 y(Rigid)22 b(standards)d(are)h
(required)h(ab)q(out)g(things)g(lik)o(e)h(scop)q(e)f(of)g(v)m(ariables)
h(and)e(do)q(cumen)o(tation)g(of)0 626 y(subpro)q(cedures.)100
692 y(Finally)l(,)d(an)f Fa(emphasis)j(on)f(pr)m(o)m(duct)k
Fb(has)15 b(b)q(een)h(implicit)i(throughout)c(this)j(description.)22
b(What)0 756 y(is)e(most)d(imp)q(ortan)o(t)h(is)i(the)f(program,)e
(rather)h(than)h(the)g(st)o(yle)i(of)e(w)o(ork)f(of)i(the)f(programm)o
(er)o(s.)27 b(A)0 820 y(soft)o(w)o(are)18 b(engineer)h(deriv)o(es)f
(job)h(satisfaction)h(from)d(seeing)i(p)q(eople)h(use)e(the)h(pro)q
(duct,)f(more)f(than)0 883 y(from)e(the)i(program)o(m)o(ing)d(itself.)
100 950 y(\(In)20 b(a)g(recen)o(tly-published)g(p)q(olemic,)h(Edsger)e
(Dijkstra,)i(one)f(of)g(the)g(founders)f(of)h(the)g(struc-)0
1014 y(tured)11 b(programm)o(ing)e(metho)q(dology)l(,)j(disso)q(ciates)
h(himself)f(from)e(the)j(name)d(\\soft)o(w)o(are)h(engineering")0
1077 y(b)q(ecause)i(he)g(thinks)h(that)g(it)g(ev)o(ok)o(es)f(a)g(metho)
q(dology)g(based)g(on)g(testing,)h(rather)f(than)g(on)g(the)g(formal)0
1141 y(mathematical)k(reasoning)g(that)h(Dijkstra)g(prefers.)25
b(Still,)20 b(from)c(the)i(p)q(oin)o(t)g(of)g(view)h(I)e(am)g(presen)o
(t-)0 1205 y(ing,)f(Dijkstra)h(and)e(the)g(soft)o(w)o(are)g(engineers)g
(are)h(in)g(the)g(same)e(camp)g(b)q(ecause)h(they)h(b)q(oth)g(fo)q(cus)
f(on)0 1268 y(pro)q(ducing)i(a)h(program)c(that)k(meets)f(a)g(prior)g
(sp)q(eci\014cation,)i(rather)e(than)h(on)f(the)h(dev)o(elopmen)o(t)e
(of)0 1332 y(that)h(sp)q(eci\014cation.\))0 1458 y Fc(Arti\014cial)22
b(In)n(telligenc)q(e:)28 b(Program)n(m)m(ing)17 b(as)h(Art)100
1585 y Fb(Some)d(computer)f(programs)g(actually)k(do)f(con)o(trol)f
(pro)q(cesses)g(in)h(whic)o(h)g(a)f(malfunction)h(could)0
1648 y(threaten)i(h)o(uman)d(life.)32 b(In)19 b(those)g(cases,)h(I)f
(agree)g(that)g(programm)o(er)o(s)d(should)j(regard)f(their)i(w)o(ork)0
1712 y(as)15 b(closely)i(analogous)e(to)h(other)f(engineering)h
(disciplines,)h(with)f(the)g(same)e(professional)h(standards)0
1776 y(and)20 b(the)h(same)f(conserv)m(ativ)o(e)h(tec)o(hniques.)36
b(Muc)o(h)20 b(program)o(m)o(ing,)f(though,)i(do)q(es)g(not)g(ha)o(v)o
(e)f(this)0 1839 y(c)o(haracter.)h(If)c(a)g(video)h(game,)d(for)h
(example,)g(malfunctions,)g(no)h(liv)o(es)h(are)e(lost.)24
b(Reliability)19 b(is)e(still)0 1903 y(desirable,)f(of)f(course,)f(but)
h(other)g(c)o(haracteristics,)h(suc)o(h)e(as)g(creativit)o(y)k(in)e
(the)f(design)g(of)g(the)h(game,)0 1967 y(are)j(equally)j(imp)q(ortan)o
(t.)31 b(Unlik)o(e)22 b(bridge-building,)f(m)o(uc)o(h)c(computer)h
(programm)n(ing)g(is)i(done)f(b)o(y)0 2030 y(hobb)o(yists)f(for)g
(their)i(o)o(wn)d(p)q(ersonal)i(satisfaction,)h(and)e(professional)h
(liability)i(do)q(es)e(not)f(apply)h(in)0 2094 y(this)e(case.)100
2161 y(Among)f(professional)j(programm)n(ers)o(,)d(researc)o(h)h(w)o
(ork)h(is)h(in)g(some)d(w)o(a)o(ys)i(more)e(lik)o(e)k(hobb)o(yist)0
2224 y(programm)n(ing)14 b(than)h(lik)o(e)j(civil)h(engineering.)j
(Reliabili)q(t)o(y)d(ma)o(y)14 b(b)q(e)j(less)f(imp)q(ortan)o(t)f(than)
g(the)h(\015exi-)0 2288 y(bilit)o(y)h(to)e(explore)g(new)f(tec)o
(hniques.)21 b(\(Of)15 b(course,)f(reliability)j(is)e(itself)i(the)d
(topic)i(of)e(some)f(computer)0 2352 y(science)22 b(researc)o(h,)d(but)
i(ev)o(en)g(then)f(the)h(researc)o(h)e(cannot)i(pro)q(ceed)f(b)o(y)h
(in)o(v)o(oking)g(already-kno)o(wn)0 2415 y(metho)q(ds.\))f(In)15
b(particular,)g(arti\014cial)i(in)o(telligence)h(researc)o(h)13
b(is)i(c)o(haracterized)g(b)o(y)f(the)h(desire)g(to)g(ex-)0
2479 y(tend)e(the)g(limits)g(of)g(what)g(can)f(b)q(e)h(done)f(with)i(a)
f(computer;)e(the)i(researc)o(her)e(t)o(ypically)16 b(do)q(es)c(not)h
(ha)o(v)o(e)0 2543 y(a)18 b(b)q(o)q(dy)g(of)g(w)o(ell-understo)q(o)q
(d,)g(reliable)i(metho)q(ds)d(to)h(follo)o(w.)27 b(It)19
b(is)f(not)g(surprising,)f(then,)h(that)h(AI)0 2606 y(researc)o(hers)d
(ha)o(v)o(e)h(dev)o(elop)q(ed)h(programm)o(ing)d(to)q(ols)k(and)f
(approac)o(hes)e(quite)j(di\013eren)o(t)f(from)e(those)0
2670 y(of)h(soft)o(w)o(are)e(engineering.)963 2790 y(2)p
eop
%%Page: 3 3
3 2 bop 100 50 a Fb(In)11 b(a)h(researc)o(h)e(pro)s(ject,)i
Fa(the)h(go)m(al)h(of)h(a)e(pr)m(oje)m(ct)i(evolves)f(in)f(the)h(work)p
Fb(.)20 b(That)12 b(is,)h(the)f(programm)n(er)0 113 y(starts)19
b(with)i(a)f(broad)f(idea,)i(but)e(often)i(cannot)e(sp)q(ecify)i(the)g
(detailed)g(b)q(eha)o(vior)f(of)g(the)g(program)0 177
y(un)o(til)k(it's)f(written.)41 b(She)22 b(starts)g(with)i(a)e(partial)
i(understanding,)f(attempts)e(to)i(program)d(some)0 241
y(b)q(etter-understo)q(o)q(d)h(corner)g(of)h(the)g(pro)s(ject,)h(and)e
(then)h(in)o(teracts)g(with)h(the)f(resulting)h(program)0
304 y(to)c(see)g(in)g(what)g(direction)h(to)f(pro)q(ceed.)28
b(The)19 b(goals)g(are)f(c)o(hosen)g(b)o(y)g(the)h(same)e(p)q(erson)h
(doing)h(the)0 368 y(programm)n(ing.)100 455 y(If)k(the)h(goal)g(is)f
(not)h(precisely)g(kno)o(wn)f(in)h(adv)m(ance,)h(a)e(strict)h(top-do)o
(wn)e(design)h(pro)q(cess)g(is)0 518 y(imp)q(ossible.)31
b(Researc)o(hers)18 b(use)h Fa(inter)m(active)i(design)j
Fb(tec)o(hniques,)c(whic)o(h)g(ma)o(y)e(include)j(some)c(top-)0
582 y(do)o(wn)f(comp)q(onen)o(ts)e(but)j(also)g(ma)o(y)e(include)i(a)g
(b)q(ottom-up)e(approac)o(h)g(in)i(whic)o(h)g(the)g(w)o(ork)f(already)0
646 y(done)h(pro)o(vides)g(a)g(soft)o(w)o(are)g(to)q(olkit)k(that)d
(itself)h(suggests)e(new)g(higher-lev)o(el)i(mo)q(dules.)24
b(Instead)17 b(of)0 709 y(a)j(single)i(programm)n(ing)c(metho)q(dology)
i(lik)o(e)j(step)o(wise)d(re\014nemen)o(t,)f(the)i(researc)o(her)d
(uses)i Fa(e)m(cle)m(ctic)0 773 y(te)m(chniques)p Fb(.)100
860 y(Since)i(the)g(result)h(of)f(a)g(researc)o(h)e(pro)s(ject)i(is)h
(rarely)f(destined)g(to)h(b)q(e)f(used)f(directly)j(in)f(real)0
923 y(applications,)e(there)e(is)h Fa(no)h(danger)26
b Fb(and)18 b(no)h(liabili)q(t)o(y)l(.)33 b(Instead)19
b(of)g(follo)o(wing)i(conserv)m(ativ)o(e,)g(w)o(ell-)0
987 y(understo)q(o)q(d)c(patterns,)g(the)h(researc)o(her)e(is)i
(encouraged)e(to)i Fa(take)h(risks)k Fb(and)17 b(in)o(v)o(en)o(t)g(new)
h(metho)q(ds.)0 1051 y(Program)10 b(debugging)j(can)g(b)q(e)g(in)o
(teractiv)o(e;)j(other)d(mem)o(bers)d(of)k(the)f(researc)o(h)f(comm)n
(unit)o(y)f(are)i(often)0 1114 y(encouraged)g(to)i(try)f(out)g(the)h
(program,)d(not)i(only)h(disco)o(v)o(ering)f(co)q(ding)h(bugs)e(but)h
(also)h(con)o(tributing)0 1178 y(to)i(the)g(incremen)o(tal)f(design)g
(pro)q(cess)g(b)o(y)g(suggesting)g(impro)o(v)o(emen)n(ts.)100
1264 y(Researc)o(h)i(programs)e(are)j(rarely)h(written)g(b)o(y)g(large)
g(teams.)29 b(One)19 b(reason)g(is)h(that)g(y)o(ou)f(can't)0
1328 y(get)f(a)g(Ph.D.)g(for)f(writing)j(one)d(p)q(ercen)o(t)h(of)g(a)g
(program;)e(another)h(is)h(that)h(it's)f(hard)f(to)i(co)q(ordinate)0
1392 y(large)d(teams)f(without)h(a)g(precise,)g(formal)e(design)i(do)q
(cumen)o(t.)k(But)c(the)g(most)e(imp)q(ortan)o(t)h(reason)g(is)0
1455 y(that)j(large)g(teams)f(are)g(rarely)h(creativ)o(e.)26
b(Instead,)18 b Fa(individual)i(cr)m(e)m(ation)j Fb(is)18
b(required)g(to)g(solv)o(e)g(new)0 1519 y(problems.)100
1606 y(T)l(o)h(summar)o(ize,)g(there)h(m)o(ust)e(b)q(e)i(an)g
Fa(emphasis)j(on)e(pr)m(o)m(c)m(ess)27 b Fb(in)21 b(the)f(researc)o(h)e
(programm)o(ing)0 1669 y(en)o(vironmen)o(t.)34 b(The)21
b(resulting)h(program)c(ma)o(y)i(b)q(e)h(demonstrated)e(once)i(and)g
(nev)o(er)f(used)h(again,)0 1733 y(since)14 b(it)h(will)h(probably)d(b)
q(e)h(slo)o(w)f(and)g(clumsy)l(,)g(but)g(b)o(y)g(writing)i(it,)g(the)f
(researc)o(her)d(learns)i(new)h(ideas)0 1797 y(that)19
b(can)f(b)q(e)g(re\014ned)f(and)h(applied)h(later.)27
b(In)18 b(education,)h(to)q(o,)g(the)f(actual)h(programs)c(written)k(b)
o(y)0 1860 y(studen)o(ts)d(are)g(unimp)q(ortan)o(t;)e(the)j(studen)o
(t,)f(not)h(the)g(program,)c(is)k(the)g(\\pro)q(duct")f(of)h(the)g
(teac)o(hing)0 1924 y(and)23 b(learning)i(activiti)q(es.)47
b(W)l(e)25 b(should)e(not)h(b)q(e)h(surprised)d(if)j(pro)q(cess-cen)o
(tered)e(approac)o(hes)f(to)0 1988 y(programm)n(ing)14
b(turn)i(out)h(to)g(b)q(e)g(most)e(helpful)i(in)g(education.)100
2074 y(Ev)o(en)j(when)g(a)h(program)d(is)j(dev)o(elop)q(ed)h(for)e
(practical)i(use,)f(the)g(dev)o(elopmen)o(t)f(pro)q(cess)g(ma)o(y)0
2138 y(include)e(steps)e(that)h(are)f(more)f(lik)o(e)j(researc)o(h)d
(than)h(lik)o(e)i(building)g(bridges.)j(Consider)16 b(spreadsheet)0
2201 y(programs.)36 b(The)22 b(history)g(of)h(their)g(dev)o(elopmen)o
(t,)f(starting)h(from)d(VisiCalc)25 b(and)c(con)o(tin)o(uing)i(to)0
2265 y(curren)o(t)13 b(pro)q(ducts)h(lik)o(e)j(Lotus)d(1-2-3,)g(has)g
(b)q(een)h(a)g(classic)h(soft)o(w)o(are)e(engineering)h(e\013ort,)g
(with)h(large)0 2329 y(dev)o(elopmen)o(t)d(teams)f(and)i(precise)g
(goals.)21 b(But)15 b(the)f(\014rst)f(step,)i(starting)f(from)e
(nothing)i(and)g(getting)0 2392 y(to)k(VisiCalc,)j(to)q(ok)e(t)o(w)o(o)
f(p)q(eople,)h(one)f(of)g(whom)e(had)i(the)g(idea,)h(\\here)e(is)i(a)f
(new)g(thing)h(w)o(e)f(can)f(do)0 2456 y(with)g(a)g(computer,")d(and)h
(the)i(other)f(of)h(whom)d(w)o(as)i(a)g(virtuoso)h(computer)d(hac)o(k)o
(er,)h(trained)i(in)g(the)0 2520 y(MIT)f(researc)o(h)f(en)o(vironmen)o
(t.)100 2606 y(\(By)g(the)g(w)o(a)o(y)l(,)f(I)g(do)h(not)f(mean)f(to)i
(suggest)e(that)i(there)g(is)g(no)f(researc)o(h)f(among)f(civil)17
b(engineers!)0 2670 y(No)12 b(doubt)g(new)g(bridge)g(designs)f(gro)o(w)
g(out)i(of)f(a)g(dev)o(elopmen)o(t)f(metho)q(dology)g(m)o(uc)o(h)f(lik)
o(e)j(the)g(one)f(I'm)963 2790 y(3)p eop
%%Page: 4 4
4 3 bop 0 50 a Fb(describing)17 b(for)f(programm)n(ing)e(researc)o(h.)
20 b(The)d(con)o(trast)e(I)i(am)e(making)h(is)h(not)f(b)q(et)o(w)o(een)
g(program-)0 113 y(ming)f(and)g(civil)j(engineering,)e(but)g(b)q(et)o
(w)o(een)f(researc)o(h)f(of)i(an)o(y)f(kind)h(and)f(the)h(one-sided)f
(caricature)0 177 y(of)i(civil)i(engineering)e(that)g(pro)o(vides)f
(the)h(metaphor)d(for)i(the)h(soft)o(w)o(are)f(engineering)h(sc)o(ho)q
(ol.\))100 243 y(The)h(metaphor)e(of)i(bridge-building)h(p)q(o)o(w)o
(erfully)g(captures)f(the)g(spirit)h(of)g(the)g(soft)o(w)o(are)e(engi-)
0 307 y(neering)g(view)h(of)e(programm)o(ing.)k(As)c(an)h(equally)h(p)q
(o)o(w)o(erful)f(metaphor)d(for)i(this)i(alternativ)o(e)g(view,)0
370 y(I)f(suggest)e(considering)i(programm)n(ing)e(as)h(an)g(art)g
(form,)f(and)h(the)g(programm)o(er)d(as)j(an)h(artist.)0
496 y Fc(Ho)n(w)i(to)g(T)-5 b(rain)20 b(an)e(Artist)100
622 y Fb(I)12 b(am)e(discussing)i(the)h(nature)e(of)h(computer)e
(programm)o(ing)f(to)k(mak)o(e)e(a)h(p)q(oin)o(t)g(ab)q(out)g(the)h
(nature)0 685 y(of)18 b(computer)d(programm)n(ing)g(education.)25
b(There)17 b(are)g(t)o(w)o(o)g(v)o(ery)g(di\013eren)o(t)h(kinds)g(of)f
(programm)o(ing)0 749 y(activit)o(y)l(,)g(bridge-building)e(and)f(art.)
21 b(I)15 b(suggest)e(that)i(our)f(standard)f(computer)f(science)j
(curriculum)0 813 y(do)q(es)g(a)f(go)q(o)q(d)h(job)g(of)g(preparing)e
(studen)o(ts)h(for)h(the)f(\014rst)h(kind,)g(but)g(not)f(for)h(the)g
(second.)20 b(If)15 b(w)o(e)g(w)o(an)o(t)0 876 y(to)20
b(dev)o(elop)f(computer)e(programm)o(ing)f(artists,)21
b(w)o(e)e(should)f(explore)i(the)g(training)g(of)f(other)g(kinds)0
940 y(of)e(artists.)100 1006 y(\(Both)22 b(of)g(these)h(approac)o(hes)c
(are)j(extremes.)37 b(Some)20 b(readers)h(ma)o(y)f(feel)k(more)c
(comfortable)0 1070 y(with)e(an)e(in)o(termediate)h(p)q(osition,)h
(represen)o(table)e(in)h(metaphor)e(b)o(y)h(professions)g(suc)o(h)g(as)
g(medicine)0 1133 y(and)g(arc)o(hitecture)h(that)h(com)o(bine)d(the)i
(need)g(for)g(individual)i(creativit)o(y)g(with)f(careful)g(atten)o
(tion)g(to)0 1197 y(conserv)m(ativ)o(e)e(tec)o(hniques.)22
b(Still,)c(I)e(am)e(trying)i(to)g(call)h(atten)o(tion)g(to)f(an)f(im)o
(balance)g(in)h(our)e(curren)o(t)0 1261 y(educational)19
b(practice,)f(and)f(in)h(this)g(con)o(text)g(I)g(think)h(it)f(is)h(v)m
(aluable)g(to)f(sho)o(w)e(what)i(the)f(opp)q(osite)0
1324 y(extreme)d(w)o(ould)h(b)q(e)h(lik)o(e.)23 b(I)15
b(hop)q(e)g(that)g(ev)o(en)h(this)f(extreme)g(will)i(not)e(seem)f
(impractical,)i(ev)o(en)f(if)h(w)o(e)0 1388 y(ultimately)i(settle)g(on)
f(a)f(comprom)o(ise)f(view.\))100 1454 y(The)d(training)i(of)f(artists)
g(is)g(not)g(the)g(exact)h(opp)q(osite)f(of)g(the)g(training)h(of)f
(engineers;)h(art)e(sc)o(ho)q(ols)0 1517 y(do)j(not)g(merely)f(thro)o
(w)h(the)g(studen)o(t)f(in)o(to)i(a)f(ro)q(om)e(full)k(of)e(materials)g
(and)f(sa)o(y)l(,)h(\\go)g(to)g(it!")23 b(There)15 b(is)0
1581 y(a)i(discipline)h(to)f(art)g(also,)f(including)i(a)f(collection)i
(of)e(w)o(ell-understo)q(o)q(d,)f(conserv)m(ativ)o(e)i(tec)o(hniques.)
100 1647 y(I)c(suggest)f(that)h(the)g(training)h(of)f(an)g(artist)h
(can)e(b)q(e)i(divided)g(in)o(to)f(three)g(categories)h(of)f(learning.)
0 1711 y(There)k(is)g Fa(te)m(chnic)m(al)i(know)s(le)m(dge)p
Fb(,)f(suc)o(h)e(as)h(the)g(di\013erences)g(b)q(et)o(w)o(een)g(oil)h
(pain)o(ts)f(and)g(w)o(ater)f(colors,)0 1774 y(or)g(the)h(rules)g(of)g
(p)q(ersp)q(ectiv)o(e.)27 b(There)17 b(is)i Fa(te)m(chnic)m(al)h(skil)s
(l)p Fb(,)d(suc)o(h)g(as)g(the)h(abilit)o(y)j(to)d(dra)o(w)e(a)i
(straigh)o(t)0 1838 y(line)f(freehand)d(without)h(wiggling,)i(or)e(the)
g(abilit)o(y)j(to)d(stretc)o(h)f(a)h(can)o(v)m(as)g(ev)o(enly)h(b)q
(efore)f(pain)o(ting)g(on)0 1902 y(it.)31 b(And)18 b(there)h(is)h
Fa(inspir)m(ation)p Fb(,)i(seeing)d(the)h(w)o(orld)e(with)i(an)f
(artist's)g(ey)o(e)g(and)g(\014nding)f(something)0 1965
y(w)o(orth)e(pain)o(ting)h(at)g(all.)100 2031 y(All)h(three)f(of)f
(these)h(are)f(essen)o(tial)h(to)g(a)f(great)h(artist,)g(but)f
(inspiration)i(comes)c(\014rst!)22 b(I)16 b(am)f(not)0
2095 y(an)k(artist,)j(and)d(m)o(y)f(p)q(ersonal)i(exp)q(erience)h(of)e
(art)h(instruction)h(has)e(b)q(een)h(limited)h(to)f(a)g(couple)g(of)0
2158 y(in)o(tro)q(ductory)h(courses)e(when)i(I)g(w)o(as)f(in)h(high)g
(sc)o(ho)q(ol.)35 b(In)21 b(those)f(courses,)h(though,)g(the)g(teac)o
(hers)0 2222 y(made)15 b(a)i(big)g(fuss)f(ab)q(out)g(sta)o(ying)h(a)o
(w)o(a)o(y)f(from)f(tec)o(hnique.)22 b(\\Nev)o(er)17
b(mind)e(what)i(it)h(lo)q(oks)g(lik)o(e")g(w)o(as)0 2286
y(a)d(frequen)o(t)g(commen)n(t.)k(One)c(b)q(eginning)h(exercise)g(w)o
(as)e(to)h(dra)o(w)f(a)h(c)o(hair)g(with)h(our)e(ey)o(es)h(closed;)h
(the)0 2349 y(p)q(oin)o(t)c(w)o(as)e(to)h(o)o(v)o(ercome)e(our)h
(anxiet)o(y)i(ab)q(out)f(photographic)g(exactness)g(and)f(get)i(us)e
(to)h(enjo)o(y)g(mo)o(ving)0 2413 y(a)k(p)q(encil)h(o)o(v)o(er)f(pap)q
(er)f(in)h(broad)f(strok)o(es.)20 b(The)15 b(teac)o(hers)f(promised)f
(that)i(tec)o(hnical)i(instruction,)e(for)0 2477 y(those)h(of)h(us)f
(who)g(did)h(dev)o(elop)g(a)f(deep)q(er)h(in)o(terest)g(in)g(art,)f(w)o
(ould)g(come)f(later.)100 2543 y(Art)20 b(instruction)i(that)f(b)q
(egan)f(with)h(endless)g(practice)g(at)g(dra)o(wing)f(straigh)o(t)g
(lines)i(and)e(p)q(er-)0 2606 y(sp)q(ectiv)o(e)k(cub)q(es)e(w)o(ould)h
(c)o(hase)f(a)o(w)o(a)o(y)f(an)o(y)i(true)f(p)q(oten)o(tial)j(artists.)
40 b(A)o(t)23 b(b)q(est)g(it)h(w)o(ould)f(pro)q(duce)0
2670 y(\\commercial)e(artists,")i(a)f(classic)i(o)o(xymoron.)36
b(This)23 b(is)f(the)h(risk)f(w)o(e)g(run)f(in)i(computer)d(science)963
2790 y(4)p eop
%%Page: 5 5
5 4 bop 0 50 a Fb(education.)36 b(\(Commercial)20 b(artists)h(are)g(so)
q(cially)i(useful,)g(and)d(so)h(are)f(the)i(mem)n(b)q(ers)c(of)j(soft)o
(w)o(are)0 113 y(engineering)d(teams.)k(But)c(there)f(could)h(b)q(e)f
(no)g(commercial)f(art)h(without)h(true)f(creativ)o(e)h(artists)g(to)0
177 y(in)o(v)o(en)o(t)e(the)h(language)g(and)f(the)g(to)q(ols)i(of)f
(art.\))0 304 y Fc(The)i(Program)n(m)m(ing)d(Language)j(P)n(arado)n(x)
100 430 y Fb(Soft)o(w)o(are)f(engineers)h(b)q(eliev)o(e)j(in)e
(constructing)f(a)h(program)c(top-do)o(wn.)29 b(That)20
b(is,)g(they)g(start)0 494 y(with)g(the)f(broad)e(ideas)i(of)g(the)g
(program,)d(and)i(\014ll)j(in)e(the)g(details)h(later.)30
b(Y)l(ou)18 b(w)o(ould)h(think)g(their)0 557 y(design)g(to)q(ols)h(w)o
(ould)e(supp)q(ort)g(programm)o(ing)e(in)j(terms)f(of)h(broad)e(ideas.)
29 b(Y)l(et)20 b(the)f(programm)o(ing)0 621 y(languages)j(of)g(soft)o
(w)o(are)f(engineering,)i(of)f(whic)o(h)g(P)o(ascal)g(is)g(the)h
(protot)o(yp)q(e,)g(fo)q(cus)f(atten)o(tion)g(on)0 685
y(lo)o(w-lev)o(el)k(details.)45 b(They)24 b(use)f(explicit)k(storage)d
(allo)q(cation,)k(so)23 b(the)h(programm)o(er)c(m)o(ust)i(think)0
748 y(ab)q(out)h(the)h(size,)i(lo)q(cation,)h(and)22
b(exten)o(t)i(in)g(time)g(of)f(eac)o(h)g(data)g(aggregate.)43
b(They)23 b(use)g(strong)0 812 y(t)o(yping,)e(encouraging)d(the)i
(programm)o(er)c(to)k(concen)o(trate)f(on)g(the)h(precise)g(enco)q
(ding)f(of)h(sym)o(b)q(olic)0 876 y(information)f(rather)g(than)h(on)f
(the)i(meaning.)30 b(They)20 b(pro)o(vide)g(half)g(a)g(dozen)g(sp)q
(eci\014c,)h(hardwired)0 939 y(con)o(trol)e(structures,)f(emphasizing)g
(the)h(sequence)f(of)h(ev)o(en)o(ts)f(in)i(a)f(computation)e(rather)h
(than)h(the)0 1003 y(input-output)12 b(b)q(eha)o(vior)g(of)h
(functions.)20 b(Complex)12 b(data)g(structures)f(are)h(manipulated)g
(with)h(explicit)0 1067 y(p)q(oin)o(ters,)j(a)h(common)c(source)j(of)g
(confusion)h(and)e(bugs.)100 1133 y(Some)20 b(of)i(these)h(lo)o(w-lev)o
(el)h(prop)q(erties)e(of)g(soft)o(w)o(are)f(engineering)i(languages)f
(are)f(the)i(result)0 1197 y(of)c(their)h(early)g(history)f(as)g
(merely)f(an)h(abbreviation)h(for)e(mac)o(hine)g(language)h
(instructions.)30 b(But,)0 1261 y(for)19 b(example,)h(the)g(transition)
h(from)d(C)i(\(a)g(hac)o(k)o(er's)e(language\))i(to)g(C++)g(\(a)g(soft)
o(w)o(are)e(engineer's)0 1324 y(language\))12 b(has)f(brough)o(t)f
(more)g(atten)o(tion,)j(not)f(less,)g(to)g(these)g(lo)o(w-lev)o(el)h
(details.)22 b(The)12 b(impro)o(v)o(em)o(en)o(t)0 1388
y(is)19 b(that)h(in)f(C++)f(the)h(details)i(can)d(b)q(e)h(represen)o
(ted)e(more)g(rigorously)l(,)i(with)h(less)f(need)g(to)g(rely)g(on)0
1452 y Fa(ad)g(ho)m(c)h Fb(escap)q(e)d(hatc)o(hes)f(suc)o(h)f(as)h(t)o
(yp)q(e)h(casting.)100 1518 y(Soft)o(w)o(are)11 b(engineers)i
(recognize)g(the)g(inadequacy)g(of)g(their)g(programm)n(ing)e
(languages)h(as)g(design)0 1582 y(to)q(ols.)32 b(That)20
b(is)g(wh)o(y)f(they)h(dev)o(elop)g(their)g(programs)c(using)k
(\\pseudo)q(co)q(de,")f(essen)o(tially)j(English)0 1645
y(with)17 b(inden)o(tation)h(to)f(indicate)h(blo)q(c)o(k)f(structure.)k
(English)c(is)g(a)g(go)q(o)q(d)f(high-lev)o(el)j(design)d(language)0
1709 y(precisely)k(b)q(ecause)e(it)h(do)q(es)g(not)f(require)h(the)f
(programm)o(er)d(to)j(think)i(ab)q(out)e(memory)d(allo)q(cati)q(on,)0
1773 y(v)m(ariable)g(t)o(yp)q(es,)f(and)e(so)h(on.)21
b(The)13 b(di\016cult)o(y)i(is)e(that)h(if)h(one)e(really)i(designs)e
(in)h(English,)g(it's)g(p)q(ossible)0 1836 y(to)i(write)h(an)f
(instruction)h(that)f(has)g(no)f(ob)o(vious)h(translation)h(\(or)f(ev)o
(en)g(no)f(translation)i(at)g(all\))h(in)o(to)0 1900
y(an)o(y)j(programm)o(ing)e(language.)38 b(T)l(o)22 b(end)f(up)h(with)g
(useful)h(pseudo)q(co)q(de,)f(the)g(programm)o(er)c(m)o(ust)0
1964 y(actually)e(c)o(heat,)e(writing)g(the)g(program)d(men)o(tally)j
(in)g(something)e(lik)o(e)j(P)o(ascal)f(and)f(then)g(translating)0
2027 y(in)o(to)k(English)g(and)f(lea)o(ving)i(out)e(most)f(of)i(the)g
(details.)100 2094 y(There)g(are)h(programm)n(ing)e(languages)h(that)h
(don't)g(require)g(suc)o(h)f(extreme)g(atten)o(tion)i(to)f(lo)o(w-)0
2158 y(lev)o(el)i(details)g(as)d(the)i(ones)e(soft)o(w)o(are)g
(engineers)h(lo)o(v)o(e.)27 b(These)17 b(sym)o(b)q(olic)h(programm)o
(ing)d(languages)0 2221 y(can)21 b(readily)i(express)e(o)o(v)o(erall)h
(design)g(as)f(w)o(ell)i(as)f(details.)38 b(Wh)o(y)22
b(don't)f(the)h(soft)o(w)o(are)e(engineers)0 2285 y(c)o(ho)q(ose)d
(higher-lev)o(el)i(languages?)25 b(The)17 b(reason)g(is)h(that)g(they)g
(o)o(v)o(eremphasize)e(their)i(concern)f(with)0 2349
y(reliability)l(,)f(and)11 b(in)i(particular)f(with)i(p)q(ossible)f(lo)
o(w-lev)o(el)h(bugs.)19 b(F)l(or)11 b(example,)i(although)f(a)g
(language)0 2412 y(with)k(explicit)h(v)m(ariable)f(t)o(yping)f(forces)g
(the)f(programm)o(er)d(to)k(b)q(e)g(concerned)f(with)h(lo)o(w-lev)o(el)
i(details,)0 2476 y(it)h(also)f(ma)o(y)e(help)i(catc)o(h)f(bugs)g(in)h
(whic)o(h)f(an)g(incorrect)h(v)m(alue)h(is)f(assigned)f(to)h(a)f(v)m
(ariable.)100 2543 y(The)11 b(educational)h(cost)f(of)g(the)h(soft)o(w)
o(are)e(engineering)i(languages)e(is)i(that)g(m)o(uc)o(h)c(of)j(the)h
(time)f(and)0 2606 y(e\013ort)17 b(in)g(in)o(tro)q(ductory)g(courses)e
(go)q(es)i(in)o(to)g(syn)o(tactic)h(details,)g(and)e(in)o(to)h(suc)o(h)
f(lo)o(w-lev)o(el)i(seman)o(tic)0 2670 y(issues)j(as)h(binary)f
(represen)o(tation,)h(w)o(ord)f(length,)i(ASCI)q(I)f(co)q(des,)h(and)e
(p)q(oin)o(ter)h(arithmetic.)37 b(By)963 2790 y(5)p eop
%%Page: 6 6
6 5 bop 0 50 a Fb(con)o(trast,)18 b(an)f(in)o(tro)q(ductory)h(computer)
e(science)j(course)e(that)i(uses)e(Lisp)h([Ab)q(elson)h(and)e(Sussman,)
0 113 y(1985],)c(coming)g(from)e(the)j(arti\014cial)h(in)o(telligence)i
(researc)o(h)12 b(tradition,)i(can)g(fo)q(cus)f(atten)o(tion)h(on)f
(suc)o(h)0 177 y(high-lev)o(el)20 b(seman)o(tic)e(issues)h(as)f
(functional)i(programm)n(ing,)d(ob)s(ject-orien)o(ted)i(programm)n
(ing,)e(and)0 241 y(logic)i(programm)n(ing)14 b(metho)q(dologies,)j
(data)g(abstraction,)g(and)f(higher)h(lev)o(els)h(of)f(abstraction)g
(suc)o(h)0 304 y(as)f(the)g(design)g(and)g(implemen)o(tation)f(of)h(a)g
(programm)o(ing)d(language.)22 b(There)16 b(is)g(no)g(pseudo)q(co)q(de)
f(in)0 368 y(this)h(text;)i(a)d(Lisp)h(pro)q(cedure)f(written)i(in)f
(terms)e(of)i(subpro)q(cedures)d(that)k(ma)o(y)d(not)i(y)o(et)g(b)q(e)g
(de\014ned)0 432 y(pro)o(vides)g(the)h(righ)o(t)f(lev)o(el)j(of)d
(abstraction,)h(while)h(retaining)f(tec)o(hnical)h(rigor.)100
516 y(The)d(title)k(of)d(this)g(pap)q(er)g(is)g(\\Sym)o(b)q(olic)g
(Programm)n(ing)e(vs.)i(the)g(A.P)l(.)f(Curriculum.")20
b(It)d(could)0 579 y(equally)g(w)o(ell)g(ha)o(v)o(e)e(b)q(een)g
(\\High-Lev)o(el)i(Seman)o(tics)d(vs.)i(the)f(A.P)l(.)g(Curriculum")f
(or)h(\\Programm)o(ing)0 643 y(as)23 b(Art)g(vs.)g(the)g(A.P)l(.)g
(Curriculum.")40 b(F)l(or)22 b(m)o(y)g(purp)q(oses,)h(what's)f(imp)q
(ortan)o(t)g(ab)q(out)h(sym)o(b)q(olic)0 707 y(programm)n(ing)16
b(is)j(that)f(it)i(allo)o(ws)f(us)e(to)i(step)f(bac)o(k)g(from)e(tec)o
(hnical)k(details,)f(in)g(a)f(w)o(a)o(y)g(somewhat)0
770 y(analogous)d(to)h(blindfold)i(dra)o(wing)c(exercises.)23
b(There)15 b(are)g(tec)o(hnical)j(ideas)e(in)g(the)g(curriculum,)e(but)
0 834 y(they)23 b(are)f(high-lev)o(el)h(ideas,)h(and)d(they)i(don't)f
(deaden)f(the)i(hac)o(k)o(er)e(spirit)i(\(that)g(is,)h(the)e(artistic)0
898 y(spirit\).)27 b(In)17 b(fact,)i(as)e(an)g(in)o(tro)q(ductory)h
(college-lev)o(el)j(course,)c(I)g(think)i(the)f(Ab)q(elson)g(and)f
(Sussman)0 961 y(course)f(w)o(orks)h(b)q(etter)h(than)e(the)i
(traditional)h(curriculum)d(ev)o(en)h(from)f(a)h(bridge-building)h(p)q
(ersp)q(ec-)0 1025 y(tiv)o(e,)k(b)q(ecause)d(ev)o(en)h(soft)o(w)o(are)e
(engineers)i(should)f(start)g(with)i(the)f(big)g(ideas.)31
b(Data)20 b(abstraction,)0 1089 y(for)15 b(example,)g(is)h(part)f(of)g
(the)h(structured)e(programm)n(ing)f(approac)o(h)g(as)i(w)o(ell)i(as)e
(the)h(arti\014cial)h(in)o(tel-)0 1152 y(ligence)h(approac)o(h)d(to)i
(program)c(dev)o(elopmen)o(t.)100 1236 y(I)18 b(w)o(an)o(t)g(to)h
(address)e(a)i(p)q(ossible)h(misunderstanding)c(of)j(the)g(p)q(oin)o(t)
g(I'm)e(making.)28 b(The)19 b(c)o(hoice)0 1300 y(of)g(program)o(m)o
(ing)d(language)i(is)h(not)f(the)h(cen)o(tral)g(issue)f(in)h(designing)
g(an)f(educational)h(pro)q(cess.)27 b(It)0 1364 y(w)o(ould)19
b(b)q(e)g(p)q(ossible)h(to)g(teac)o(h)f(a)g(soft)o(w)o(are)f
(engineering)i(curriculum)e(in)h(an)o(y)g(language,)h(including)0
1427 y(Lisp.)i(\(Indeed,)14 b(these)g(curricula)h(generally)h(mak)o(e)d
(a)h(p)q(oin)o(t)h(of)f(not)h(sp)q(ecifying)h(a)e(language,)h(and)f
(the)0 1491 y(authors)j(of)i(the)g(curricula)g(resp)q(ond)f(to)h
(accusations)f(of)h(language)g(c)o(hauvinism)f(b)o(y)g(p)q(oin)o(ting)i
(that)0 1555 y(out.\))h(Suc)o(h)13 b(a)h(curriculum)e(w)o(ould)i(b)q(e)
g(just)f(as)h(bad)f(as)g(the)h(same)e(course)h(taugh)o(t)h(in)g(P)o
(ascal.)21 b(Rather,)0 1618 y(m)o(y)13 b(p)q(oin)o(t)j(is)f(that)h(an)e
(examination)h(of)g(the)g(programm)o(ing)d(languages)j(that)g(the)g
(adheren)o(ts)e(of)j(eac)o(h)0 1682 y(approac)o(h)e(actually)19
b(do)c(c)o(ho)q(ose)h(sheds)f(ligh)o(t)j(on)e(ho)o(w)f(these)h(approac)
o(hes)e(w)o(ork)i(out)g(in)h(educational)0 1746 y(practice.)28
b(The)18 b(principle)i(of)f(top-do)o(wn)e(design)h(sounds)f(great)h
(when)g(expressed)f(in)i(the)g(abstract,)0 1809 y(but)e(the)h(real)g
(teac)o(hing)g(done)f(in)h(its)h(name)d(to)q(o)i(easily)h(gets)f(b)q
(ogged)f(do)o(wn)g(in)h(lo)o(w-lev)o(el)i(tec)o(hnical)0
1873 y(details.)0 2017 y Fc(What)f(High)h(Sc)n(ho)r(ol)f(Studen)n(ts)g
(Need)100 2161 y Fb(In)g(the)h(United)h(States)f(at)g(presen)o(t,)f
(high)h(sc)o(ho)q(ol)f(computer)f(science)j(education)f(is)g(strongly)0
2224 y(a\013ected)e(b)o(y)f(the)h(acciden)o(tal)h(fact)f(that)g(there)g
(is)g(no)f(o\016cial)i(secondary)d(curriculum,)h(but)g(there)g
Fa(is)0 2288 y Fb(an)g(o\016cial)h(college-lev)o(el)j(curriculum)16
b(for)h(secondary)f(sc)o(ho)q(ols)h(in)h(the)f(form)f(of)h(the)h
(College)h(Board)0 2352 y(Adv)m(anced)12 b(Placemen)o(t)g(exam.)19
b(The)12 b(result)h(is)f(that)h(most)e(high)h(sc)o(ho)q(ol)g(studen)o
(ts)f(who)h(are)g(in)o(terested)0 2415 y(in)18 b(programm)n(ing)d(are)i
(no)o(w)g(taugh)o(t)g(from)e(a)i(mo)q(del)g(that)h(w)o(as)e(designed)i
(\(and)f(badly)g(designed,)g(as)0 2479 y(I)k(ha)o(v)o(e)e(argued)h(ab)q
(o)o(v)o(e,)g(at)h(that\))g(for)g(a)f(college)i(p)q(opulation.)35
b(The)20 b(problem)f(is)i(not)g(the)f(College)0 2543
y(Board's)15 b(fault;)i(a)f(lac)o(k)g(of)g(creativ)o(e)h(leadership)f
(at)g(the)h(secondary)d(lev)o(el)k(has)d(allo)o(w)o(ed)i(what)f(should)
0 2606 y(b)q(e)h(an)f(adv)m(anced)g(curriculum)f(for)h(a)g(minorit)o(y)
g(of)g(studen)o(ts)g(to)g(set)h(the)g(tone)f(for)g(all)i(programm)o
(ing)0 2670 y(instruction.)963 2790 y(6)p eop
%%Page: 7 7
7 6 bop 100 50 a Fb(A)o(t)21 b(the)g(college)h(lev)o(el,)i(where)c(w)o
(e)g(are)g(engaged)g(in)i(the)f(training)g(of)g(professional)f
(program-)0 113 y(mers,)f(the)h(soft)o(w)o(are)g(engineering)g(approac)
o(h)f(is)i(sensible,)g(ev)o(en)g(if)g(not)f(the)h(whole)g(story)l(.)32
b(I)21 b(ha)o(v)o(e)0 177 y(not)f(suggested)f(abandoning)g(concerns)g
(ab)q(out)h(professional)g(liabili)q(t)o(y)l(,)j(conserv)m(ativ)o(e)e
(design,)g(and)0 241 y(team)o(w)o(ork)c(in)i(the)g(con)o(text)h(of)f
(programm)n(ing)e(pro)s(jects)h(in)i(whic)o(h)e(liv)o(es)j(or)d(prop)q
(ert)o(y)g(are)h(at)g(risk.)0 304 y(Rather,)f(I)h(ha)o(v)o(e)f(argued)g
(that)h(soft)o(w)o(are)e(engineering)j(concerns)d(should)h(b)q(e)h
(balanced)g(b)o(y)f(a)h(liv)o(ely)0 368 y(sense)13 b(of)i(the)f
(artistic,)i(creativ)o(e)f(side)g(of)f(professional)g(programm)o(ing,)e
(and)h(that)i(large)f(ideas)h(should)0 432 y(come)g(b)q(efore)i(tec)o
(hnical)h(details)g(in)f(the)g(curriculum.)100 501 y(A)o(t)24
b(the)h(high)f(sc)o(ho)q(ol)g(lev)o(el,)k(I)d(w)o(an)o(t)e(to)h(argue)g
(for)g(a)g(more)e(extreme)i(view.)46 b(High)25 b(sc)o(ho)q(ol)0
564 y(studen)o(ts)14 b(are)h(not)g(ab)q(out)g(to)g(en)o(ter)g(the)g
(job)g(mark)o(et)e(as)i(professional)g(programm)n(ers.)j(Rather,)d
(they)0 628 y(are)h(exploring)i(a)e(p)q(ossible)i(in)o(terest)f(in)g
(programm)n(ing,)d(and)i(preparing)f(for)i(further)e(instruction)j(at)0
692 y(the)e(college)i(lev)o(el.)23 b Fa(They)18 b(c)m(an)g(le)m(arn)g
(discipline)g(later)p Fb(.)k(No)o(w)16 b(they)g(need)f(a)h(kind)h(of)f
(appren)o(ticeship:)0 755 y(real)e(tasks)g(to)g(w)o(ork)f(on,)h(the)g
(freedom)d(to)j(exp)q(erimen)o(t)g(and)f(to)h(risk)g(failure,)h(but)e
(in)i(an)e(en)o(vironmen)o(t)0 819 y(that)19 b(mo)q(dels)f(resp)q(ect)g
(for)g(commitmen)n(t.)26 b(They)18 b(need)g(teac)o(hers)g(who)g(serv)o
(e)g(as)g(exp)q(erts)h(a)o(v)m(ailable)0 883 y(for)g(consultation,)i
(rather)e(than)g(lecture)i(on)e(tec)o(hnical)i(kno)o(wledge)f(or)f(set)
h(exercises)g(of)g(tec)o(hnical)0 946 y(skills.)100 1015
y(\(I)i(am)e(concerned)h(here)g(with)h(the)g(needs)f(of)h(those)g
(studen)o(ts)e(who)h(are)h(in)o(terested)g(in)g(com-)0
1079 y(puter)17 b(programm)n(ing.)23 b(The)18 b(design)f(of)h(a)g
(\\computer)d(literacy")20 b(curriculum)c(for)h(all)i(studen)o(ts)e(is)
h(a)0 1143 y(separate)h(issue.)32 b(I)20 b(ha)o(v)o(e)f(argued)g
(elsewhere)h(that)g(it)i(is)e(really)i(a)d(non-issue;)i(studen)o(ts)d
(should)i(b)q(e)0 1206 y(quite)e(comfortable)e(with)i(w)o(ord)e(pro)q
(cessors)f(and)i(other)f(utilit)o(y)k(programs)14 b(long)j(b)q(efore)g
(they)g(lea)o(v)o(e)0 1270 y(elemen)o(tary)c(sc)o(ho)q(ol.)21
b(The)13 b(widely)i(p)q(erceiv)o(ed)f(need)g(for)f(a)g(secondary)f(sc)o
(ho)q(ol)i(\\literacy")h(curriculum)0 1334 y(is)i(a)g(temp)q(orary)e
(result)h(of)h(the)g(fact)g(that)g(computers)e(ha)o(v)o(e)h(only)h
(recen)o(tly)g(en)o(tered)f(the)h(sc)o(ho)q(ols)f(in)0
1397 y(signi\014can)o(t)h(n)o(um)o(b)q(ers)o(.\))100
1466 y(Not)g(ev)o(ery)g(teenager)g(w)o(an)o(ts)f(to)h(program)d
(computers,)g(but)j(man)o(y)e(do.)23 b(Computers)14 b(are)j(p)q(o)o(w-)
0 1530 y(erful,)22 b(resp)q(onsiv)o(e)e(to)q(ols.)36
b(Apart)20 b(from)f(reading,)i(few)g(in)o(tellectual)j(skills)f(app)q
(eal)f(so)e(strongly)h(to)0 1593 y(y)o(oung)13 b(p)q(eople,)i(esp)q
(ecially)i(not)d(formal,)g(tec)o(hnical)h(ones.)21 b(W)l(e)14
b(educators)f(are)h(luc)o(ky)h(that)f(computer)0 1657
y(programm)n(ing)k(ranks)h(almost)g(as)g(high)h(as)f(sk)m(ateb)q
(oarding)h(and)f(pla)o(ying)i(the)f(guitar!)32 b(W)l(e)20
b(should)0 1721 y(teac)o(h)e(programm)o(ing)d(in)k(a)g(w)o(a)o(y)e
(that)i(n)o(urtures)d(this)j(excitemen)o(t,)g(not)f(turning)g(it)i(in)o
(to)f(one)f(more)0 1784 y(academic)e(sub)s(ject)g(full)i(of)f(facts)f
(to)h(b)q(e)g(paraded)e(on)h(exams.)k(Instead,)c(high)h(sc)o(ho)q(ol)f
(programm)o(ing)0 1848 y(instruction)21 b(should)e(b)q(e)h(pro)s
(ject-based,)g(with)g(pro)s(jects)g(c)o(hosen)f(b)o(y)g(the)i(studen)o
(ts)d(themselv)o(es)h(as)0 1912 y(m)o(uc)o(h)11 b(as)j(p)q(ossible.)22
b(The)14 b(A.P)l(.)g(curriculum)f(is)h(particularly)i(bad,)e(b)q
(ecause)f(of)i(its)g(emphasis)d(on)i(con-)0 1975 y(serv)m(ativ)o(e)j
(tec)o(hnique)g(and)e(corresp)q(ondingly)h(lo)o(w-lev)o(el)i(details,)g
(but)d Fa(any)22 b Fb(\014xed)16 b(curriculum)e(w)o(ould)0
2039 y(in)o(terfere.)100 2108 y(Of)f(course)e(the)j(studen)o(t's)d
(appren)o(ticeship)i(can't)f(b)q(egin)i(without)g(an)e(initial)17
b(p)q(erio)q(d)c(dev)o(oted)g(to)0 2172 y(learning)j(the)g(rules)g(of)f
(a)h(programm)n(ing)e(language.)21 b(But)16 b(I)g(think)g(w)o(e)g
(should)f(lo)q(ok)i(up)q(on)e(this)h(early)0 2235 y(w)o(ork)c(as)g(an)h
(unfortunate)f(necessit)o(y)l(,)h(rather)f(than)h(as)f(the)h(fo)q(cus)f
(of)h(our)f(curriculum,)g(and)g(w)o(e)h(should)0 2299
y(try)k(to)h(get)g(it)g(o)o(v)o(er)f(with)h(smo)q(othly)f(and)f(quic)o
(kly)l(.*)26 b(T)l(o)17 b(this)h(end,)f(w)o(e)g(should)g(c)o(ho)q(ose)f
(a)h(high-lev)o(el)0 2363 y(language)h(suc)o(h)g(as)g(Lisp)g(to)h
(minimize)f(the)h(time)f(sp)q(en)o(t)g(on)g(syn)o(tax)g(and)g(mac)o
(hine)f(represen)o(tation)0 2426 y(issues.)k(\(Ab)q(elson)c(and)e
(Sussman)d(use)j(the)h(Sc)o(heme)e(dialect)k(of)d(Lisp)h(in)h(their)f
(text;)h(for)e(high)h(sc)o(ho)q(ol)p 0 2487 600 2 v 50
2543 a(*)25 b(In)19 b(practice)i(the)f(division)h(in)o(to)f(stages)g
(is)g(not)g(so)f(clear-cut.)32 b(Studen)o(ts)18 b(can)i(b)q(e)g(w)o
(orking)f(on)0 2606 y(indep)q(enden)o(t)c(pro)s(jects)g(in)g(parallel)i
(with)f(formal)f(instruction)h(in)f(the)h(language.)21
b(Still,)d(the)e(t)o(w)o(o)e(are)0 2670 y(v)o(ery)h(di\013eren)o(t)g
(in)h(st)o(yle,)g(and)e(will)k(probably)d(b)q(e)g(exp)q(erienced)h(b)o
(y)f(studen)o(ts)f(as)g(separate)h(activitie)q(s.)963
2790 y(7)p eop
%%Page: 8 8
8 7 bop 0 50 a Fb(studen)o(ts)13 b(I)h(prefer)f(the)h(Logo)g(dialect,)i
(whic)o(h)e(pro)o(vides)f(man)o(y)f(of)i(the)g(same)e(high-lev)o(el)k
(mec)o(hanism)o(s)0 113 y(along)g(with)h(a)f(user)g(in)o(terface)g
(that)h(is)f(less)h(in)o(timidating)g(to)f(a)g(b)q(eginner.\))23
b(I)16 b(also)g(lik)o(e)i(to)f(minimize)0 177 y(formal)g(lectures,)i
(relying)h(instead)f(on)f(a)g(self-paced)g(format)f(and)h(sc)o
(heduling)g(adv)m(anced)g(studen)o(ts)0 241 y(in)o(to)f(the)g(lab)g(at)
g(the)f(same)f(time)i(as)f(the)h(b)q(eginners)f(to)h(allo)o(w)g(for)g
(informal)f(one-on-one)f(tutoring.)100 307 y(In)f(this)h(early)h
(stage,)f(I)g(ha)o(v)o(e)f(come)f(to)i(think)h(that)f(debugging)f
(\(and)h(an)o(tibugging\))g(should)f Fa(not)0 371 y Fb(b)q(e)20
b(a)g(large)g(part)f(of)h(the)g(studen)o(t's)e(exp)q(erience.)33
b(It's)20 b(true)f(that)h(debugging)g(is)g(excellen)o(t)i(men)o(tal)0
434 y(exercise,)h(but)e(real)g(b)q(eginners)g(tend)g(to)g(mak)o(e)f
(unin)o(teresting)h(mistak)o(es.)34 b(Sp)q(ending)21
b(15)g(min)o(utes)0 498 y(struggling)15 b(with)g(an)f(unnoticed)h
(punctuation)f(error)f(just)i(teac)o(hes)f(frustration,)g(and)g(so)g(I)
h(will)i(often)0 562 y(debug)23 b(a)g(b)q(eginner's)g(program)e(m)o
(yself)i(and)g(encourage)f(the)i(studen)o(t)f(to)h(get)g(on)f(with)i
(the)f(big)0 625 y(idea)f(that)g(the)f(bug)g(in)o(terrupted.)39
b(Only)23 b(if)g(the)g(bug)e(seems)g(to)h(indicate)i(a)f(serious)f
(conceptual)0 689 y(misunderstanding)14 b(do)i(I)h(mak)o(e)e(an)o(y)h
(fuss)g(ab)q(out)g(it.)100 755 y(The)23 b(second)h(stage)g(of)g(the)g
(studen)o(t's)f(appren)o(ticeship)h(fo)q(cuses)f(on)h(pro)s(jects.)44
b(This)24 b(e\013ort)0 819 y(should)18 b(b)q(e)h(supp)q(orted)f
(structurally)i(with)f(a)g(curriculum-free)e(lab)i(course)f(that)h(can)
g(b)q(e)g(rep)q(eated)0 882 y(for)h(credit;)k(in)o(terested)d(studen)o
(ts)f(ma)o(y)f(enroll)j(in)f(the)g(lab)g(throughout)f(half)h(a)g(dozen)
f(semesters.)0 946 y(\(One)g(problem)f(with)i(the)g(\\bac)o(k)f(to)h
(basics")f(mo)o(v)o(emen)n(t)e(is)j(that)g(it)g(has)f(encouraged)f(a)i
(uniform)0 1010 y(set)c(of)f(courses)g(for)g(all)i(studen)o(ts.)j(One)
16 b(semester)f(of)h(programm)o(ing)e(is)j(more)d(than)j(man)o(y)d
(studen)o(ts)0 1073 y(need,)20 b(but)g(not)f(nearly)i(enough)d(for)i
(man)o(y)e(others.\))31 b(If)20 b(the)g(sc)o(ho)q(ol)g(will)i(allo)o(w)
f(the)f(course)f(to)h(b)q(e)0 1137 y(taugh)o(t)d(without)h(assigning)f
(grades,)f(so)h(m)o(uc)o(h)e(the)i(b)q(etter.)25 b(The)17
b(teac)o(her's)f(role)i(at)g(the)f(b)q(eginning)0 1201
y(of)d(the)g(semester)e(is)i(to)g(ensure)e(that)i(eac)o(h)g(studen)o(t)
e(tak)o(es)i(on)f(a)h(pro)s(ject)f(that)i(is)f(c)o(hallenging)h(but)e
(not)0 1264 y(o)o(v)o(erwhelming;)j(later,)i(the)f(teac)o(her)g(serv)o
(es)f(as)h(a)g(consultan)o(t,)g(lo)q(oking)i(o)o(v)o(er)d(shoulders)g
(when)h(that)0 1328 y(feels)g(appropriate.)k(It)c(is)g(also)g
(appropriate)e(to)i(mak)o(e)e(concrete)h(suggestions)g(ab)q(out)g
(programm)o(ing)0 1392 y(st)o(yle,)h(p)q(oin)o(ting)f(out)g(ho)o(w)e(a)
i(particular)g(studen)o(t)f(program)d(could)k(b)q(e)g(organized)f(more)
f(clearly)l(,)j(but)0 1455 y(I)g(think)g(teac)o(hers)f(should)g(not)g
(insist)i(on)e(univ)o(ersal)h(adherence)f(to)g(broad)g
Fa(a)i(priori)23 b Fb(rules.)100 1522 y(F)l(or)d(most)h(high)h(sc)o(ho)
q(ol)g(studen)o(ts,)g(this)h(second)e(stage)h(can)f(last)i(through)e
(the)h(senior)g(y)o(ear.)0 1585 y(If)d(the)f(programm)o(ing)e(pro)s
(jects)i(are)g(selected)h(w)o(ell,)h(eac)o(h)e(studen)o(t)g(will)j
(learn)e(certain)g(univ)o(ersally)0 1649 y(imp)q(ortan)o(t)i(ideas)h
(\(suc)o(h)f(as)g(recursion\),)i(and)e(also)h(eac)o(h)f(studen)o(t)g
(will)k(learn)c(man)o(y)f(other)i(ideas)0 1713 y(that)17
b(happ)q(en)g(to)g(b)q(e)g(relev)m(an)o(t)h(to)f(his)g(or)g(her)f(pro)s
(jects)h(but)f(are)h(di\013eren)o(t)g(from)e(another)h(studen)o(t's)0
1776 y(learning.)22 b(This)15 b(pro)s(ject)f(lab)q(oratory)h(will)i(b)q
(e)e(excellen)o(t)h(preparation)e(for)g(a)h(more)d(rigorously)j(struc-)
0 1840 y(tured)22 b(computer)e(science)j(curriculum)e(in)i(college.)42
b(Some)21 b(studen)o(ts,)h(ho)o(w)o(ev)o(er,)h(will)i(ev)o(en)o(tually)
0 1904 y(get)d(tired)f(of)h(pro)s(jects)e(and)h(will)i(ask)e(for)g
(more)f(formal)g(instruction)i(ab)q(out)f(meatier)f(ideas.)36
b(F)l(or)0 1967 y(them,)14 b(a)h(third-stage)f(course)g(can)h(in)o(tro)
q(duce)g(computer)d(science)k(topics)g(suc)o(h)d(as)i(automata)e
(theory)0 2031 y(or)k(compiler)g(construction;)h(alternativ)o(ely)l(,)i
(a)e(true)f(Adv)m(anced)h(Placemen)o(t)f(course)f(can)i(b)q(e)g
(o\013ered)0 2095 y(using)e(the)h(Ab)q(elson)g(and)f(Sussman)e(text.)
100 2161 y(I)e(ha)o(v)o(e)f(written)j(a)e(series)g(of)g(three)h(texts,)
g(using)f(Logo,)h(to)g(supp)q(ort)e(these)h(three)g(stages)g([Harv)o
(ey)l(,)0 2224 y(1985,)19 b(1986,)h(1987].)30 b(The)19
b(\014rst)f(\(in)o(tro)q(ducing)i(the)g(language\))f(and)g(the)g(third)
h(\(computer)d(science)0 2288 y(topics\))k(are)e(mean)o(t)g(to)h(b)q(e)
g(read)f(sequen)o(tially)l(,)k(lik)o(e)f(most)c(texts.)33
b(The)20 b(second)f(is)h(a)g(collection)j(of)0 2352 y(pro)s(jects,)14
b(in)h(no)f(particular)h(order,)f(in)o(tended)g(to)h(serv)o(e)f(as)g
(an)g(inspiration)h(and)f(to)h(pro)o(vide)f(starting)0
2415 y(p)q(oin)o(ts)19 b(for)f(studen)o(t)g(pro)s(jects)f(rather)h
(than)g(to)h(b)q(e)g(read)f(from)e(co)o(v)o(er)i(to)h(co)o(v)o(er.)27
b(A)19 b(series)f(lik)o(e)i(this)0 2479 y(has)15 b(the)h(adv)m(an)o
(tage)f(of)h(a)g(uniform)e(st)o(yle)i(and)f(the)h(abilit)o(y)i(to)e
(rely)h(on)e(earlier)i(learning)f(in)g(the)g(later)0
2543 y(v)o(olumes,)d(but)h(alternativ)o(es)i(are)e(a)o(v)m(ailable)j
(for)d(eac)o(h)g(of)g(the)h(three)f(stages.)21 b(In)14
b(particular,)h(there)f(are)0 2606 y(man)o(y)i(collections)k(of)e
(programm)o(ing)d(pro)s(jects)i(a)o(v)m(ailable,)j(and)e(the)g
(computer)d(lab)k(should)e(ha)o(v)o(e)g(a)0 2670 y(wide)12
b(assortmen)o(t.)18 b(In)12 b(the)g(third)g(stage,)g(ev)o(en)g(a)g(P)o
(ascal-based)e(text)j(co)o(v)o(ering)f(the)g(o\016cial)h(Adv)m(anced)
963 2790 y(8)p eop
%%Page: 9 9
9 8 bop 0 50 a Fb(Placemen)o(t)19 b(curriculum)f(w)o(ouldn't)h(b)q(e)h
(to)q(o)g(harmful;)f(m)o(y)f(concern)h(is)h(that)g(that)g(curriculum)e
(has)0 113 y(b)q(ecome,)d(b)o(y)i(default,)g(the)g(only)g(programm)n
(ing)d(exp)q(erience)k(for)e(man)o(y)f(high)i(sc)o(ho)q(ol)f(studen)o
(ts.)0 237 y Fc(Conclusion)100 360 y Fb(T)l(o)i(summ)o(ar)o(ize,)f(I)h
(am)f(presen)o(ting)g(for)h(computer)e(science)j(an)e(argumen)o(t)f
(that)i(has)g(come)f(up)0 424 y(b)q(efore)h(in)h(man)o(y)d(other)i
(areas)g(of)g(science)h(and)f(mathematics)e(education.)27
b(Our)18 b(o\016cial)h(curricula,)0 488 y(I)g(think,)i(run)d(the)i
(same)d(risk)j(as)f(the)g(o\016cial)i(ph)o(ysics)d(curriculum)g(that)i
(caused)e(Alb)q(ert)j(Einstein)0 551 y(to)h(drop)e(out)i(of)g(sc)o(ho)q
(ol.)37 b(Suc)o(h)20 b(rigidit)o(y)k(w)o(ould)d(b)q(e)h(particularly)h
(regrettable)f(in)g(a)g(sub)s(ject)f(lik)o(e)0 615 y(computer)14
b(programm)n(ing,)g(whic)o(h)i(lends)g(itself)i(so)e(readily)h(to)f(a)g
(\015exible,)i(exp)q(erimen)o(tal)e(approac)o(h.)0 738
y Fc(References)0 897 y Fb(Ab)q(elson,)25 b(Harold,)g(and)e(Gerald)h
(Ja)o(y)e(Sussman.)39 b Fa(Structur)m(e)23 b(and)i(Interpr)m(etation)g
(of)f(Computer)100 960 y(Pr)m(o)m(gr)m(ams)p Fb(,)18
b(MIT)e(Press,)g(1985.)0 1059 y(Co)q(op)q(er,)g(Doug,)g(and)g(Mic)o
(hael)i(Clancy)l(.)k Fa(Oh!)i(Pasc)m(al!)30 b Fb(Second)16
b(Edition,)h(Norton,)f(1985.)0 1157 y(Harv)o(ey)l(,)g(Brian.)23
b Fa(Computer)17 b(Scienc)m(e)h(L)m(o)m(go)i(Style)p
Fb(,)c(MIT)g(Press.)100 1221 y(V)l(olume)g(1:)21 b Fa(Interme)m(diate)e
(Pr)m(o)m(gr)m(amming)p Fb(,)f(1985.)100 1285 y(V)l(olume)e(2:)21
b Fa(Pr)m(oje)m(cts,)f(Styles,)e(and)g(T)l(e)m(chniques)p
Fb(,)f(1986.)100 1348 y(V)l(olume)f(3:)21 b Fa(A)m(dvanc)m(e)m(d)g(T)l
(opics)p Fb(,)c(1987.)963 2790 y(9)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF