|
| 1 | +#lang scribble/base |
| 2 | +@(require scribble/core |
| 3 | + scribble/html-properties |
| 4 | + net/url-string |
| 5 | + racket/list) |
| 6 | + |
| 7 | +@(define (section* #:tag [tag #f] . c) (apply section #:style 'unnumbered #:tag tag c)) |
| 8 | +@(define (htdp) @hyperlink["https://htdp.org/"]{How to Design Programs}) |
| 9 | + |
| 10 | +@(define (during-school . l) |
| 11 | + null |
| 12 | + #;@elem[#:style "duringSchool" l]) |
| 13 | + |
| 14 | +@(define dorm-url "https://docs.google.com/forms/d/e/1FAIpQLSe6B0oqHHN3ErB1kBmQQd-CKWvHOO3E1F5yxc-xCThYggNbPg/viewform?usp=sf_link") |
| 15 | +@(define finaid-url "https://docs.google.com/forms/d/e/1FAIpQLSeXBJ-CdvHjjVpdWP4WWjHiMUsPvvoRuexNqIY1JrrVLXSpkQ/viewform?usp=sf_link") |
| 16 | + |
| 17 | +@(define page-style |
| 18 | + (make-style |
| 19 | + #f |
| 20 | + (list |
| 21 | + 'non-toc |
| 22 | + 'no-sidebar |
| 23 | + ;; Redundant if 'no-sidebar is included, but makes a reasonable TOC otherwise: |
| 24 | + 'no-toc 'toc-hidden |
| 25 | + (make-css-addition (string->url "https://fonts.googleapis.com/css?family=Martel|Open+Sans")) |
| 26 | + (make-css-addition #"body { background: #EEc; |
| 27 | + background-image: url(https://racket-lang.org/img/racket-logo.svg); |
| 28 | + background-repeat: no-repeat; |
| 29 | + background-size: 10em 10em; |
| 30 | + background-position: 1em 1em; |
| 31 | + font-size: 12pt; } |
| 32 | + .navsettop, .navsetbottom { display: none; } |
| 33 | + .maincolumn { background: white; padding: 2ex; |
| 34 | + margin-top: -2ex; width: 45em; margin-left: 12em; } |
| 35 | + .main, .refcontent, .tocview, .tocsub, .sroman, i { font-family: 'Martel', serif; } |
| 36 | + .refcolumn { background: none; border: 0; } |
| 37 | + .duringSchool { color: #B00; } |
| 38 | + .price { color: #800; } |
| 39 | + a { text-decoration: none; } |
| 40 | + h1, h2, h3 { font-family: 'Open Sans', sans-serif; } |
| 41 | + h3 { border-top: 1px solid #888; }")))) |
| 42 | + |
| 43 | +@title[#:style page-style]{@larger{The Racket School of Semantics and Languages} |
| 44 | + @linebreak[] July 27-31, 2020 @hspace[4] Salt Lake City, Utah, USA} |
| 45 | + |
| 46 | +@margin-note{@(tabular |
| 47 | + (list (list @italic{@nonbreaking{Thanks to our generous supporters:}}) |
| 48 | + (list @larger{SIGPLAN})))} |
| 49 | + |
| 50 | + |
| 51 | +@during-school{@bold{New}: Local details for participants highlighted below.} |
| 52 | + |
| 53 | +@section*{Overview and Audience} |
| 54 | + |
| 55 | +The |
| 56 | +@hyperlink["https://racket-lang.org/"]{Racket} |
| 57 | +team has spent over thirty years developing and refining a |
| 58 | +coherent intellectual framework of programming language and programming research. For |
| 59 | +the past few years, the team has run a summer school for developers, |
| 60 | +academics, and undergraduates on various aspects of this framework. |
| 61 | + |
| 62 | +@bold{This year's topic:} The 2020 school will introduce participants to |
| 63 | +the Racket method of ``hardening'' software by going from untyped |
| 64 | +scripts to fully typed programs. The team has actively worked on this |
| 65 | +framework for the past 20 years, making Racket the first language to include a |
| 66 | +system of higher-order behavioral software contracts (2002) and gradual |
| 67 | +types (2006). Both systems have evolved over the past two decades, and the |
| 68 | +Racket community has gathered significant practical experience with them. |
| 69 | + |
| 70 | +Concretely, the 2020 Racket Summer School will cover three primary topics: |
| 71 | +@itemlist[ |
| 72 | +@item{mostly-functional scripting and programming with modules;} |
| 73 | +@item{behavioral software contracts; and} |
| 74 | +@item{gradual (``migratory'') typing.} |
| 75 | +] |
| 76 | +For each topic, participants will gather significant practical, hands-on |
| 77 | +experience and will get some exposure to the underlying theory. |
| 78 | + |
| 79 | +The ideal attendee has Racket experience beyond @htdp[] and |
| 80 | +@hyperlink["https://realmofracket.com"]{Realm of Racket}. He or she is |
| 81 | +@itemlist[ |
| 82 | + |
| 83 | +@item{a professional or hobbyist programmer with an interest in |
| 84 | +strengthening his or her Racket skills;} |
| 85 | + |
| 86 | +@item{or a graduate or undergraduate student who is intrigued by the idea |
| 87 | +of how academic research can produce a widely used artifact and how such an |
| 88 | +artifact can pose amazing research problems;} |
| 89 | + |
| 90 | +@item{or an instructor who wishes to use more than the @htdp[] languages in |
| 91 | +the curriculum, say for Programming Languages, Software Development, or |
| 92 | +AI;} |
| 93 | + |
| 94 | +@item{or even a researcher (post-doc, faculty) who wishes to understand the |
| 95 | +Racket method of hardening software.} |
| 96 | +] |
| 97 | + |
| 98 | +@section*{Dates and Location} |
| 99 | + |
| 100 | +The School will run July 27-31 (Monday-Friday) at the |
| 101 | +@hyperlink["https://www.cs.utah.edu/"]{University of Utah}. |
| 102 | + |
| 103 | +The University is located in lovely |
| 104 | +@hyperlink["https://www.visitsaltlake.com/"]{Salt Lake City}, Utah, USA. |
| 105 | + |
| 106 | +Utah is home to several US National Parks, Monuments, and Sites, the Sundance Film Festival, the Bonneville Salt Flats, and much more. Learn more |
| 107 | +@hyperlink["https://travel.utah.gov/"]{here}, |
| 108 | +@hyperlink["https://utah.com/"]{here}, |
| 109 | +or |
| 110 | +@hyperlink["https://www.visitutah.com/"]{here}. |
| 111 | + |
| 112 | +@during-school{The summer school will be held in room 2230 of the |
| 113 | +@hyperlink["https://goo.gl/maps/bpWGz93472s"]{Warnock Engineering Building (WEB)}.} |
| 114 | + |
| 115 | +@during-school{To get to campus, one option is |
| 116 | +@hyperlink["https://www.rideuta.com/Services/TRAX"]{TRAX light rail} |
| 117 | +to either the @hyperlink["https://goo.gl/maps/UnTF4ZSykBn"]{Fort |
| 118 | +Douglas} or Stadium stop. Walk to WEB from there, or a |
| 119 | +@hyperlink["https://www.uofubus.com/"]{free campus shuttle} stops at |
| 120 | +TRAX stations and near WEB.} |
| 121 | + |
| 122 | +@section*{Faculty} |
| 123 | + |
| 124 | +The School will be taught by |
| 125 | +@hyperlink["https://www.ccs.neu.edu/home/matthias/"]{Matthias Felleisen}, |
| 126 | +@hyperlink["https://www.eecs.northwestern.edu/~robby/"]{Robby Findler}, |
| 127 | +@hyperlink["https://www.cs.utah.edu/~mflatt/"]{Matthew Flatt}, |
| 128 | +@hyperlink["https://jeapostrophe.github.io/home/"]{Jay McCarthy}, |
| 129 | +@hyperlink["https://samth.github.io/"]{Sam Tobin-Hochstadt}, |
| 130 | +and guest lecturers (TBD). |
| 131 | + |
| 132 | +@section*{Week Schedule} |
| 133 | + |
| 134 | +Each teaching day will run roughly @bold{9am to 5pm}, divided into |
| 135 | +four sections of about 75 min each. Some sections will be organized as |
| 136 | +traditional @bold{lectures}. In @bold{lab sessions}, the summer school |
| 137 | +participants will practice the lecture material with hands-on |
| 138 | +exercises; teaching assistants will be on hand to assist. Depending on |
| 139 | +demand, the lecturers will also organize ad hoc break-out sessions on |
| 140 | +topics of interest to the participants. |
| 141 | + |
| 142 | +@;{ |
| 143 | + |
| 144 | +@(define cont @italic{cont'd}) |
| 145 | +@(define (add-seps l) (for/list ([r (in-list l)]) |
| 146 | + (let loop ([r r]) |
| 147 | + (cond |
| 148 | + [(null? (cdr r)) r] |
| 149 | + [(eq? (cadr r) 'cont) |
| 150 | + (list* (car r) 'cont (loop (cdr r)))] |
| 151 | + [else |
| 152 | + (list* (car r) @hspace[4] (loop (cdr r)))])))) |
| 153 | + |
| 154 | + |
| 155 | +@tabular[#:style 'boxed #:row-properties '(bottom-border ()) #:column-properties '((right-border right) ()) |
| 156 | +@(add-seps |
| 157 | + (list |
| 158 | + |
| 159 | + @list["" @bold{AM 1} @bold{AM 2} @bold{PM 1} @bold{PM 2}] |
| 160 | + |
| 161 | + @list[@bold{Monday@'nbsp} "Operational semantics" "Redex" "Operational semantics" "Redex"] |
| 162 | + |
| 163 | + @list["" 'cont 'cont 'cont 'cont] |
| 164 | + |
| 165 | + @list[@bold{Tuesday@'nbsp} "Mystery 1: discovering" "Mystery 1: modeling" "Mystery 2: discovering" "Mystery 2: modeling"] |
| 166 | + |
| 167 | + @list["" 'cont 'cont 'cont 'cont] |
| 168 | + |
| 169 | + @list[@bold{Wednesday@'nbsp} "Mystery 3: discovering" "Mystery 3: modeling" "Semantics reengineering" @italic{break}] |
| 170 | + |
| 171 | + @list["" 'cont 'cont 'cont 'cont] |
| 172 | + |
| 173 | + @list[@bold{Thursday@'nbsp} @tt{define-syntax} (para @tt{#lang} ", " @tt{#%app}) "building your own language and IDE" 'cont] |
| 174 | + |
| 175 | + @list["" 'cont 'cont 'cont 'cont] |
| 176 | + |
| 177 | + @list[@bold{Friday@'nbsp} (para @tt{#lang} " from Redex") "Generate tests" "Test your language" 'cont] |
| 178 | + |
| 179 | +)) |
| 180 | +] |
| 181 | + |
| 182 | +} |
| 183 | + |
| 184 | +@during-school{Breakfast (bagels and fruit) will be available by 8:30 |
| 185 | +each day, and lunch will be delivered.} |
| 186 | + |
| 187 | +@section*{Accommodation} |
| 188 | + |
| 189 | +We have arranged for subsidized lodging in dorms at the University of |
| 190 | +Utah. To request dorm accommodation, please @hyperlink[dorm-url]{fill |
| 191 | +out the form}. |
| 192 | + |
| 193 | + |
| 194 | +@; @section*{Parking} |
| 195 | + |
| 196 | +@during-school{Participants can park in the Merrill Engineering |
| 197 | +Building (MEB) lot to the north of WEB and MEB. Contact the organizers |
| 198 | +for a virtual parking pass.} |
| 199 | + |
| 200 | +@section*{Tickets} |
| 201 | + |
| 202 | +@hyperlink["https://www.eventbrite.com/e/racket-school-2020-tickets-97397698137"]{Buy ticket at Eventbrite} |
| 203 | + |
| 204 | +@(define (price s) @elem[#:style "price" s]) |
| 205 | + |
| 206 | +@nested[#:style 'inset |
| 207 | +@tabular[ |
| 208 | + #:sep @hspace[2] |
| 209 | + #:column-properties '(top top top) |
| 210 | + (list |
| 211 | + (list @price{$499} @elem{@bold{base}} @elem{Available to all.}) |
| 212 | + (list "" "" "") |
| 213 | + (list @price{$699} @elem{@bold{patron}} @elem{Covers our full cost of offering these events, |
| 214 | + plus a little extra to help support Racket development; |
| 215 | + Racket is part of the |
| 216 | + @hyperlink["https://sfconservancy.org/"]{Software Freedom Conservancy}.}) |
| 217 | + (list "" "" "") |
| 218 | + (list @price{$249} @elem{@bold{academic}} @elem{Available to participants from academic institutions that need a subsidy; |
| 219 | + tuition and travel reimbursement available for qualifying students |
| 220 | + who @hyperlink[finaid-url]{apply for financial aid}.})) |
| 221 | +]] |
| 222 | + |
| 223 | +Eventbrite fees are added during checkout. |
| 224 | + |
| 225 | +@section*{Previous Racket Schools} |
| 226 | + |
| 227 | +@hyperlink["https://school.racket-lang.org/2019/"]{2019} |
| 228 | +@hspace[3] |
| 229 | +@hyperlink["https://summer-school.racket-lang.org/2018/"]{2018} |
| 230 | +@hspace[3] |
| 231 | +@hyperlink["https://summer-school.racket-lang.org/2017/"]{2017} |
| 232 | +@hspace[3] |
| 233 | +@hyperlink["https://redex.racket-lang.org/summer-school.html"]{2015} |
| 234 | + |
0 commit comments