Lambda Bound University of British Columbia, Department of Computer Science
CPSC 311 Definition of Programming Languages:
"Lambda Bound"

Winter 2013 Term 1

Course Goals     Syllabus     Notes     Assignments     Bonus Points     Piazza     Wiki     Blog
Lambda Bound
CPSC 311, Definition of Programming Languages

Assignments

Read the assignments section of the syllabus. Follow the collaboration policy. Feel free to work in ICCS X251 or X350 when they're not in use (see the ICCS X251 schedule or ICCS X350 schedule. Don't submit late.

Assignment Type Out Due Teams
Racket Practice and the extra file mentioned for division in a first interpreter
See the Piazza resource area for solutions.
Programming 2013/09/04 2000 (8PM) on 2013/09/13
Quiz 1: blank
See the Piazza resource area for solutions.
Conceptual 2013/09/11 2000 (8PM) on 2013/09/17
ParselTest Programming 2013/09/16 2000 (8PM) on 2013/09/27 Complete in a team of 2–3
Quiz 2: blank
See the Piazza resource area for solutions.
Conceptual 2013/09/25 2000 (8PM) on 2013/10/01
ParselDesugar Programming 2013/09/23 2000 (8PM) on 2013/10/04 (milestone),
2000 (8PM) on 2013/10/11 (final)
Complete in a team of 2–3
Quiz 3: blank
See the Piazza resource area for solutions.
Conceptual 2013/10/16 2000 (8PM) on 2013/10/22
ParselCore Programming 2013/10/18 2000 (8PM) on 2013/10/27 (milestone),
2000 (8PM) on 2013/11/03 (final, +1BP for 2013/11/01 instead),
2000 (8PM) on 2013/11/12 (optional "demo")
Complete in a team of 2–3
Quiz 4: blank
See the Piazza resource area for solutions.
Conceptual 2013/10/23 2000 (8PM) on 2013/10/29
The Big ProjectTM Programming (counts 3x) 2013/11/06 2000 (8PM) on 2013/11/10 (EXTENDED DEADLINE) (pa5-commit)
2000 (8PM) on 2013/11/15 (pa5-proposal)
2000 (8PM) on 2013/11/22 (pa5-background)
Class on 2013/11/29 (poster)
2000 (8PM) on 2013/12/01 (pa5-plan-proof)
2000 (8PM) on 2013/12/08 (pa5-final)
Complete in a team of 3–5

Getting Setup; Learning Racket and plai-typed

CPSC 311 relies on familiarity with the HtDP design method, Racket language, and DrRacket IDE. Fortunately, Racket, DrRacket, the HtDP textbook from CPSC 110, CPSC 110 itself, and our own textbook Programming Languages: Application and Interpretation (second edition), previous offerings of CPSC 311, and Brown's CS173 course (which we roughly follow) are all freely available online! Find them with your favorite search engine.

What specifically should you do?

  1. Install the latest Dr. Racket. Then select Install Package... from the File menu and type plai-typed. That installs the language we'll be using. I also recommend selecting Choose Language... in the Language menu, choosing The Racket Language, and setting the Automatic #lang line to #lang plai-typed.

  2. If you haven't taken 110, work through Sections 1 through 8 of the second edition of How to Design Programs or Parts I, II and III of How to Design Programs. (Prefer the second edition, especially because of the integrated testing. If you really want to cut, drop Section 8 in the second edition or all but Chapter 18 of Part III in the first.) Alternatively, follow along with CPSC 110 (picking on the 2012W2 offering) roughly through "virtual weeks" 1-7.

  3. Start learning the plai-typed language by checking out Section 1.3 of our textbook.

  4. Learn it more. Check out the documentation from the help desk. Try to use it to write some small data manipulation program you need or just want to build.

    Can't think of one? I just wrote a shell script to collect a specified range of pages from a list of scanned exams into a single document so I can review all students' responses to one exam problem at once. Write that (but use, say, lists of strings as the documents, at least at first).