Programming Languages (CS302 2006S)
[Skip to Body]
Primary:
[Front Door]
[Current]
[Glance]
-
[Honesty]
[Instructions]
[Links]
Groupings:
[EBoards]
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Outlines]
[Readings]
[Reference]
Misc:
[SamR]
[CSC302 1999S]
This is an abbreviated course syllabus. Like everything else in this course, it is likely to change.
Weeks: 1, 2, 3, 4, 5, 6, 7, 8, break, 9, 10, 11, 12, 13, 14.
| Week 1: Background | |||
| (01) Monday, January 23, 2006 Introduction to the Course What is a programming language? How should we study programming languages? Why study programming languages? Course details. Assignments: Read Sebesta's Evolution of the Major Programming Langauges. |
(02) Wednesday, January 25, 2006 Cancelled No class. Thought question. |
(03) Friday, January 27, 2006 An Abbreviated History of Programming Languages Exercise: Dating key ideas. An abbreviated history of programming languages. Assignments: Read N. Wirth's On the Design of Programming Languages(due Monday) Read C. A. R. Hoare's Hints on Programming Language Design(due Monday). |
|
| Week 2: Design, Continued | |||
| (04) Monday, January 30, 2006 Basics of Programming Language Design Notes from the readings. Choosing a language. Key design criteria. Assignments: Read Paul Graham's Revenge of the Nerds(due Wed.). Read John McCarthy's History of LISP(sorry, only in PDF) (due Wed.). Read John McCarthy's Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I(due Fri.). You may find it useful to refer to Paul Graham's The Roots of Lispto understand the second McCarthy paper (due Fri.). |
(05) Wednesday, February 1, 2006 Hoare's Examples More examples from Hoare. Why recurse? Assignments: Read John McCarthy's Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I(due Fri.). Read Paul Graham's The Roots of Lisp(due Fri.). |
(06) Friday, February 3, 2006 Why Functional Programming? Why LISP? Higher-order functions, revisited. Notes on the readings. Assignments: Using Graham's example, implement a simple LISP that includes lambdas, defines, and lets. You should start with cons, car, cdr,
nil, null? eval, cond, quote, atom?, eq?. For a C, use Scheme as your implementation language (that is, you need not implement these basic operations). For a B, use Java or C (that is, you'll need to implement the basic operations first). For an A, add input and output. Due next Friday.
|
|
| Week 3: LISP, Continud | |||
| (07) Monday, February 6, 2006 McCarthy's LISP What's the point? Terminology. Grahams eval. |
(08) Wednesday, February 8, 2006 Lambda Calculus Historical aspects. Notation basics. Currying. Assignments: Read Section 20.1 of Paul Graham's On Lisp. Read the portion of The Revised5 Report on the Algorithmic Language Scheme that deals with call-with-current-continuation. That portion falls on pages 33 and 34 of the standard printed version.
|
(09) Friday, February 10, 2006 Continuation Basics |
|
| Week 4: Scheme, In Depth (1) | |||
| (10) Monday, February 13, 2006 Continuation Lab Lab! Assignments: Read section 1-6 of The Revised5 Report on the Algorithmic Language Scheme. |
(11) Wednesday, February 15, 2006 The Scheme Report Why read R5RS? Your questions. Preparation. Assignments: Read Section 7.1 of the Revised5 Report on the Algorithmic Language Scheme. |
(12) Friday, February 17, 2006 Scheme Syntax Quasiquotation. Other Syntax Questions. Preparing to Read the Semantics. Assignments: Read Section 7.2 of R5RS up to the second equation of the second column of p. 41. Also read the definitions (on the subsequent) of any utility procedures used in those first few equations.. Due: Homework 1: Implement Lisp. |
|
| Week 5: Scheme Semantics | |||
| (13) Monday, February 20, 2006 Scheme Semantics (1) Why have a semantics? What is denotational semantics? Starting to read the Scheme semantics. Assignments: Read the definitions of script-E of lambda expressions on column two of p. 41 of R5RS. |
(14) Wednesday, February 22, 2006 Scheme Semantics (2) The semantic functions. Your first few meanings. Assignments: Read the definitions of script-E of lambda expressions on column two of p. 41 of R5RS. |
(15) Friday, February 24, 2006 Scheme Semantics (3) Notation, revisited. Revisiting hold. Function application. Lambda definitions. Assignments: For Monday: Find or write a good definition of object-oriented programming (and send it to me) and explain the difference between polymorphism and overloading. |
|
| Week 6: Object-Oriented Programming | |||
| (16) Monday, February 27, 2006 Basics of Object-Oriented Programming What is object-oriented programming? Three key issues: Encapsulation, Inheritance, Polymorphism. Why OOP? A biased history. Polymorphism vs. Overloading. Assignments: Read (and comment on) Chapters 1-3 of Beyond Java. |
(17) Wednesday, March 1, 2006 Java as Object-Oriented Language A brief history of Java. Why was Java successful? How do we measure success? Other perspectives on object-orientation. Assignments: Read Tate, chapters 4, 5, and 8. Homework 2: Semantics of D. |
(18) Friday, March 3, 2006 Growing a Language |
|
| Week 7: Java, Revisited | |||
| (19) Monday, March 6, 2006 Introspection in Java Introspection basics. A problem: Serializing. A problem: Profiling. Assignments: Summarize what an anonymous inner class is and why you might want to use one. |
(20) Wednesday, March 8, 2006 Anonymous Inner Classes Anonymous values. Encapsulation and inner classes. Anonymous inner classes. Applications. |
(21) Friday, March 10, 2006 Pause for Breath |
|
| Week 8: Java, Concluded | |||
| (22) Monday, March 13, 2006 Class Cancelled |
(23) Wednesday, March 15, 2006 Java Generics Limitations to Java's Strong Type Checking. A (Partial) Solution: Java Generics. Restricting Parameter Classes. Subtleties. Behind the Scenes. Assignments: Reading: Finish Beyond Java. Read Generics in the Java Programming Language. |
(24) Friday, March 17, 2006 Beyond Java Dynamic Languages. Some Key Questions. Tate's Criteria. |
|
| Spring Break | |||
| Week 9: Types and Type Checking | |||
| (25) Monday, April 3, 2006 Types (1) An Introduction to Types. Simple Data Types. Type Constructors. |
(26) Wednesday, April 5, 2006 Types (2) Types, Revisited. Describing Types. Types as Sets, Revisited. References, Pointers, and Variables. Notes on Liskov et al. Assignments: Read selected sections of Cardelli and Wegner. |
(27) Friday, April 7, 2006 Types (3) Type Equivalence. Structural Equivalence, Revisited. Assignment Compatibility. Type Coercion. Design Issues. |
|
| Week 10: Declarative Languages (1): SQL and Relational Databases | |||
| (28) Monday, April 10, 2006 Declarative Langauges What is a declarative language? Common forms of declarative languages. Why have declarative languages? Assignments: Post-mid-semester Examination. |
(29) Wednesday, April 12, 2006 SQL (1): The Relational Model Context. Codd's Contributions. Why Read This Paper?. Thinking About Relations. Operations on Relations. |
(30) Friday, April 14, 2006 SQL (2): SEQUEL Combining relations. Relations as programming language. Describing a language. General SEQUEL and SQUARE issues. What's missing from SEQUEL? |
|
| Week 11: Declarative Languages (2): Logic Programming | |||
| (31) Monday, April 17, 2006 Logic Programming (1) Declarative Programming, Revisited. Predicate Logic. Predicate Logic Programming. Assignments: Class Presentations. |
(32) Wednesday, April 19, 2006 Logic Programming (2) Prolog: Imposing Fixed Control on Horn-Clause Logic. Some Examples. The Need for Backtracking. Problems with Resolution. Affecting Control: Cut. |
(33) Friday, April 21, 2006 Logic Programming (3) Detour: Notation. Numbers. List Operations. Polynomials. Due: Mid-semester Examination. Assignments: Read the first five sections (Introduction; Values, Types, and Other Goodies; Functions; Case Expressions and Pattern Matching; Type Classes and Overloading) of A Gentle Introduction to Haskell. |
|
| Week 12: Another Functional Perspective: Haskell | |||
| (34) Monday, April 24, 2006 Haskell (1) An Introduction to Haskell. Haskell Syntax. Types in Haskell. Patterns in Haskell. |
(35) Wednesday, April 26, 2006 Haskell (2) Types in Haskell. Patterns and Data Structures. Lazy Evaluation and the Sieve of Eratothenes. Due: Topics for presentations. Assignments: Read Sections 1 (Evolution) and 2 (Distinguishing Features) of Hudak's Conception, Evolution, and Application of Functional Programming Languages. |
(36) Friday, April 28, 2006 Haskell (3) Lazy lists. Listing primes. |
|
| Week 13: Student Presentations | |||
| (37) Monday, May 1, 2006 Presentations (1): Ruby Basics |
(38) Wednesday, May 3, 2006 Presentations (2): Ruby Advanced |
(39) Friday, May 5, 2006 Presentations (3): FP, Another View of Functional Programming |
|
| Week 14: Wrapup | |||
| (40) Monday, May 8, 2006 Programming Epigrams Epigrams and Languages. Confusing Epigrams. Grouping Epigrams. |
(41) Wednesday, May 10, 2006 Scheme, Revisited |
(42) Friday, May 12, 2006 Evaluation and Wrapup |
|
[Skip to Body]
Primary:
[Front Door]
[Current]
[Glance]
-
[Honesty]
[Instructions]
[Links]
Groupings:
[EBoards]
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Outlines]
[Readings]
[Reference]
Misc:
[SamR]
[CSC302 1999S]
Disclaimer:
I usually create these pages on the fly
, which means that I rarely
proofread them and they may contain bad grammar and incorrect details.
It also means that I tend to update them regularly (see the history for
more details). Feel free to contact me with any suggestions for changes.
This document was generated by
Siteweaver on Wed May 10 09:02:22 2006.
The source to the document was last modified on Tue Jan 31 08:33:46 2006.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS302/2006S/Handouts/glance.html.
You may wish to
validate this document's HTML
;
;
Check with Bobby