CS 350 Sem I 2015-16
Table of Contents
1 Course
1.1 About the Course
"19: A language that doesn't affect the way you think about programming, is not worth knowing." - Alan J. Perlis
Text Concepts, Techniques and Models of Computing by van Roy and Haridi. We will also use research articles and other books.
Schedule M Th 2-3:30 pm
Classroom Kadim Diwan 101
Submissions Moodle
1.2 Weightage
Number | Weightage | |
---|---|---|
Homeworks | 3 | 30 |
Quizzes | 2 | 10 |
Midsem | 1 | 25 |
Endsem | 1 | 35 |
2 Contents
2.1 Meeting Outlines
- 27-07 Introduction to Functional Programming in Oz
- 30-07 Referential Transparency; Tail Recursion
- 03-08 Programming with Lists, Higher-Order Programming
- 06-08 Laziness
- 10-08 Declarative Sequential Model
- 13-08 Lexical Scoping, Bind
- 17-08 Closures, procedure call
- 20-08 procedure call: call-by-reference (contd.), Pattern Matching
- 24-08 Unification and entailment
- 27-08 Extending the model with exceptions
- 31-08 Untyped \(\lambda\)-calculus - \(\alpha\), \(\beta\), \(\eta\) rules;
- 03-09 substitution as evaluation; Church Numerals
- 07-09 Lists; Y combinator
- 10-09 Recursion using Y combinator
- 21-09 Declarative Concurrency: Threads
- 24-09: Declarative concurrency: Threads (contd.)
- 28-09: Programming with streams
- 01-10: Programming with streams (contd.)
- 05-10: Laziness: semantics of triggers.
- 08-10: Message Passing Concurrency
- 12-10: Hectic Introduction to Erlang
- 15-10: Message passing in Erlang
- 26-10: Introduction to Ruby Some example code.
- 29-10: Loops, functions in Ruby. Introduction to objects.
- 02-11: Classes versus objects, inheritance in ruby [comparison with self]
- 05-11: Inheritance in Ruby (contd.)
- 09-11: Type inference in the typed λ-calculus
- Midsem
3 Software
- GNU/Emacs
1.1 An introductory video. 1.2 Hack Emacs! - modifying and customizing emacs. 1.3 Slightly advanced video tutorials.
- Mozart/Oz Install also the 32 bit Tcl/Tk Version 8.5!
4 Homeworks
- Homework 1
- Homework 2, due September 12, 2015. Files Unify.oz and ProcessRecords.oz Also, please read the API documentation. Here are some Examples.
- Homework 2, Part 2. Due September 28, 2015. Update (September 28, 2015): Unify.oz v3.1 (use with caution!)
- Homework 3, Due on October 29, 2015.
5 References
5.1 Mozart/Oz
- Wikipedia
- Stackoverflow
- Duchier, Gardent and Niehren. Concurrent Constraint Programming in Oz for Natural Language Processing, 2002.
5.2 Lambda calculus
- Gabriel, Richard P. The Why of Y, circa 1980s.
5.3 Smalltalk
- Kay, Alan. The Early History of Smalltalk, 1993.
5.4 Erlang
- Learn You Some Erlang!
- Armstrong, J. Virding, R., Wikström, C. and Williams, M. Concurrent Programming in Erlang
- Armstrong, J. Faults, Scaling and Erlang Concurrency - Stanford Seminar.
- Armstrong, J. The How and Why of Things Fit Together.
5.4 General Reading
- Wadler, Philip, Why No One Uses Functional Languages, 1998.
Myths and Realities of functional Languages. Emphasizes the need for popular applications written in functional languages.
- Hughes, John. Why Functional Programming Matters, 1984.
In addition to "referential transparency" and the lack of mutable state, the article explains how functional programs modularize better than imperative ones, because of two new glues - higher order functions and lazy evaluation.
- van Roy, Peter. Programming Paradigms for Dummies: What Every Programmer Should Know. (2009?)
Another version of the first chapter of the textbook. Can be read independently.
- Stratchey, Christopher. Fundamental Concepts in Programming Languages
An influential, informative set of lecture notes.
- Moseley, Ben and Marks, Peter. Out of the Tar Pit
Argues why mutable state sucks.
- Graham, Paul. Roots of Lisp, 2001.
Explains what makes Lisp different
- Stallman, Richard. My Lisp Experiences and the Development of GNU Emacs, 2002.
Explains the balance of C code and Emacs Lisp code in the design of emacs
- John McCarthy Interview, 2008.
- Landin, P. J. The Next 700 Programming Languages
- Landin, P. J. Correspondence between ALGOL 60 and Church's Lambda Notation, part I
- Landin, P. J. Correspondence between ALGOL 60 and Church's Lambda Notation, part II
Explains how imperative languages and control constructs relate to \(\lambda\) calculus.
6 Some Quotes
Simple things should be simple. Complex things should be possible. - Alan Kay on design
Actually I made up the term object-oriented, and I can tell you I did not have C++ in mind. - Alan Kay
8: A programming language is low level when its programs require attention to the irrelevant. - Alan J. Perlis
19: A language that doesn't affect the way you think about programming, is not worth knowing. - Alan J. Perlis
Date: 2015-09-08 21:03:27 India Standard Time
Org version 7.8.11 with Emacs version 24
Validate XHTML 1.0