2,3c2,3
< "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<
---
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
>
6c6
< COMP 411 — Principles of Programming Languages
---
> COMP 411: Principles of Programming Languages
9c9
< /* #schedule_tbl {border-collapse: collapse; table-layout: fixed; width: 100%; border: 1px solid black; }
> #schedule_tbl th { border: 1px solid black; }
> #schedule_tbl td { border: 1px solid black; }
23,28c23,28
< #schedule #num_colgroup { width: 4%; text-align: center; }
< #schedule #date_colgroup { width: 6%; text-align: center; }
< #schedule #day_colgroup { width: 6%; text-align: center; }
< #schedule #topic_colgroup { width: 28%; }
< #schedule #reference_colgroup { width: 32%; }
< #schedule #assignment_colgroup { width: 24%; }
---
> #schedule_tbl #num_colgroup { width: 4%; text-align: center; }
> #schedule_tbl #date_colgroup { width: 6%; text-align: center; }
> #schedule_tbl #day_colgroup { width: 6%; text-align: center; }
> #schedule_tbl #topic_colgroup { width: 28%; }
> #schedule_tbl #reference_colgroup { width: 32%; }
> #schedule_tbl #assignment_colgroup { width: 24%; }
31c31
<
---
>
35c35
<
---
>
39,43c39
< COMP 411
<
< Principles of Programming Languages
<
< Fall 2012
---
> COMP 411 Principles of Programming Languages (Fall 2011)
47c43,45
<
---
>
> Professor Swarat Chaudhuri
>
58c56
< Lecture: Room 1042, Duncan Hall, Monday, Wednesday, Friday, 1:00pm–1:50pm
---
> Fall 2011: Room 1042, Duncan Hall, Monday, Wednesday, Friday, 1:00pm–1:50pm
60,61c58,59
< For more information on the course staff including office hours, see course information.
<
---
> For more information on the course staff including office hours, see course information.
>
64c62
<
---
>
69,72d66
< The first two assignments (Assignments 0 and 0.5) must be done individually; they are warm-up exercises solely designed to help you learn
< the fundamentals of Scala. The first assignment covering course material (the principles of programming languages) is Project 1. Project 1 and all
< subsequent assignments should ideally be done in pairs. So you should think
< about identifying a programming partner starting September 5.
74c68
< If you haven't found a partner by September 5, send an email to the comp411-l mailing list.
---
> If you haven't found a partner, send an email to the comp411-l mailing list.
82c76
< Make sure you have the time to work on the project together.
---
> Make sure you have the time to work on the project together.
84,85c78
< Make sure that you team has some functional programming experience (e.g., Scheme, ML, writing in Java in a functional style) and some
< Java programming experience.
---
> Make sure that at least one partner has Java programming experience.
89,90c82
< You may choose to work alone. The work load is significant but manageable if you understand how to write mostly functional programs in Scala.
< We do not allow groups of more than two students, even if there is an odd number of students in the class.
---
> You may choose to work alone. We do not allow groups of more than two students, even if there is an odd number of students in the class.
92c84
< If you haven't found a partner and are not on this list, send an email to the comp411 mailing list.
---
> If you haven't found a partner and are not on this list, send an email to the comp411 mailing list.
94c86
< If you are on this list but have already found a partner, email the same list comp411 mailing list to remove you from this list.
---
> If you are on this list but have already found a partner, email Corky to remove you from this list.
111,125c103,110
< In the lecture materials, interpreters will be written in concise functional notation using Scala. (Past versions of the course materials used
< Scheme.) This Scala code is subject to revision as the instructor's understanding of Scala coding idioms improves.
<
< A secondary theme is software engineering. All of the
< programming assignments in this course are conducted in Scala
< using test-driven development and
< pair-programming, two of the major tenets of Extreme
< Programming. Scala is a putative successor to Java and runs on
< the Java Virtual Machine. Scala is fully compatible with
< compiled Java code. The Scala core libraries are an extension
< of the Java core libraries. In fact, it is possible to develop
< projects written partly in Scala and partly in Java, although we
< do not recommend using Java instead of Scala unless there is a
< strong external reason such as a project that extends an
< existing Java code base.
---
> In the lecture materials, interpreters are written in concise functional notation using Scheme.
> In some cases, supplementary material showing
> how the same interpreters can be written in OCaml (using explicit typing) are provided. While Java is a very good vehicle
> for implementing these interpreters, it is not a good conceptual representation because it is much too wordy and
> the OO structure obscures the simple algebraic structure of abstract syntax and structural recursion used to defin
> interpretation.
>
> A secondary theme is software engineering. All of the programming assignments in this course are conducted in Java using test-driven development and pair-programming, two of the major tenets of Extreme Programming.
136c121
< methods) are left to COMP 412, a
---
> methods) are left to COMP 412, a
151,154c136,138
< raise certain classes of error signals. Memory safety guarantees
< that programs release memory if it is provably useless (using graph
< reachability [pointer-chasing] and perhaps more powerful techniques) for the
< remainder of the evaluation. Type safety typically implies on
---
> raise certain classes of error signals. Memory safety guarantees
> that programs release memory if it is provably useless for the
> remainder of the evaluation. Type safety typically depends on
171,173c155,156
< a process which is explored in more detail in
< COMP 412
<
---
> a process which is explored in more detail in href="http://www.owlnet.rice.edu/~comp412/">COMP 412.
177,186c160,162
< Students who complete this course will be able to analyze the semantics and
< pragmatics of the old, new, and future programming languages that they
< are likely to encounter in the workplace (e.g., Fortran, C, C++, Java,
< Visual Basic, C#, Perl, Clojure, Groovy). They will also be able to build efficient
< interpreters for new languages or for "special-purpose" languages
< embeded in software applications. Finally, they will be much
< be equipped as software developers because they will understand how to
< define and implement whatever linguistic extensions are
< appropriate for simplifying the construction a particular software
< system.
---
> The course enables students to analyze the semantics and pragmatics of the old, new, and future programming languages that they are likely to encounter in the workplace (e.g., Fortran, C, C++, Java, Visual Basic, C#, Perl). They will also be able to build efficient interpreters for new languages or for "special-purpose" languages embeded in software applications. Finally, they will be much
> be equipped as software developers because they will understand how to define and implement whatever linguistic extensions are
> appropriate for simplifying the construction a particular software system.
189c165
< Notes on the common mathematical notation
---
> Notes on the common mathematifcal notation
196c172
< Please take a look at the course information some of
---
> Please take a look at the course information some of
207a184
> Powerpoint slides for selected lectures are available in this directory.
237c214
<
---
>
1034,1056d963
<
Scala
<
< - Getting started
<
<
- Quick References
<
<
- Online books
<
<
- Free Online course on Functional Programming in Scala by Martin Odersky
<
1060c967
< SDK Download
---
> SDK Download
1062d968
<
---
> Generic Java Documentation
>
1067c973
< API Reference
---
> API Reference
1073c979
<
---
>
1107,1109c1013,1018
<
< Haskell
<
---
>
> Haskell
>
>
> Scala
>
1116,1125c1025,1029
< Online at http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/.
<
< This book is a descendant of lecture notes created by Shriram
< for a version of this course when Shriram was a teaching assistant over a
< decade
< ago.
< Friedman, Wand, and Haynes, Essentials of Programming Languages, 2nd ed. (MIT Press, 2001)
<
< You can take a look at the following two chapters, which the
< authors prepared for the second edition, without buying the book:
---
> Online at http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/.
> This book is a descendant of lecture notes created by Shriram for a version of this course when Shriram was a teaching assistant over a decade
> ago.
> Friedman, Wand, and Haynes, Essentials of Programming Languages, 2nd ed. (MIT Press, 2001)
> You can take a look at the following two chapters, which the authors prepared for the second edition, without buying the book:
1128c1032
< Parameter Passing ( local file, PDF)
---
> Parameter Passing ( local file, PDF)
1131c1035
< Types and Type Inference ( local file, PDF)
---
> Types and Type Inference ( local file, PDF)
1136c1040
< Evaluation rules for functional Scheme ( PDF)
---
> Evaluation rules for functional Scheme ( PDF)
1139c1043
< References on evaluating Jam programs
---
> References on evaluating Jam programs
1142c1046
< Lecture Notes on Types I
---
> Lecture Notes on Types I
1145c1049
< Lecture Notes on Types II
---
> Lecture Notes on Types II
1148c1052
< Introduction to System F (Polymorphic Lambda-Calculus)
---
> Introduction to System F (Polymorphic Lambda-Calculus)
1151c1055
< Scheme code from Class Lectures
---
> Scheme code from Class Lectures
1154c1058
< The Essence of Compiling with Continuations by Flanagan et al.
---
> The Essence of Compiling with Continuations by Flanagan et al.
1157c1061
< Uniprocessor Garbage Collection Techniques by Paul Wilson
---
> Uniprocessor Garbage Collection Techniques by Paul Wilson
1163c1067
< Space Efficient Conservative Garbage Collection by Hans Boehm ( local file, PDF)
---
> Space Efficient Conservative Garbage Collection by Hans Boehm ( local file, PDF)
1174,1178c1078
< Revised Thread Synchronization Policies in DrJava (doc) ( pdf).
< Since DrJava is built using the Java Swing library, it must conform to
< the synchronization policies for Swing. Unfortunately, the official
< Swing documentation is sparse and misleading in places, so this document
< includes a discussion of the Swing synchronization policies.
---
> Revised Thread Synchronization Policies in DrJava (doc) ( pdf). Since DrJava is built using the Java Swing library, it must conform to the synchronization policies for Swing. Unfortunately, the official Swing documentation is sparse and misleading in places, so this document includes a discussion of the Swing synchronization policies.
1181,1183c1081
< Lesson: Concurrency in Swing.
< This lesson discusses concurrency as it applies to Swing programming.
< It assumes that you are already familiar with the content of the Concurrency lesson in the Essential Classes trail.
---
> Lesson: Concurrency in Swing. This lesson discusses concurrency as it applies to Swing programming. It assumes that you are already familiar with the content of the Concurrency lesson in the Essential Classes trail.
1186c1084
< Concurrency in Swing Text
---
> Concurrency in Swing Text
1199,1201c1097
< Students with disabilities are encouraged to contact me during the
< first two weeks of class regarding any special needs. Students with
< disabilities should also contact Disabled Student Services in the Ley Student Center and the Rice Disability Support Services.
---
> Students with disabilities are encouraged to contact me during the first two weeks of class regarding any special needs. Students with disabilities should also contact Disabled Student Services in the Ley Student Center and the Rice Disability Support Services.
1203,1205c1099,1100
<
<
<
---
>