Programming Languages (CS302 2007S)
[Skip to Body]
Admin:
[Front Door]
[Glance]
[Handouts]
[Honesty]
Current:
[Current Outline]
[Current EBoard]
[Current Homework]
Groupings:
[EBoards]
[Examples]
[Exams]
[Handouts]
[Homework]
[Outlines]
[Readings]
[Reference]
[HOG]
Misc:
[SamR]
[CSC302 1999S]
[CSC302 2006S]
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: A History of Programming Languages | |||
(01) Monday, January 22, 2007 Introduction to the Course What is a programming language? How should we study programming languages? Why study programming languages? Course details. Assignments: Do Wednesday's readings. HW1: Intro Survey. |
(02) Wednesday, January 24, 2007 An Abbreviated History of Programming Languages Some questions from the readings. Exercise: Dating key ideas. An abbreviated history of programming languages. Reading: Byte Magazine: A Brief History of Programming Languages, Wikipedia: History of Programming Languages, and Jean Sammet - Programming Languages: History and Future |
(03) Friday, January 26, 2007 The Evolution of Some Key Language Features The Story of Mel, a Real Programmer. Reading Ryder et al. Major Characteristics. Relating to Past Papers. Assignments: Homework 2: Permutations. Reading: Barbara Ryder et al. - The Impact of Software Engineering Research on Modern Programming Languages and Ed Nather - The Story of Mel, a Real Programmer |
|
Week 2: On the Design of Programming Languages | |||
(04) Monday, January 29, 2007 Goto Considered Harmful Context. Dijkstra's Famous Letter. Permutation with Repetitions. Reading: Edsger W. Dijkstra - Goto Considered Harmful and P. Bratley - Algorithm 306: Permutation with Repetitions |
(05) Wednesday, January 31, 2007 Basics of Programming Language Design Permutation with repetitions. Choosing a language. Key design criteria. Notes from the readings. Reading: C.A.R. Hoare - Hints on Programming Language Design and Richard Gabriel - The End of History and the Last Programming Language |
(06) Friday, February 2, 2007 Hoare's Examples, Revisited Examples from Hoare. Choosing a language. Key design criteria. More notes from the readings. Due: Homework 2: Permutation with Repetitions. Assignments: Homework 3: Removing Recursion. Reading: C.A.R. Hoare - Hints on Programming Language Design |
|
Week 3: Higher-Order Programming through Graphical Computation | |||
(07) Monday, February 5, 2007 Getting Started with Script-Fu About this week. Lab. Reading: Samuel A. Rebelsky - Scripting the GIMP with Script-Fu |
(08) Wednesday, February 7, 2007 Higher-Order Graphics The basics of higher-order procedures. Lab. Reading: Samuel A. Rebelsky - Higher-Order Graphics |
(09) Friday, February 9, 2007 Representing Drawings Lab. Due:HW3. Assignments: HW4. Reading: Samuel A. Rebelsky - Points, Lines, and Images |
|
Week 4: Detour: Some Notes on C Programming | |||
(10) Monday, February 12, 2007 Notes on HW3 Testing and Loop Invariants. Citing Code. Segmenting Programs. |
(11) Wednesday, February 14, 2007 Macros and More Background: Refactoring. A Domain: Quicksort. Macros: Basic Concepts. Enumerated Types. Macros: Some Hacks. |
(12) Friday, February 16, 2007 More C Stuff, Including a Bit on Make Quicksort, continued. Representing points. Due:HW4. Assignments: HW5. |
|
Week 5: LISP | |||
(13) Monday, February 19, 2007 Why LISP? Why lists? Graham's differences. Other issues. Reading: Paul Graham - The Revenge of the Nerds, Paul Graham - What Made Lisp Different, and John McCarthy - History of LISP |
(14) Wednesday, February 21, 2007 Class Cancelled |
(15) Friday, February 23, 2007 The Design of LISP Summary of the Paper. S-Expressions, S-Functions, and M-Expressions. Eval. Other Topics. Reading: John McCarthy - Recursive Functions of Symbolic Epxressions and Their Computation by Machine, Part I |
|
Week 6: Continuations | |||
(16) Monday, February 26, 2007 Implementing LISP eval , continued.
Flaws in eval .
Graham's Claims.
Implementing Lisp.
Garbage Collection.
Reading: Paul Graham - The Roots of LISP |
(17) Wednesday, February 28, 2007 Continuation Basics Basics of Continuations. Some Examples. Some Applications of Continuations. Continaution-Passing Style. Reading: Paul Graham - Scheme Continuations and R. Kent Dybvig - Continations and Continuation Passing Style |
(18) Friday, March 2, 2007 Continuations and Web Servers Continuations and the Web. Sam's sample code. Applications of continuations, revisited. Continuation-Passing Style. Due:HW5. Reading: Christian Queinnec - The Influence of Browsers on Evaluators or, Continuations to Program Web Servers and Samuel Rebelsky - webcont.scm |
|
Week 7: Object-Oriented Programming | |||
(19) Monday, March 5, 2007 Basics of Object-Oriented Programming What is object-oriented programming? Three key issues: Encapsulation, Inheritance, Polymorphism. Why OOP? A biased history. Polymorphism vs. Overloading. Due:HW5. Reading: CS302 Students: Answers to Questions on Polymophism and Overloading |
(20) Wednesday, March 7, 2007 Growing a Language Reading: Guy L. Steele, Jr.: Growing a Language |
(21) Friday, March 9, 2007 The Design of C++ Reading: Bjarne Stroustrup: The Design of C++ |
|
Week 8: Introspection and Reflection in Java | |||
(22) Monday, March 12, 2007 Introspection in Java Introspection basics. A problem: Factory Methods. A problem: Dynamic Loading. A problem: Serializing. A problem: Profiling. Reading: Sun Microsystems: Trail: The Reflection API |
(23) Wednesday, March 14, 2007 Anonymous Inner Classes Anonymous values. Encapsulation and inner classes. Anonymous inner classes. Applications. |
(24) Friday, March 16, 2007 Java Generics Limitations to Java's Strong Type Checking. A (Partial) Solution: Java Generics. Restricting Parameter Classes. Subtleties. Behind the Scenes. Due: Mid-Semester Exam. |
|
Spring Break | |||
Week 9: Discussion of Mid-Semester Examination | |||
(25) Monday, April 2, 2007 Preliminary Discussion of Mid-Semester Examination General Issues. Problem 1. Problem 2. Problem 3. Problem 4. |
(26) Wednesday, April 4, 2007 Continued Discussion of Mid-Semester Examination What should we do? Problem 3, continued. Problem 4. Presentations (if time). |
(27) Friday, April 6, 2007 Mid-Semester Examination, Concluded Problem 3, Concluded. Problem 4. Presentations. |
|
Week 10: Ruby - Another Approach to Object-Oriented Programming | |||
(28) Monday, April 9, 2007 Ruby (1) Rhetoric of Readings. Java Basics Reviews. New Ruby Features. Ruby Syntax. Reading: whytheluckystiff - A Quick (and Hopefully Painless) Ride Through Ruby (with Cartoon Foxes); Marick - Chapter 1 of A Little Ruby, A Lot of Objects; and Marick - Chaper 2 of A Little Ruby, A Lot of Objects |
(29) Wednesday, April 11, 2007 Ruby (2) Lab. |
(30) Friday, April 13, 2007 Ruby (3) About the Presentations. Rails. Convention and Introspection. Ruby vs. Java, Revisited. Reading: Walton & Hibbs - Rolling with Ruby on Rails Revisited and Walton - Rolling with Ruby on Rails Revisited, Part 2 |
|
Week 11: Types and Type Checking | |||
(31) Monday, April 16, 2007 Types (1) An Introduction to Types. Simple Data Types. Type Constructors. |
(32) Wednesday, April 18, 2007 Types (2) Types, Revisited. Types as Sets. Lessons from CLU. References, Pointers, and Variables. Reading: Barbara Liskov et al. - Abstraction Mechanisms in CLU |
(33) Friday, April 20, 2007 Types (3) The CLU Reading. Cardelli and Wegner. Type Equivalence. Structural Equivalence, Revisited. Assignment Compatibility. Type Coercion. Design Issues. Reading: Luca Cardelli & Peter Wegner: On Understanding Types |
|
Week 12: Declarative Languages: SQL and Relational Databases | |||
(34) Monday, April 23, 2007 Declarative Langauges Language Paradigms, Revisited. Abstraction, Revisited. Common Categories of Declarative Languages. Predicate Logic Languages. Regular Expression Languages. Database Languages. |
(35) Wednesday, April 25, 2007 SQL (1): The Relational Model Context. Codd's Contributions. Why Read This Paper? Thinking About Relations. Operations on Relations. Reading: Codd - A Relational Model for Large Shared Data Banks |
(36) Friday, April 27, 2007 SQL (2): SEQUEL Codd's Contributions. Why Read This Paper? Thinking About Relations. Operations on Relations. Relations as Programming Language. Describing a Language. What's Missing from SEQUEL? Reading: Chamberlin and Boyce - SEQUEL: A Structured English Query Language |
|
Week 13: Student Presentations | |||
(37) Monday, April 30, 2007 Presentations (1) - Garbage Collection |
(38) Wednesday, May 2, 2007 Presentations (2) - Prolog |
(39) Friday, May 4, 2007 Presentations (3) - Postscript |
|
Week 14: Wrapup | |||
(40) Monday, May 7, 2007 Presentations (4) - Scripting Languages |
(41) Wednesday, May 9, 2007 Programming Epigrams Epigrams and Languages. Confusing Epigrams. Grouping Epigrams. Reading: Alan J. Perlis: Epigrams on Programming |
(42) Friday, May 11, 2007 Evaluation and Wrapup Grading. About the final. About the midsem. Wrapup. Evaluation forms. |
[Skip to Body]
Admin:
[Front Door]
[Glance]
[Handouts]
[Honesty]
Current:
[Current Outline]
[Current EBoard]
[Current Homework]
Groupings:
[EBoards]
[Examples]
[Exams]
[Handouts]
[Homework]
[Outlines]
[Readings]
[Reference]
[HOG]
Misc:
[SamR]
[CSC302 1999S]
[CSC302 2006S]
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 Sun Apr 29 11:24:54 2007.
The source to the document was last modified on Sat Jan 20 21:48:29 2007.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS302/2007S/Handouts/glance.html
.
You may wish to
validate this document's HTML
;
;
Check with Bobby