5.1 PS1
Due: Midnight, Sept 3
Purpose: The goal of this problem set is to accomplish basic tasks that are critical for moving forward in the course and demonstrating competence with one of the key skills for being a successful PhD student: effective communication in written English.
5.1.1 Problem 0
Sign up for the course forum on Piazza.
5.1.2 Problem 1
Register for a Github account if you don’t already have one. For all subsequent problem sets, we will use git to manage and submit work. If you’ve never used git or github, read about it and try it out. We will only be using the most basic functionality, so don’t worry if you’re not a wizard (I’m certainly not).
5.1.3 Problem 2
Order the book if you haven’t already. The first reading assignment is available in PDF (see the Syllabus), but you will need the book for later reading assignments.
5.1.4 Problem 3
Write a one-page description of your chosen programming language X and why it is your favorite. Consider one or all of the following topics:
programming language X has a [your adjective here] syntax,
programming language X has a [your adjective here] type system,
programming language X has a [your adjective here] pragmatics,
programming language X has a [your adjective here] tool suite,
programming language X is well-suited for Y applications.
Do not feel restricted to these attributes. If you consider another one the prime reason, use it to illustrate X’s power.
Imagine writing this memo for a manager in a development lab.
Be concise. Use active voice and descriptive verbs. Avoid subjective adjectives; instead bring across your preference through the technical description. Keep in mind that the addressee may check up on the facts that you present to support your claim.
To format the memo, use (1) an 11-point font, (2) 1.5in margins all around, (3) a header that specifies the paper title and the author(s) of the memo.
5.1.5 Problem 4
We will be making extensive use of the “Redex” programming language.
Redex is a domain-specific scripting language and set of
associated tools supporting the conception, design, construction, and
testing of semantic systems such as programming languages, type
systems, program logics, and program analyses. As a scripting
language, it enables an engineer to create executable specifications
of common semantic elements such as grammars, reduction relations,
judgments, and metafunctions; the basic elements of formal systems.
If these terms don’t mean anything to you at this point:
don’t worry —
Redex is embedded within a general purpose language called “Racket”. It is a member of the function-oriented family of languages that includes ML, Haskell, Lisp, and others. If you’ve programmed in any of these languages before, you should feel at ease programming in Racket quickly. If you’ve never programmed in a functional style, you will need to invest some time in acclimating to an alternative computational model.
Download and install Racket. Launch it’s editor, “DrRacket”, and try it out. Work through the quick introduction. Read about quote and unquote.
Come prepared with questions in class on Tuesday. (You do not need turn anything in for this part of the assignment.)
5.1.6 Delivery
Send an email to my cs.umd.edu address that includes your Github user name and attach your memo as a PDF file. Email must be received by midnight on 9/3.