check in every day

Wed Apr 23 22:12:15 EDT 2014

The course is finished. The average grade in the course is an 87%, i.e., an A-. Congratulations to a job well done.

The End

Tue Apr 22 11:21:44 EDT 2014

You should have a lightly marked version of your final project code in your inbox by now. The average grade is 92%, ranging from a low of 28/35 to a high of 36/35. Yes, I award extra points on extremely rare occasions; this pair actually earned two for an outstanding effort, according to the criteria listed below.

We practiced all semester long deploying small pieces of software in an appropriate manner: names of authors; contact emails; purpose statements for the file (and or README files); purpose statements for languages, functions, and relations; and a sufficient number of tests.My professional code consists of 30% of unit tests and for Redex model this number goes up to 50%. I graded your project code according to those basic aspects, spot-checking pieces here and there. The weight of the project code is 13%, somewhat lighter then the weight of your reports and your presentations, which I inspected closely.

If your project got you interested in the chosen topic and you would like to use your model/code for anything in the future, feel free to contact me over the summer for a detailed code walk.

The final presentation will take place tomorrow at 2pm in WVH 366. Ting Chen and Cheng Li will present "Church: A language for generative models." All are welcome; attendance is optional.

Mon Mar 31 10:21:32 EDT 2014

I will attend ETAPS during the second week of April, so we cannot meet on April 8. I have rescheduled the first pair for the last slot; the other two pairs must contact me to schedule a separate presentation.

Sat Mar 29 19:10:36 EDT 2014

Assignment 8 is graded. The average grade is 89%. The grades range from 20/30 to 30/30. The score consists of two pieces: a grade for passing my test suite and a grade for your code.

I went easy on those (many!) who failed to separate the problems properly from provided files.

Note that in this day and age it is expected to treat Unicode files properly.

Sun Mar 23 15:56:30 EDT 2014

A pair asks how to partition the presentations. The intention is that each pair’s presentation represents the paper and the pair’s insights as a coherent whole. This implies that the pair should split the presentation at an appropriate point. I typically recommend that the first presenter starts with the high-level summary of the paper from the proposal, the motivation of studying this paper, and the questions that arose. The second presenter can then deal with the investigative process and the pair’s findings.

If the two investigators had different reasons for studying the paper, came up with different questions, contributed differently to the process, do not cover such details in a talk.

Wed Mar 19 10:19:10 EDT 2014

Please note the addition of Presentations.

Mon Mar 17 19:42:58 EDT 2014

Assignment 7, problem 2 is graded. The average grade is 65%. The grades range from 5/15 to 13/15. The score consists of three pieces:
  • English (6), which subsumes thesis statements, phrasing, word choice, and spelling;

  • ideas (6), which applies to correctness of statements and coverage (see below);

  • organization (3), which concerns both the organization of the memo and the organization of individual paragraphs.

For each category, a certain range of mistakes caused the subtraction of a certain number of points. For example, two to five English problems fall into the same rank, assuming equal severity.

Over the first eight weeks of the semester, we discussed language design in terms of syntax, scope, informal semantics, the language of types and a system of type checking rules, and a formal (operational) semantics. I expected your memo to cover some of these terms per proposed extension, to address them correctly, and to deal with at least one of them fin some detail. Naturally I cannot expect you to spell out everything in a one-page memo so I applied leniency where the memo indicated a basic understanding of these issues.

Sat Mar 15 21:08:29 EDT 2014, amended Sat Mar 15 22:14:08 EDT 2014

Assignment 7, problem 1 is graded. The average grade is 85%. The grade reflects how your articulation of discrepancies explains discrepancies that my test battery found (if any). See "MF" in the returned README file for details. Here are a three notes on the results:
  • Most of you had faulty implementations. The model was accurate.

  • Only three pairs seemed to have seriously flawed models.

  • Some of you failed to read the blog concerning Dan’s strange test case. See below. In the future, make sure to read the blog.

As explained in the first lecture and the lecture that prepared this problem set, scientists have no choice but to improve their models when they find discrepancies; engineers can usually change either the model or the implementation.

On Tuesday, I will hand back the grades for problem 2 on paper.

Wed Mar 12 22:09:45 EDT 2014

Here are some of the sample programs from two weeks ago: 7a.rkt, 7b.rkt, 7c.rkt, 7d.rkt, and 7x.rkt.

Tue Mar 11 14:02:41 EDT 2014

I will hand back your proposal write-ups tonight. I have updated Writing with comments about your proposal memos. Please read them. You will need to hand in your proposal memo with your research report so that I can see how you reacted to my suggestions.

Keep in mind that you can consult with Ms. Biron more than once when you are preparing your report.

