%!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 DI<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>II<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 DI<0007F008003FFC1800FC 073801F001B803C000F8078000780F0000381E0000183E0000183C0000187C0000087C00 000878000008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800 0000780000007C0000087C0000083C0000083E0000081E0000100F0000100780002003C0 004001F0018000FC0700003FFE000007F0001D227DA124>IIII<0007F008003FFC1800FC073801F0 01B803C000F8078000780F0000381E0000183E0000183C0000187C0000087C0000087800 0008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8003FFF7800 3FFF7C0000F87C0000F83C0000F83E0000F81E0000F80F0000F8078000F803C000F801F0 017800FC0638003FFC180007F00820227DA127>III<0FFFF00FFFF0001F00001F0000 1F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0000 1F00001F00001F00001F00001F00001F00001F00001F00001F00301F00781F00FC1F00FC 1F00FC1E00783E00403C003070000FC00014227EA11A>I76 DII<000FF00000781E0000E0070003C003C00780 01E00F0000F01E0000781E0000783C00003C3C00003C7C00003E7800001E7800001EF800 001FF800001FF800001FF800001FF800001FF800001FF800001FF800001F7800001E7C00 003E7C00003E3C00003C3E00007C1E0000781E0000780F0000F0078001E003C003C000E0 070000781E00000FF00020227DA127>II82 D<03F8100FFE301E07703801F0780070700030F00030F0 0010F00010F00010F80000F800007E00007FC0003FFC001FFF000FFFC007FFE000FFE000 0FF00001F00000F80000F8000078800078800078800078C00070C00070E000E0F001E0FE 03C0C7FF8080FE0015227DA11C>I<7FFFFFFC7FFFFFFC7807C03C6007C00C4007C00440 07C004C007C006C007C0068007C0028007C0028007C0028007C0020007C0000007C00000 07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000 07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00003 FFFF8003FFFF801F227EA124>IIII89 D91 D<080210042008200840104010 8020802080208020B82EFC3FFC3F7C1F380E100F7AA219>II<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>IIII I<3FFFC0380780300F80200F00601E00403E00403C0040780000F80000F00001E00003C0 0007C0400780400F00401F00C01E00803C00807C0180780780FFFF8012157F9416>I124 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 DII72 DI 76 D78 D80 D82 D<01FE060007FFCE001FFFFE003F01FE003C007E0078003E0078001E00F8000E00F8000E 00F8000E00FC000000FF000000FFF000007FFF80003FFFE0003FFFF8001FFFFC0007FFFE 0003FFFF00003FFF000001FF0000003F8000001F8000001F80E0000F80E0000F80E0000F 80F0000F00F0001F00FC001E00FF807C00FFFFF800E7FFF000C07FC00019227DA120>I< 7FFFFFFFC07FFFFFFFC07FFFFFFFC07E03F80FC07C03F807C07803F803C07003F801C0F0 03F801E0F003F801E0E003F800E0E003F800E0E003F800E0E003F800E00003F800000003 F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800 000003F8000003FFFFF80003FFFFF80003FFFFF80023217EA028>I87 D<07FE00001FFF80003F07E0003F03 F0003F01F0003F01F8001E01F8000001F8000001F80000FFF80007FFF8001FE1F8003F01 F8007E01F800FC01F800FC01F800FC01F800FC01F8007E03F8007F0EFF801FFCFF8007F0 3F8019167E951C>97 DI<00FF8007FFE00FC3F01F03F03F03F07E03F07E01E07E00 00FE0000FE0000FE0000FE0000FE0000FE00007E00007E00007F00003F00701F80E00FE1 E007FFC000FE0014167E9519>I<0001FF000001FF000001FF0000003F0000003F000000 3F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000FE3F0007FF FF000FC1FF001F007F003F003F007E003F007E003F007E003F00FE003F00FE003F00FE00 3F00FE003F00FE003F00FE003F00FE003F007E003F007E003F003F003F001F007F000FC1 FFE007FFBFE001FE3FE01B237EA220>I<00FE0007FF800F87E01F03E03F01F07E01F07E 01F8FE00F8FE00F8FFFFF8FFFFF8FE0000FE0000FE0000FE00007E00007F00383F00381F 80700FC1F003FFC000FF0015167E951A>I<001F8000FFE001F1F003E3F007E3F00FC3F0 0FC1E00FC0000FC0000FC0000FC0000FC0000FC000FFFE00FFFE00FFFE000FC0000FC000 0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000 0FC0000FC0007FFC007FFC007FFC0014237EA212>I<00FE0F8003FFBFC00F83F3C01F01 F3C01F01F3803F01F8003F01F8003F01F8003F01F8003F01F8001F01F0001F01F0000F83 E0000FFF80001CFE00001C0000001C0000001E0000001FFFE0001FFFFC000FFFFF000FFF FF003FFFFF807C001FC0F8000FC0F80007C0F80007C0F80007C07C000F803E001F001F80 7E000FFFFC0001FFE0001A217F951D>II<0E003F807F807F807F807F803F800E00 000000000000000000000000FF80FF80FF801F801F801F801F801F801F801F801F801F80 1F801F801F801F801F801F801F80FFF0FFF0FFF00C247EA30F>I108 DII<00FF0007FFE00FC3F01F00F83F00FC7E00 7E7E007E7E007EFE007FFE007FFE007FFE007FFE007FFE007FFE007F7E007E7E007E3F00 FC1F00F80FC3F007FFE000FF0018167E951D>II114 D<07F9801FFF80380F80700780F00380F00380F80000FF 0000FFF8007FFE003FFF001FFF8007FF80003FC0E007C0E003C0F003C0F003C0F80380FC 0F00FFFE00C3F80012167E9517>I<01C00001C00001C00001C00003C00003C00003C000 07C00007C0000FC0003FFF00FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC000 0FC0000FC0000FC0000FC0000FC3800FC3800FC3800FC3800FC3800FC30007E70003FE00 00FC0011207F9F16>IIIIII 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