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.printDepthsimilarly 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.