Mon Mar 10 16:36:01 EDT 2014

Due to a defense, I cannot hold office hours today.

For problem set 7, you may assume that (1) I will eliminate any (test-results) lines and (2) I will avoid running your tests. If you find any other superficial differences due to the '("type\nerror!") vs "type error!" discrepancy, you may let me know via email.

Fri Mar 7 11:31:11 EST 2014

I found bugs in problem set 8’s revised model and re-posted it. In case you have downloaded the revised OO model, please re-visit.

In addition, I discovered that I relied on a feature of Redex that is available in the "cutting edge" version only. I have now (Friday) annotated the two places with commented replacements for those who are running a regular DrRacket so that you don’t have to download a new installation.

Wed Mar 5 11:53:05 EST 2014

Assignment 6 is graded. The average grade is 88%. The 30 points are distributed over these categories: the formulation of the type system; the modification of the evaluate function; and the proper treatment of traces examples in an sr submodule.

My grading is quite lenient on the judgment rule formulation. As explained in the book and the lecture, a judgment form specifies a structurally recursive function with a context (sometimes a fixed-value "accumulator", other times a truly accumulating parameter). I provided code for the lecture example so you could study the idea in depth. When you design a judgment, the design recipe covered in lectures 1 and 2 applies; it helps and it makes the judgment(s) natural and readable. For in-depth hints, see Problem Set 8; if you have questions, ask.

Please inspect the graded solution to make sure that I prepared your model’s evaluate function properly for running the comparison checks for problem set 7. If you think I made a mistake, please send email.

Sun Mar 2 20:14:02 EST 2014

Two pairs asked whether problem set 7 was due on Tuesday, March 4. No, there are no class activities this week, not even problem sets are due.

Also, Dan Feltey points out that 7-script.rkt contradicts the specification Problem Set 6. Instead of looking for '("type\nerror!"), main’s if checks for "type error!" instead. The reason is that I discovered a problem in the transition to Problem Set 7 and fixed it by modifying the model—without changing Problem Set 6. I will modify your solutions to Problem Set 6 so that your model returns a plain string when it discovers a type error. Please double-check when you get your graded and modified solution back.

Thu Feb 27 13:48:55 EST 2014

Associate Dean Agnes Chan has requested that I cancel all class activities for next week, in particular, class on Tuesday. I will run a make-up class in the last week of the semester at a time when I can secure a classroom.

Note the change to my office hour.

Finally, I have released the presentation schedule (see Schedule).

Tue Feb 25 17:41:12 EST 2014

The project due date was misplaced. It is 23 March 2014 not the 27th as advertised. Sorry for this mistake.

Mon Feb 24 18:35:27 EST 2014

Mon Feb 24 16:55:47 EST 2014

You will keep your current partner through problem set 7, that is, you will switch partnerships for problem sets 8, 9, and 10. If you already know who you wish to partner with, you may let me know.

Sun Feb 23 19:23:39 EST 2014

Assignment 5 is graded. The average grade is 81%. The 12 points are distributed over these categories: the proper formulation of the standard reduction function, the proper formulation of the conjecture, proper testing, and a few style points. The lower number of points reflects the small number of changes needed to create this solution from the one for problem set 3 (about four lines in my case). The goal was to give you time for the proposal writing task.

Sun Feb 23 14:24:47 EST 2014

I have clarified Problem Set 6 in two places. Please look for strike-outs and revisions.

Sat Feb 22 09:55:11 EST 2014

Please noticed that I modified the delivery specification for Problem Set 6.

Here is some advice on the use of "we" in science writing. When you write a descriptive piece or section of a paper, such as for your first writing task, stay away from "we" completely. When you write a proposal, especially for a funding agency such as NSF, consider using "the PI" or "the PIs" if there is more than one primary investigator; you are welcome to employ this style for your project proposal. Finally, when you write up the results of an investigation, especially for publication in a conference or journal, try to use (1) active voice, without turning software systems into little humans, (2) "we" especially if you can use it in the sense of "you, the reader, and I, the author" and preferably not in the sense of the "royal" voice, and (3) passive voice including "to be" verb phrases.

Tue Feb 18 22:02:36 EST 2014

Here are the sample programs from tonight: 6a.rkt, 6b.rkt, 6c.rkt, and 6d.rkt. For those of you who have not explored the Racket’s documentation yet, it contains a tutorial on Redex that is highly recommended.

Also, I blanked on the names of the people who connected logic and type theory initially. They were Curry and Howard, and the connection is called the Curry-Howard isomorphism. Tim Griffin expanded this connection from constructive (intuitionistic) logic to classical logic, using the lambda calculus of control; Charles Baker (now NYU) and Ken Shan (now Indiana) applied the same lambda calculus to conversations (i.e., computational linguistics).

