Welcome to the CSE307 (Principles of Programming Languages)
home page for Spring 2010.
This page will be the main source of course information throughout
the semester.
Please check this page regularly for new messages.
The newest messages will always appear first.
- Final Exam grade sheets are now available.
- These are now available under the
Personalized Course Information Area.
The final exam was graded on a 100-point scale.
The maximum grade achieved by a CSE307 student was 77 points.
The maximum grade achieved by a CSE587 student was 82 points.
The minimum grade was 9 points.
The statistics are as follows:
FINAL (section CSE307) Valid 22; Mean 45.50; Std. Dev. 20.33
FINAL (section CSE587) Valid 4; Mean 69.75; Std. Dev. 12.23
In the above, "Valid" means the number of nonzero scores in the
applicable category.
- Homework 4, 5, and 6 grade sheets are now available.
- These are now available under the
Personalized Course Information Area.
If you have a question or complaint about your grade, please
first contact the TA by E-mail and discuss it.
If you are unable to reach agreement, contact me
and I will render my decision.
Homework 4 was graded on a ten-point scale.
Homework 5 was graded on a fifteen-point scale.
Homework 6 was graded on a ten-point scale.
The statistics are as follows:
HW4 (section CSE307) Valid 11; Mean 5.27; Std. Dev. 3.26
HW4 (section CSE587) Valid 4; Mean 9.25; Std. Dev. 1.50
HW5 (section CSE307) Valid 11; Mean 4.09; Std. Dev. 3.02
HW5 (section CSE587) Valid 2; Mean 8.50; Std. Dev. 7.78
HW6 (section CSE307) Valid 7; Mean 4.86; Std. Dev. 2.79
HW6 (section CSE587) Valid 4; Mean 8.50; Std. Dev. 0.58
In the above, "Valid" means the number of nonzero scores in the
applicable category.
- Final Exam Location
- The final examination will be held on Friday May 14, 11:15AM-1:45PM,
in the normal classroom (Library 4330). You don't need any
equipment other than writing implements and your USB ID.
- Exam 2 grade sheets are now available.
- These are now available under the
Personalized Course Information Area.
Exam 2 was graded on a 71-point scale.
The maximum grade on Exam 2 was 56 points.
The minimum grade was 12 points.
The statistics are as follows:
EXAM2 (section CSE307) Valid 22; Mean 30.64; Std. Dev. 12.05
EXAM2 (section CSE587) Valid 4; Mean 44.25; Std. Dev. 2.87
In the above, "Valid" means the number of nonzero scores in the
applicable category.
- Solutions to Midterm Problem 6 and 7
- See here for solutions
to the last two problems on the midterm. The problems were
supposed to check your understanding of how to do recursive
traversal of abstract syntax trees while maintaining a symbol
table or compile-time referencing environment, as well as your
understanding of how a corresponding run-time referencing
environment can be maintained on the V-machine.
I'm sorry to find that only a few people appear to actually have
studied carefully the SIMPLE and PROCS compilers that I gave out.
- Homework 3 grade sheets are now available.
- These are now available under the
Personalized Course Information Area.
If you have a question or complaint about your grade, please
first contact the TA by E-mail and discuss it.
If you are unable to reach agreement, contact me
and I will render my decision.
Homework 3 was graded on a twelve-point scale.
The statistics are as follows:
HW3 (section CSE307) Valid 12; Mean 6.75; Std. Dev. 3.14
HW3 (section CSE587) Valid 4; Mean 11.75; Std. Dev. 0.50
In the above, "Valid" means the number of nonzero scores in the
applicable category.
- Final exam date.
The course syllabus had an error
concerning the final examination date. The final examination
will be given on Friday, May 14, from 11:15AM to 1:45PM, in
accordance with the University final examination schedule,
not on Thursday, May 13, as was previously stated.
- Exam 1 grade sheets are now available.
- These are now available under the
Personalized Course Information Area.
Exam 1 was graded on a 60-point scale.
The maximum grade on Exam 1 was 53 points.
The minimum grade was 6 points.
The statistics are as follows:
EXAM1 (section CSE307) Valid 23; Mean 33.65; Std. Dev. 14.28
EXAM1 (section CSE587) Valid 4; Mean 34.50; Std. Dev. 8.58
In the above, "Valid" means the number of nonzero scores in the
applicable category.
- Homework 1 and 2 grade sheets are now available.
- These are now available under the
Personalized Course Information Area.
If you have a question or complaint about your grade, please
first contact the TA by E-mail and discuss it.
If you are unable to reach agreement, contact me
and I will render my decision.
Homework 1 was graded on a twenty-point scale.
Homework 2 was graded on a twelve-point scale.
The statistics are as follows:
HW1 (section CSE307) Valid 15; Mean 16.33; Std. Dev. 3.68
HW1 (section CSE587) Valid 4; Mean 17.75; Std. Dev. 1.71
HW2 (section CSE307) Valid 13; Mean 8.62; Std. Dev. 2.29
HW2 (section CSE587) Valid 4; Mean 10.00; Std. Dev. 0.00
In the above, "Valid" means the number of nonzero scores in the
applicable category.
- Homework 2 Solution:
I have put here a solution to
the Homework 2 exercise.
By the way, the need to use good programming style also applies
when you are programming in ML -- perhaps even more so because
there is more freedom in how to express your algorithm.
Many people seemed to throw out the window the idea of making
their code look simple, avoiding redundant code, keeping line
lengths reasonable, etc.
- Real-world uses of ML:
You might want to have a look at the following web page:
-
Jane Street Summer Project, a page on the
Jane Street Capital
website. This financial company is very interested in
ML variants (OCaml, SML, Haskell, etc.) for use in financial
modeling.
- Microsoft has also invested significantly in functional
programming in the form of its language
F#, which is an ML variant.
- See also this
Flying Frog Blog
about uses of functional programming in industry.
- A Case for ML:
A student in the class found
this position paper that makes the case for using ML
for compiler writing. Many of the points it makes are also
reasons why I use ML for this class. Have a look.
- Homework 1 Solutions:
I have put here some solutions to
the Homework 1 exercises.
- Modifying SML Print "Width" and "Depth:
The SML system will only print a certain number of elements of
a list or tuple before giving up and printing an elipsis (...)
for the rest. This can be modified by issuing the command:
Control.Print.printLength := 100;
after which the system will print up to 100 elements of a list
or tuple before giving up.
There is a similar notion of "print depth", which controls
how deeply into an object (such as a tree) printing will go.
You can modify this by assigning to the variable
Control.Print.printDepth
similarly to the above.
- TA Office Hours: The TA has had an unexpected situation
arise that will make it necessary for him to leave campus early
today (Thursday, February 18). So he will hold his office hours
from 11:00AM to 12:30PM today instead of the regularly scheduled
hours.
- Emailing me:
- Due to vast amounts of spam mail, I am forced to use a fairly
aggressive spam filter on my email. Because student email often
comes from places like Gmail, as does a lot of spam email,
students have sometimes had problems reaching me.
What worked last semester is for me to have a special whitelisted
mail alias specifically for this course, this semester.
The email address for this semester is:
cse307s10@starkeffect.com
If you have problems reaching me, use the address above.
Hopefully it will last the whole semester, but if a virus on
somebody's PC gives this address to a spam bot, I will have
to change it.
- Personalized Course Information Area:
- If you are taking the course, please visit the
Personalized Course Information Area,
register a user ID there, and fill out the
Academic Dishonesty Form.
I will be using this system to manage assignment
handin and distribute grades.