



Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
The course introduction for CS152: Programming Languages. an overview of the course, including course motivation and goals, coursework, course pitfalls, and academic integrity. The document also includes information about the instructor, Dan Grossman, and his background. The course is offered at a real university and is taught in Spring 2011. The document could be useful as lecture notes or study notes for a university student preparing for an exam. The typology of the document is 'lecture notes'.
Typology: Lecture notes
1 / 5
This page cannot be seen from the preview
Don't miss anything!




Dan Grossman Spring 2011
(^) Administrative stuff
(^) Introducing myself (^) Expanded version because I’m a visitor
(^) Course motivation and goals (^) A Java example
(^) Course overview (^) Expanded version because you’re shopping
(^) Course pitfalls
(^) Start on Caml tutorial (most of Thursday) (^) Advice: start playing with it soon to learn and/or remember (e.g., hw1, problem 1) Dan Grossman CS152 Spring 2011, Lecture 1 2
(^) Dan Grossman, Maxwell Dworkin 233, [email protected]
(^) TF: Paul Govereau, Maxwell Dworkin 309, [email protected]
(^) Office hours to-be-determined (see web page) (^) Also encouraged to make appointments with me or even just stop by
(^) Web page for: (^) “homework 0” (^) homework 1, fairly carefully pipelined with first lectures (^) Do not wait to do it all
Dan Grossman CS152 Spring 2011, Lecture 1 3
(^) 6 homework assignments [almost surely] (^) “Paper/pencil” (LATEX recommended?) (^) Programming (Caml required) (^) Where you’ll probably learn the most (^) Do challenge problems if you want but not technically “extra”
(^) One “introduction/summary” to a published research paper (^) More details in a few weeks; high work/length ratio
(^) 2 exams (^) my reference sheet plus your reference sheet; samples provided
(^) No textbook (^) But several books on reserve (see web page and ask) (^) Will post slides and will try to write lecture notes (^) Lecture notes from CS152 Spring 2010 may prove useful (^) 80%+ same material, but somewhat different order/style
Dan Grossman CS152 Spring 2011, Lecture 1 4
(^) Don’t cheat in my class (^) I’ll be personally offended (^) Being honest is far more important than your grade
(^) Rough guidelines (^) can sketch idea together (^) cannot look at code solutions
(^) Ask questions and always describe what you did
(^) Please do work together and learn from each other
(^) Take notes: (^) Slides posted, but they are enough to teach from not to learn from (^) Will often work through examples by hand
(^) Arrive on time: (^) Unlike many CS people, I start and end punctually (10:07–11:30) (^) Missing the first N minutes is so much less efficient than missing the last N minutes (^) I know you can get here on time (cf. exam days)
I’m a “visiting faculty member” just for this semester
(^) Normally at the University of Washington in Seattle
(^) This should not scare you away from taking this course
(^) Let me compensate for you not being able to look up my evaluations or ask your friends about me...
Dan Grossman CS152 Spring 2011, Lecture 1 7
(^) Last year’s CS152 is a reasonable approximation
(^) I’ve taught this material [mostly to graduate students] 8 times
(^) Planning about 15% new stuff to keep things fresh/improving and because the term is longer
(^) I love teaching and I love the material in this course (^) Hopefully “Lecture 1” is the most boring one? (^) Most professors don’t teach while on sabbatical
Dan Grossman CS152 Spring 2011, Lecture 1 8
Evaluations from last time I taught a similar course (Fall 2009)
Excellent Very Good Fair Poor Very Good Poor Course as a whole 62% 29% 8% 0% 0% 0% Course content 50% 33% 17% 0% 0% 0% Instructor’s contribution 83% 12% 4% 0% 0% 0% Instructor’s effectiveness 79% 12% 8% 0% 0% 0% Instructor’s interest 75% 12% 12% 0% 0% 0% Amount learned 54% 17% 25% 4% 0% 0% Grading techniques 42% 42% 12% 4% 0% 0%
Dan Grossman CS152 Spring 2011, Lecture 1 9
Saving you a Google search: (^) http://www.cs.washington.edu/homes/djg (^) http://www.facebook.com/profile.php?id= Professional life story: (^) St. Louis suburbs → Rice → Cornell → UW (^) UW universally “top-10” CS and arguably # (^) But try to convince my grandma (^) Seriously, if looking at grad school, we should talk (^) Programming languages from theory to practice (^) Morrisett was my Ph.D. advisor; Chong was an office-mate (^) I’m here to refresh, collaborate, learn, and teach — and have fun Other: Ice hockey, cycling and running, non-fiction, my nephew, beer, ...
Dan Grossman CS152 Spring 2011, Lecture 1 10
So this is sort of like “study abroad” for the professor instead of the students
(^) Please don’t get too upset when I mess up the jargon, but correct me (^) TF, semester, concentration, ...
(^) Different logistics than I’m used to (^) web page, grades, photocopier, ... (^) will probably all settle down after this week
(^) Help me if you see me lost on campus :-)
More importantly, we may have to work together on the pace (^) But based on last year’s CS152, I think we’ll be fine
Focus on semantic concepts:
What do programs mean (do/compute/produce/represent)?
How to define a language precisely?
English is a poor metalanguage
Aspects of meaning:
equivalence, termination, determinism, type,...
This course does not gives superficial exposure to N weird PLs (^) More like CS121 than CS51, but not really like either (^) But it will help you learn new languages via foundations
(^) Study syntax; learn to specify grammars, parsers
(^) Transforming 3 + 4 or (+ 3 4) or +(3, 4) to “application of plus operator to constants three and four” (^) Stop me when I get too sloppy
(^) Learn specific programming languages (but some ML)
Dan Grossman CS152 Spring 2011, Lecture 1 19
(^) Define really small languages (^) Usually Turing complete (^) Always unsuitable for real programming
(^) Extend them to realistic languages less rigorously
(^) Digress for cool results (this is fun!?!)
(^) Study models very rigorously via operational models
(^) Do programming assignments in Caml
Dan Grossman CS152 Spring 2011, Lecture 1 20
Hard to give a taste of what the “theory” will look like, but here is some cut-and-paste from topics we will cover in the next few weeks
Lectures 3–
H ; e ⇓ c H ; x := e → H, x → c ; skip
H ; e ⇓ c c> 0 H ; if e s 1 s 2 → H ; s 1
H ; e ⇓ c c≤ 0 H ; if e s 1 s 2 → H ; s 2
Lectures 7–
Γ, x : τ 1 e : τ 2 Γ λx. e : τ 1 → τ 2
Γ e 1 : τ 2 → τ 1 Γ e 2 : τ 2 Γ e 1 e 2 : τ 1
Dan Grossman CS152 Spring 2011, Lecture 1 21
(^) Caml is an awesome, high-level language
(^) We will use a tiny core subset of it that is well-suited for manipulating recursive data structures (like programs!)
(^) You mostly have to learn it outside of class (^) Don’t procrastinate (^) Don’t hesitate to ask questions
(^) Resources on course webpage
(^) I am not a language zealot, but knowing ML makes you a better programmer
Dan Grossman CS152 Spring 2011, Lecture 1 22
How to hate this course and get the wrong idea:
(^) Forget that we made simple models to focus on the essence
(^) Don’t quite get inductive definitions and proofs when introduced
(^) Don’t try other ways to model/prove the idea (^) You’ll probably be wrong (^) And therefore you’ll learn more
(^) Think PL people focus on only obvious facts (^) Need to start there
Acknowledging others is crucial...
This course draws heavily on pedagogic ideas from at least: Chambers, Chong, Felleisen, Flatt, Fluet, Harper, Morrisett, Myers, Pierce, Rugina, Walker And material covered in texts from Pierce, Wynskel, and others (This is a course, not my work.)
(^) “Let go of Java/C”
(^) If you have seen SML, Haskell, Scheme, Lisp, etc. this will feel more familiar
(^) If you have seen Caml, focus here on “how I say things” and what subset will be most useful to us in studying PL
(^) Give us some small code snippets so we have a common experience we can talk about
(^) Also see me use the tools
Dan Grossman CS152 Spring 2011, Lecture 1 25