Problem sets
5.1 PS1
5.2 PS2
5.3 PS3
5.4 PS4
5.1 PS1
On this page:
5.1.1 Problem 1
5.1.2 Problem 2
5.1.3 Problem 3
5.1.4 Problem 4
5.1.5 Delivery
6.0.1.8

5.1 PS1

Due: Midnight, Jan 30

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 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.2 Problem 2

Order the book if you haven’t already.

5.1.3 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:

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.4 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 — this class will teach you all of these concepts in time. It includes a number of software engineering inspired features to make models robust and includes tools for typesetting models and generating algebraic steppers for exploring program behaviors.

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 Thursday. (You do not need turn anything in for this part of the assignment.)

5.1.5 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 1/30.

 

Web Accessibility