Tue Feb 18 16:02:36 EST 2014

After some additional consideration, I have decided to teach a lecture during spring break. For now I have reserved 366 in WVH for the usual Tuesday slot. If we can agree to a more convenient three-hour slot, I am willing to move the slot.

Sat Feb 15 20:49:43 EST 2014

Tue Feb 11 22:03:40 EST 2014

In lecture, I skipped the following statement:

Language L performs on-line type-checking.

The authors probably mean that the IDE (interactive development environment) statically checks the types as much as possible as a programmer enters the text into an editor. If so, this statement really exposes

a confusion between language L and the IDE.

Many IDEs are constructed for many languages. Some of the latter have a static type system, which the IDE can use to type check a program as it is constructed. Others don’t, in which case the IDE cannot check anything. Conversely, a language L can be used in many different IDEs. Some IDEs check types as the programmers completes phrases, others don’t check types at all. The key is not to conflate different elements in the tool chain, because it limits your conception of ideas.

Tue Feb 11 10:30:09 EST 2014

See Writing for notes on how I graded your first memo and general suggestions.

Mon Feb 10 23:59:06 EST 2014

Assignment 3 is graded. The average grade is 86%. The 60 points are distributed over the three problems; I also subtracted points from pairs who did not follow the Deliverable specifications.

I will post a short write-up on the grading of problem 1.

Keep in mind that your Proposal is due with Ms. Biron in a few days.

Thu Feb 6 10:19:32 EST 2014

On request, I am making the code from Tuesday night available: 4.rkt, 4a.rkt, 4b.rkt, 4c.rkt, 4d.rkt, and subst.rkt

Wed Feb 5 19:57:25 EST 2014

I have modified one sentence of Problem Set 4 and added an explanatory one.

Wed Feb 5 08:54:28 EST 2014

The project page lists the approved projects (see bottom). Until your name and project title shows up there, you are not approved to proceed on the project.

Fri Jan 31 16:02:44 EST 2014

Assignment 2 is graded. The average grade is 86%. The 20 points are distributed over three groups: project delivery; running the code on my test suite; and a code inspection looking at design and style issues.

Here are some basic design hints:
  1. Use pattern matching properly to avoid escapes to Racket, especially plain old tests.

  2. Mark accumulator designs and formulate accumulator statements; people often did not get the corresponding functions correct when they failed to articulate a (proper) accumulator statement.

And here are some style hints:
  1. Do not place closing parentheses on separate line. Don’t!

  2. Stick to a width of 80 columns. DrRacket supports setting this width.

  3. Let DrRacket indent for you.

Wed Jan 29 17:55:26 EST 2014

Please study the "type checker" code from last night’s lecture in detail.

Tue Jan 28 11:23:53 EST 2014

Today's meeting will take place in WVH 366. Next week's meeting will be in Snell Library 121.

Thu Jan 23 16:01:26 PST 2014

I am considering running a make-up class during spring break. If you have plans to leave town for that week, please let me know.

Most of you have turned in solutions for problem set 2. Thanks. The third assignment is due 4 Feb 2014.

Sat Jan 18 16:34:24 EST 2014

Assignment 1 is graded. The average grade is 68%. The 20 points are distributed over three groups: project delivery (a read-me file has a certain content, projects come with test files); running the code on five simple files (5 points); and a quick code inspection (basic docs, some unit tests).

Fri Jan 17 17:29:33 EST 2014

Please read the updated Project page. Start looking for a topic and don’t hesitate to contact me.

Wed Jan 15 12:24:47 EST 2014 I have revised the delivery instructions for problem set 2.

Tue Jan 14 21:26:14 EST 2014

The code from the lecture consists of six parts: 2.rkt, 2a.rkt, 2b.rkt, 2c.rkt, 2d.rkt, and 2e.rkt Each comes with a list of objectives at the top. Read the files in conjunction with Part II of the Redex textbook.

Thu Jan 9 20:19:55 CST 2014

I have made small corrections to the first assignment. Otherwise please do read sentences completely, and yes, your program may issue error messages.

Wed Jan 8 15:16:57 EST 2014

NU has assigned Snell Library 121 to the course. I will announce when we will start meeting there.

Mon Dec 30 16:58:57 EST 2013

Welcome to iPPL (CCIS 7400). The first meeting is in WVH 366 due to a larger-than-expected demand.

Please bring a letter-sized sheet of paper to our first meeting, fold it in half along, write down your favorite programming language, and place it in front of you so that the name of the language is visible from the front of the room.