-
Notifications
You must be signed in to change notification settings - Fork 0
/
dvanhorn.rkt
560 lines (485 loc) · 34.5 KB
/
dvanhorn.rkt
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
#lang racket
(require xml)
(require "papers.rkt")
(define www "www/")
;; [Listof Xexpr] String -> Void
(define (write-page xexprs fn)
(with-output-to-file (string-append www fn)
#:exists 'replace
(λ ()
(displayln "<!DOCTYPE html>")
(displayln "<!--[if IE 8]> <html class=\"no-js lt-ie9\" lang=\"en\" > <![endif]-->")
(displayln "<!--[if gt IE 8]><!--> <html class=\"no-js\" lang=\"en\" > <!--<![endif]-->")
(for-each write-xexpr xexprs))))
(define (make-page title col)
`((head
(meta ((charset "utf-8")))
(meta ((name "viewport")
(content "width=device-width")))
(title "David Van Horn : " ,title)
#;
(meta ((name "keywords")
(content ,keywords)))
(link ((rel "stylesheet")
(href "stylesheets/fonts.css")))
(link ((rel "stylesheet")
(href "stylesheets/app.css")))
(link ((rel "stylesheet")
(href "stylesheets/social_foundicons.css")))
(style "#scroller { position: relative; background-color: white; z-index: 2; }")
(style ".phat { color: black; background-color: black; height: 2em; }")
(style ".midphat { margin-top: 7em; }")
(script ((src "javascripts/vendor/custom.modernizr.js"))))
(body
,(make-cdata #f #f
"<script>document.write('<script src=javascripts/vendor/'
+ ('__proto__' in {} ? 'zepto' : 'jquery')
+ '.js><\\/script>');</script>")
(script ((src "javascripts/showhide.js")))
(script ((src "javascripts/foundation/foundation.js")))
(script ((src "javascripts/foundation/foundation.section.js")))
,(make-cdata #f #f
"<script>$(window).scroll(function () { $('#scroller').css('top', $(window).scrollTop()); });</script>")
(div ((class "row"))
(div ((class "large-9 columns"))
(h1 "David Van Horn")
(p "Associate Professor"
(br)
(a ((href "http://www.cs.umd.edu/")) "Department of Computer Science")
(br)
(span ((class "italic")) amp) " "
(a ((href "http://www.umiacs.umd.edu/")) "UMIACS")
(br)
(a ((href "http://www.umd.edu/")) "University of Maryland")))
(div ((class "large-3 columns"))
(img ((src "img/seal.png")
(alt "UMD")
(style "align: right; padding-top: 1em; padding-bottom: 1em;")))
#;
(ul ((class "inline-list right subheader italic"))
(li "Research")
(li "Papers")
(li "Books")
(li "Teaching")
(li "Contact"))))
(div ((class "row"))
(div ((class "large-5 columns"))
(p ((class "subheader")) (span ((class "italic")) "Structures don" rsquo "t march in the streets.")))
(div ((class "large-7 columns"))
(ul ((class "inline-list right subheader italic category"))
(li (a ((href "index.html") (class "category")) "Home"))
(li (a ((href "research.html") (class "category")) "Research"))
(li (a ((href "teaching.html") (class "category")) "Teaching"))
(li (a ((href "service.html") (class "category")) "Service"))
(li (a ((href "contact.html") (class "category")) "Contact"))
#;(li (a ((href "about.html") (class "category")) "About")))))
,col
,footer)))
(define footer
`(footer ((class "row"))
(div ((class "large-12 columns"))
(hr)
(div ((class "row"))
(div ((class "large-6 columns"))
(p (small copy nbsp "2014" mdash "2024 " (a ((href "http://www.cs.umd.edu/~dvanhorn/")) "David Van Horn"))))
(div ((class "large-6 columns"))
(ul ((class "inline-list right"))
(li (a ((href "http://validator.w3.org/check?uri=http%3A%2F%2Fwww.cs.umd.edu%2F~dvanhorn%2F")) (small "Valid HTML")))
(li (a ((href "https://github.com/plum-umd/dvanhorn")) (small "github")))
#;(li (a ((name "and")) (small amp)))
#;(li (a ((href "#")) (small "CSS")))))))))
(define index.xexpr
(make-page
"Home"
`(div ((class "row"))
(div ((class "large-3 columns right")
#;(role "content"))
(div #;((id "scroller"))
(hr)
(a ((href "https://plum-umd.github.io/"))
(img ((src "img/PLUM.png")
(alt "PLUM")
(height "100")
(width "150")
#;(style "0"))))
(hr)
(a ((href "https://www.gotechnica.org/"))
(img ((src "img/technica.png")
(alt "Technica"))))
(hr)
(a ((href "https://www.sigplan.org/LongTermMentoring/"))
(img ((src "img/sigplan-m-logo.png")
(alt "SIGPLAN-M"))))
(hr)
(a ((href "http://nostarch.com/realmofracket.htm"))
(img ((src "img/racket_cover_web.png")
(alt "Realm of Racket"))))
;; "ACM Computing Reviews \"2013 Notable Book in Computing\""
(hr)
;(h4 ((class "bold-sc")) (a ((href "#")) "quick jumps"))
;(hr)
#;(ul ((class "inline-list subheader italic category")))
#;(hr)
(ul ((class "inline-list subheader italic category"))
#;(li (a ((href "cv.pdf")) "CV"))
(li (a ((href "research.html#papers")) "Papers"))
(li (a ((href "http://www.cs.umd.edu/class/fall2022/cmsc430")) "CMSC 430"))
#;(li (a ((href "http://www.cs.umd.edu/class/spring2022/cmsc838E")) "CMSC 838"))
;(li (a ((href "#books")) "Realm of Racket"))
(li (a ((href "http://arxiv.org/a/vanhorn_d_1")) "arXiv"))
#;(li (a ((href "https://www.google.com/calendar/embed?src=david.a.vanhorn%40gmail.com&ctz=America/New_York")) "Calendar"))
#;(li (a ((href "dvanhorn.asc")) "PGP")))
(ul ((class "inline-list subheader italic category"))
(li (a ((href "http://twitter.com/lambda_calculus"))
(i ((class "foundicon-twitter")))))
(li (a ((href "https://github.com/dvanhorn/"))
(i ((class "foundicon-github")))))
#;(li (a ((href "#talks") (class "category")) "Talks")))
#;(hr)
#;(ul ((class "inline-list subheader italic category"))
(li (a ((href "cv.pdf")) "CV"))
(li (a ((href "research.pdf")) "Research Statement"))
(li (a ((href "teaching.pdf")) "Teaching Statement")))
(hr)))
(div ((class "large-9 columns")
#;(role "content"))
;(hr)
(hr ((class "phat")))
(img ((class "left") (alt "Photo by BK Adams.") (src "img/dvanhorn.jpg") (style "margin-right: 1em; margin-bottom: 1em;")))
(p "I " (a ((href "statement.pdf")) "work toward") " making the construction of reusable, trusted software "
"components possible and effective. "
"My research has spanned program analysis; semantics; "
"verification and model-checking; security; logic; "
"complexity; and algorithms.")
(p "Together with " (a ((href "https://msurbatovich.github.io/")) "Milijiana Surbatovich") " and "
(a ((href "https://lemonidas.github.io/")) "Leo Lampropoulos") ", "
"I direct the laboratory for "
(a ((href "http://www.cs.umd.edu/projects/PL/"))
"Programming Languages at the University of Maryland ("
#;(abbr ((title "Programming Languages at University of Maryland")) "plum")
"PLUM"
")") ". "
"Previously, I" rsquo "ve worked with the "
(a ((href "http://www.ccs.neu.edu/research/prl/")) "Programming Research Laboratory ("
#;(abbr ((title "Northeastern University Programming Research Laboratory")) "prl")
"PRL"
")") " "
"at Northeastern University.")
(p "I currently serve as the faculty advisor to " (a ((href "https://www.gotechnica.org/")) "Technica") ", the largest hackathon for
underrepresented genders in the world, and as an Advisory Board member for the " (a ((href "https://www.sigplan.org/LongTermMentoring/")) "SIGPLAN Long-Term Mentoring Committee (SIGPLAN-M)") ", an international long-term mentoring program for programming languages researchers.")
(p "I co-authored the book " (a ((href "http://nostarch.com/realmofracket.htm")) (span ((class "italic")) "Realm of Racket")) " with "
(a ((href "http://www.ccs.neu.edu/home/matthias/")) "Matthias Felleisen") " and undergraduates "
"from Northeastern University, which introduces programming interactive video games.")
(h4 "News")
(ul
(li "I'm serving on the ICFP 2024 Program Committee.")
(li "New paper: "
(em (a ((href "https://arxiv.org/abs/2302.13145")) "Absynthe: Abstract Interpretation-Guided Synthesis")) " to appear at PLDI'23.")
(li "New paper: "
(em (a ((href "https://content.iospress.com/articles/journal-of-computer-security/jcs230040")) "A formal model of Checked C"))
" published in the Journal of Computer Security.")
(li "I'm serving on the PLDI 2023 Program Committee.")
(li "New paper: "
(em (a ((href "https://arxiv.org/abs/2201.13394"))
"A Formal Model of Checked C"))
" to appear at CSF'22.")
(li "I'm serving on the PLDI 2022 Program Committee.")
(li "I'm serving on the Advisory Board of the " (a ((href "https://www.sigplan.org/LongTermMentoring/")) "SIGPLAN Long-Term Mentoring Committee (SIGPLAN-M)") ".")
(li "New paper: " (em (a ((href "https://arxiv.org/abs/2102.13183")) "RbSyn: Type- and Effect-Guided Program Synthesis")) " to appear at PLDI'21.")
(li "New paper: " (em (a ((href "https://arxiv.org/abs/2007.12630")) "Corpse Reviver: Sound and Efficient Gradual Typing via Contract Verification")) " to appear at POPL'21.")
(li (em (a ((href "")) "Abstracting Abstract Machines"))
", which appeared at ICFP 2010, has won "
(a ((href "http://sigplan.org/Awards/ICFP/")) (b "The ICFP Most Influential Paper"))
" award at ICFP 2020.")
(li "I'm speaking at "
(a ((href "https://icfp20.sigplan.org/home/PLMW-icfp-2020?track=PLMW%20%40%20ICFP%20"))
"The Programming Languages Mentoring Workshop @ ICFP 2020")
".")
(li "I'm lecturing at "
(a ((href "https://cmmrs.mpi-sws.org/"))
"The Cornell, Maryland, Max Planck Pre-doctoral Research School 2020")
".")
(li "I'm serving as a faculty advisor to " (a ((href "https://gotechnica.org/")) "Technica") ", the world's largest all-women and non-binary hackathon.")
(li "New paper: " (em (a ((href "https://arxiv.org/abs/1808.02101")) "Size-Change Termination as a Contract")) " to appear at PLDI'19.")
(li "New paper: " (em (a ((href "https://arxiv.org/pdf/1904.03521/")) "Type-Level Computations for Ruby Libraries")) " to appear at PLDI'19.")
(li "I received a 2019 " (b "NSF CAREER Award") " for " (a ((href "https://www.nsf.gov/awardsearch/showAward?AWD_ID=1846350")) (em "Gradual Verification: From Scripting to Proving")) ".")
(li (em (a ((href "https://arxiv.org/abs/1807.02132")) "Gradual Liquid Type Inference")) " won a " (b "Distinguished Paper") " award at OOPSLA 2018!")
(li "I'm teaching a new " (a ((href "https://oes.umd.edu/middle-high-school-students/terp-young-scholars")) "Terps Young Scholar") " course in Summer 2019: " (em "Make Your Own Video Games: An Introduction to Programming and Computing") ".")
(li "I'm co-organizing " (a ((href "https://icfp19.sigplan.org/home/PLMW-ICFP-2019")) "PLMW @ ICFP") ", the Programming Languages Mentoring Workshop, co-located "
"with " (a ((href "https://icfp19.sigplan.org/")) "ICFP 2019") " in Berlin, Germany.")
(li "I'm serving on the OOPSLA 2019 Review Committee.")
(li "New paper: " (em (a ((href "https://arxiv.org/abs/1807.02132")) "Gradual Liquid Type Inference")) " to appear at OOPSLA'18 in Boston.")
(li "New paper: " (em (a ((href "https://arxiv.org/abs/1806.03541")) "Theorem Proving for All")) " to appear at Haskell 2018 in St. Louis, MO.")
(li "I served on the thesis committee Quentin Stiévenart's dissertation, " (em (a ((href "stievenart2018phd.pdf")) "Scalable Designs for "
"Abstract Interpretation of Concurrent Programs: Application to Actors and Shared-Memory Multi-Threading")) ".")
(li "I'm co-organizing " (a ((href "https://icfp18.sigplan.org/track/PLMW-ICFP-2018")) "PLMW @ ICFP") ", the Programming Languages Mentoring Workshop, co-located "
"with " (a ((href "https://icfp18.sigplan.org/")) "ICFP 2018") " in St. Louis, MO.")
(li "I'm serving on the Selection Committee for the Student Research Competition at both "
(a ((href "https://pldi18.sigplan.org/track/pldi-2018-src")) "PLDI") " and " (a ((href "https://icfp18.sigplan.org/track/icfp-2018-Student-Research-Competition")) "ICFP") " 2018.")
(li "My post-doc, " (a ((href "https://thomas.gilray.org/")) "Thomas Gilray") ", will be joining the faculty of the "
(a ((href "https://www.uab.edu/cas/computerscience/")) "Computer Science department") " at the "
(a ((href "https://www.uab.edu/home/")) "University of Alabama at Birmingham") ".")
(li "New paper: " (em (a ((href "https://arxiv.org/abs/1711.03620")) "Soft Contract Verification for Higher-order Stateful Programs"))
" published at POPL'18 in Los Angeles, USA.")
)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require "projects.rkt")
(define (projects-section ps)
`[(hr ((id "projects") (class "phat")))
(h4 "Projects")
,@(apply append (map project-section ps))])
(define (project-section p)
(match p
[(project name role desc collab)
(define id (symbol->string (gensym)))
`[(p (a ((href "#")) (span ((onclick ,(format "showHide('~a'); return false;" id))) (span ((class "paper-title")) ,name) " (" ,role ") "))
(div ((id ,id) (style "display: none;"))
(p ,@desc)
(p ,@collab)
(hr)))]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require "talks.rkt")
(define (talks-section ts)
`[(hr ((id "talks") (class "phat midphat")))
(h4 "Talks")
,@(apply append (map talk-section ts))])
(define (talk-section t)
(match t
[(talk #f title short-venue month year venue location abstract)
`[(dl (dt ,title)
(dd (span ((class "italic")) ,venue)
", " ,location ", " ,month " " ,year))]]
[(talk tag title short-venue month year venue location abstract)
`[(dl (dt ;(a ((href ,(string-append "talks/" tag ".pdf")))
,title);)
(dd (span ((class "italic")) ,venue)
", " ,location ", " ,month " " ,year))]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define teaching.xexpr
(make-page
"Teaching"
`(div ((class "row"))
(div ((class "large-3 columns right")
#;(role "content"))
(div ((id "scroller"))
(hr)
(h4 ((class "bold-sc")) (a ((href "#")) "teaching"))
(hr)))
(div ((class "large-9 columns")
#;(role "content"))
(hr ((id "contact") (class "phat")))
(p (a ((href "https://www.cs.umd.edu/class/spring2024/cmsc430/")) "Spring 2024: CMSC 430, Introduction to Compilers"))
(p (a ((href "https://www.cs.umd.edu/class/fall2023/cmsc430/")) "Fall 2023: CMSC 430, Introduction to Compilers"))
(p (a ((href "https://www.cs.umd.edu/class/summer2023/cmsc430/")) "Summer 2023: CMSC 430, Introduction to Compilers"))
(p (a ((href "https://www.cs.umd.edu/class/spring2023/cmsc838E/")) "Spring 2023: CMSC 838E, Advanced Compilers"))
(p (a ((href "https://www.cs.umd.edu/class/fall2022/cmsc430/")) "Fall 2022: CMSC 430, Introduction to Compilers"))
(p (a ((href "https://www.cs.umd.edu/class/spring2022/cmsc330/")) "Spring 2022: CMSC 330, Organization of Programming Languages"))
(p (a ((href "https://www.cs.umd.edu/class/spring2022/cmsc838E/")) "Spring 2022: CMSC 838E, Advanced Compilers"))
(p (a ((href "https://www.cs.umd.edu/class/fall2021/cmsc430/")) "Fall 2021: CMSC 430, Introduction to Compilers"))
(p (a ((href "https://www.cs.umd.edu/class/spring2021/cmsc838E/")) "Spring 2021: CMSC 838E, Advanced Compilers"))
(p (a ((href "https://www.cs.umd.edu/class/winter2021/cmsc388Q/")) "Winter 2021: CMSC 383Q, Functional Programming in Racket"))
(p (a ((href "https://www.cs.umd.edu/class/fall2020/cmsc330/")) "Fall 2020: CMSC 330, Organization of Programming Languages"))
(p "Spring 2020: CMSC 838, Advanced Compilers")
(p (a ((href "http://www.cs.umd.edu/class/fall2019/cmsc430")) "Fall 2019: CMSC 430, Introduction to Compilers"))
(p (a ((href "http://www.cs.umd.edu/class/summer2019/cmsc198Q/")) "Summer 2019: CMSC 198Q, Making Your Own Video Games: An Introduction to Programming and Computing"))
(p (a ((href "http://www.cs.umd.edu/class/spring2019/cmsc132A/")) "Spring 2019: CMSC 132A, Systematic Program Design II"))
(p (a ((href "http://www.cs.umd.edu/class/fall2018/cmsc131A/")) "Fall 2018: CMSC 131A, Systematic Program Design I"))
(p (a ((href "http://www.cs.umd.edu/class/spring2018/cmsc132A/")) "Spring 2018: CMSC 132A, Systematic Program Design II"))
(p (a ((href "http://www.cs.umd.edu/class/fall2017/cmsc131A/")) "Fall 2017: CMSC 131A, Systematic Program Design I"))
(p (a ((href "http://www.cs.umd.edu/class/spring2017/cmsc430/")) "Spring 2017: CMSC 430, Introduction to Compilers"))
(p (a ((href "http://www.cs.umd.edu/class/spring2016/cmsc430/")) "Spring 2016: CMSC 430, Introduction to Compilers"))
(p (a ((href "http://www.cs.umd.edu/class/fall2015/cmsc631/")) "Fall 2015: CMSC 631, Program Analysis and Understanding"))
(p (a ((href "http://www.cs.umd.edu/class/spring2015/cmsc430/")) "Spring 2015: CMSC 430, Introduction to Compilers"))
(p (a ((href "http://www.cs.umd.edu/class/fall2014/cmsc631/")) "Fall 2014: CMSC 631, Program Analysis and Understanding"))
(p (a ((href "http://www.cs.umd.edu/class/spring2014/cmsc631/")) "Spring 2014: CMSC 631, Program Analysis and Understanding"))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define service.xexpr
(make-page
"Service"
`(div ((class "row"))
(div ((class "large-3 columns right")
#;(role "content"))
(div ((id "scroller"))
(hr)
(h4 ((class "bold-sc")) (a ((href "#")) "service"))
(hr)
(ul ((class "inline-list subheader italic category"))
(li (a ((href "#journals") (class "category")) "Journals"))
(li (a ((href "#steering-committees") (class "category")) "SCs"))
(li (a ((href "#chair") (class "category")) "Chair"))
(li (a ((href "#panelist") (class "category")) "Panelist"))
(li (a ((href "#program-committees") (class "category")) "PCs"))
(li (a ((href "#external-review-committees") (class "category")) "ERCs"))
(li (a ((href "#reviewer") (class "category")) "Reviewer"))
(li (a ((href "#other") (class "category")) "Other")))))
(div ((class "large-9 columns")
#;(role "content"))
(hr ((id "journals") (class "phat")))
(h4 "Journals refereed")
(p (a ((href "http://csur.acm.org/")) "ACM Computing Surveys"))
(p (a ((href "http://tocl.acm.org/")) "ACM Transactions on Computational Logic"))
(p (a ((href "http://toplas.acm.org/")) "ACM Transactions on Programming Languages and Systems"))
(p (a ((href "http://link.springer.com/journal/10990")) "Higher-Order and Symbolic Computation"))
(p (a ((href "http://journals.cambridge.org/action/displayJournal?jid=JFP")) "Journal of Functional Programming"))
(p (a ((href "http://www.journals.elsevier.com/science-of-computer-programming/")) "Science of Computer Programming"))
(hr ((id "steering-committees") (class "phat")))
(h4 "Steering Committees")
(p (a ((href "http://icfpconference.org/")) "ACM SIGPLAN International Conference on Functional Programming (ICFP), 2013-2015"))
(p (a ((href "http://hopa.cs.rhul.ac.uk/")) "Workshop on Higher-Order Program Analysis (HOPA), 2014"))
(hr ((id "chair") (class "phat")))
(h4 "Chair")
(p (a ((href "http://tfp2016.org/")) "Symposium on Trends in Functional Programming (TFP), 2016"))
(p (a ((href "http://hopa.cs.rhul.ac.uk/")) "Workshop on Higher-Order Program Analysis (HOPA), 2014"))
(p (a ((href "http://www.nii.ac.jp/shonan/blog/2011/03/19/workshop-on-automated-techniques-for-higher-order-program-verification/")) "NII Workshop on Automated Techniques for Higher-Order Program Verification, 2011"))
(p (a ((href "http://nepls.org/")) "New England Programming Languages and Systems Symposium (NEPLS), 2011"))
(hr ((id "panelist") (class "phat")))
(h4 "Panelist")
(p (a ((href "https://www.nsf.gov/dir/index.jsp?org=CISE")) "NSF Directorate for Computer & Information Science & Engineering (CISE), 2024, 2021, 2020, 2011, 2010"))
(hr ((id "program-committees") (class "phat")))
(h4 "Program committees")
(p (a ((href "http://icfpconference.org/")) "ACM SIGPLAN International Conference on Functional Programming (ICFP), 2024, 2015, 2011"))
(p (a ((href "http://www.sigplan.org/Conferences/PLDI/")) "ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2023, 2022"))
(p (a ((href "http://www.sigplan.org/Conferences/POPL/")) "ACM SIGPLAN Symposium on Principles of Programming Languages (POPL), 2021, 2017"))
(p (a ((href "http://www.sigplan.org/Conferences/OOPSLA/")) "ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), 2019"))
(p (a ((href "http://popl18.sigplan.org/track/PADL-2018")) "International Symposium on Practical Aspects of Declarative Languages (PADL), 2018") ", "
(a ((href "https://www.ist.unomaha.edu/padl2014/")) "2014"))
(p (a ((href "http://tifp.org/")) "Symposium on Trends in Functional Programming (TFP), 2017, 2014, 2012"))
(p (a ((href "http://staticanalysis.org/")) "Static Analysis Symposium (SAS), 2017"))
(p (a ((href "http://ecoop.org/")) "European Conference on Object-Oriented Programming (ECOOP), 2016"))
(p (a ((href "http://www.cs.rice.edu/~sc40/obt15/")) "Off the Beaten Track: New Frontiers for Programming Languages Research, 2015"))
(p (a ((href "http://flint.cs.yale.edu/esop2014/")) "European Symposium on Programming (ESOP), 2014"))
(p (a ((href "http://www.easychair.org/smart-program/VSL2014/LOLA-index.html")) "Workshop on Syntax and Semantics of Low-Level Languages (LOLA), 2014"))
(p (a ((href "http://www.cs.uwyo.edu/~jlc/tfpie14/")) "International Workshop on Trends in Functional Programming in Education (TFPIE), 2014"))
(p (a ((href "http://lampwww.epfl.ch/~hmiller/scala2013/")) "Scala Workshop, 2013"))
(p (a ((href "http://hopa.cs.rhul.ac.uk/hopa-2013/index.html")) "Workshop on Higher-Order Program Analysis (HOPA), 2013"))
(p (a ((href "http://schemeworkshop.org/")) "Scheme and Functional Programming Workshop, 2011, 2009, 2015"))
(hr ((id "external-review-committees") (class "phat")))
(h4 "External review committees")
(p (a ((href "http://www.sigplan.org/Conferences/ICFP/")) "ACM SIGPLAN International Conference on Functional Programming (ICFP), 2018"))
(p (a ((href "http://www.sigplan.org/Conferences/POPL/")) "ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), 2016, 2013"))
(hr ((id "reviewer") (class "phat")))
(h4 "Reviewer")
(p (a ((href "http://www.sigplan.org/Conferences/POPL/")) "ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), 2015, 2014, 2008"))
(p (a ((href "http://conf.researchr.org/home/VMCAI-2016"))"International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI), 2016") ", " (a ((href "http://vmcai2014.di.ens.fr/")) "2014"))
(p (a ((href "http://icfpconference.org/")) "ACM SIGPLAN International Conference on Functional Programming (ICFP), 2014, 2010"))
(p (a ((href "http://link.springer.com/book/10.1007/978-3-642-19718-5")) "European Symposium on Programming (ESOP), 2011"))
(p (a ((href "http://www.sigplan.org/Conferences/DLS/")) "ACM SIGPLAN Symposium on Dynamic Languages (DLS), 2014, 2012"))
(p (a ((href "http://www.sigplan.org/Conferences/SPLASH/")) "ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2012"))
(p (a ((href "http://ieeexplore.ieee.org/xpl/conhome.jsp?punumber=1000420")) "IEEE Symposium on Logic in Computer Science (LICS), 2007"))
(p (a ((href "https://www.springer.com/computer/swe/book/978-3-540-74914-1")) "EACSL Conference on Computer Science and Logic (CSL), 2007"))
(hr ((id "reviewer") (class "phat")))
(h4 "Other")
(p (a ((href "http://conf.researchr.org/info/icfp-2016/student-research-competition")) "Student Research Competition chair, ACM SIGPLAN International Conference on Functional Programming (ICFP), 2016"))
(p (a ((href "http://icfpconference.org/icfp-2015/")) "Student Research Competition committee, ACM SIGPLAN International Conference on Functional Programming (ICFP), 2015"))
(p (a ((href "http://www.sigplan.org/Conferences/POPL/")) "Workshop Chair, ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), 2013-2015"))
))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define contact.xexpr
(make-page
"Contact"
`(div ((class "row"))
(div ((class "large-3 columns right")
#;(role "content"))
(div ((id "scroller"))
(hr)
(h4 ((class "bold-sc")) (a ((href "#")) "contact"))
(hr)))
(div ((class "large-9 columns")
#;(role "content"))
(hr ((id "contact") (class "phat")))
(p "David Van Horn" (br)
"5250 Iribe Center for Computer Science and Engineering" (br)
"University of Maryland" (br)
"8125 Paint Branch Drive" (br)
"College Park, MD 20742" (br)
(br)
"Email: (@ dvanhorn (dot cs umd edu))" )
))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define research.xexpr
(make-page
"Research"
`(div ((class "row"))
(div ((class "large-3 columns right")
#;(role "content"))
(div ((id "scroller"))
(hr)
(h4 ((class "bold-sc")) (a ((href "#")) "research"))
(hr)
(ul ((class "inline-list subheader italic category"))
(li (a ((href "#projects") (class "category")) "Projects"))
(li (a ((href "#students") (class "category")) "Students"))
#;(li (a ((href "#collaborators") (class "category")) "Collaborators"))
(li (a ((href "#papers") (class "category")) "Papers"))
(li (a ((href "#talks") (class "category")) "Talks")))
(hr)))
(div ((class "large-9 columns")
#;(role "content"))
,@(projects-section projects)
(hr ((id "students") (class "phat midphat")))
(h4 "Students")
(h5 "Current")
(ul
(li (a ((href "https://www.cs.umd.edu/people/dpostol")) "Deena Postol") ", " "Ph.D. student at UMD")
(li (a ((href "https://pdarragh.github.io/")) "Pierce Darragh") ", " "Ph.D. student at UMD")
(li (a ((href "https://www.cs.umd.edu/people/bquiring")) "Ben Quiring") ", " "Ph.D. student at UMD")
(li (a ((href "https://www.cs.umd.edu/people/jpfrank")) "Justin Frank") ", " "Ph.D. student at UMD")
#;(li (a ((href "https://www.cs.umd.edu/people/jprinz")) "Jacob Prinz") ", " "Ph.D. student at UMD"))
(h5 "Past")
(ul (li (a ((href "https://sankhs.com/")) "Sankha Narayan Guria") ", "
(em (a ((href "https://doi.org/10.13016/dspace/txaj-5df6")) "Program Synthesis with Lightweight Abstractions"))
", Ph.D., UMD, 2023; now asst. prof. at University of Kansas")
(li (a ((href "https://philnguyen.github.io/")) "Phúc C. Nguyễn") ", "
(em (a ((href "https://drum.lib.umd.edu/handle/1903/25444")) "Higher-order Symbolic Execution"))
", Ph.D., UMD, 2019; now at Google")
(li (a ((href "http://thomas.gilray.org/")) "Thomas Gilray") ", "
"Post-doc at UMD; now asst. prof. at University of Alabama, Birmingham")
(li (a ((href "https://nikivazou.github.io/")) "Niki Vazou") ", "
"Post-doc at UMD; now asst. prof. at IMDEA")
(li (a ((href "https://www.cs.umd.edu/~labichn/")) "Nicholas Labich") ", "
"M.S., UMD, 2018")
(li (a ((href "http://david.darais.com/")) "David Darais") ", "
(em (a ((href "https://drum.lib.umd.edu/handle/1903/19989")) "Mechanizing Abstract Interpretation"))
", Ph.D., UMD, 2017; now an asst. prof. at University of Vermont")
(li (a ((href "http://kmicinski.com/")) "Kristopher Micinski") ", "
(em (a ((href "https://drum.lib.umd.edu/handle/1903/16470")) "Interaction-based Security for Mobile Apps"))
", Ph.D., UMD, 2018 (Committee member); now a visiting asst. prof. at Haverford College")
(li (a ((href "http://www.cs.umd.edu/~ntoronto/")) "Neil Toronto") ", "
"post-doc at UMD; now at MSR, Cambridge")
(li (a ((href "https://deeglaze.github.io/")) "Dionna Amalie Glaze") ", "
(a ((href "http://arxiv.org/abs/1504.08033")) (em "Automating Abstract Interpretation of Abstract Machines"))
", Ph.D., Northeastern University, 2015; now at Google")
(li (a ((href "http://www.ccs.neu.edu/home/stamourv/")) "Vincent St-Amour") ", "
(a ((href "http://www.ccs.neu.edu/home/stamourv/papers/dissertation.pdf"))
(em "How to Generate Actionable Advice about Performance Problems"))
", "
"Ph.D., Northeastern University, 2015 (Committee member)")
(li (a ((href "http://www.cs.umd.edu/~piotrm/")) "Piotr Mardziel") ", "
(em (a ((href "https://drum.lib.umd.edu/handle/1903/16470")) "Modeling, Measuring, and Limiting Adversary Knowledge"))
", Ph.D., University of Maryland, 2015 (Committee member)")
(li (a ((href "http://www.ccs.neu.edu/home/stchang/")) "Stephen Chang") ", "
(em "On the Relation Between Laziness and Strictness")
", Ph.D., Northeastern University, 2014 (Committee member)")
(li (a ((href "http://shuying.me/academic.html")) "Shuying Liang") ", "
(em "Static Analysis of Android Applications")
", Ph.D., University of Utah, 2014"
" (Committee member)"))
#;(hr ((id "collaborators") (class "phat midphat")))
#;(h4 "Collaborators")
(hr ((id "papers") (class "phat midphat")))
(h4 "Papers")
,@papers-list
#|
(h5 "Journal articles")
,@jours
(h5 "Conference articles")
,@confs
(h5 "Workshop & other articles")
,@workshop&others
|#
,@(talks-section talks)))))
(write-page index.xexpr "index.html")
(write-page research.xexpr "research.html")
(write-page contact.xexpr "contact.html")
(write-page teaching.xexpr "teaching.html")
(write-page service.xexpr "service.html")