Information
Class Meetings | Wed 7:10-9pm in CIWW 102 |
Recitations | Thu 8:10-9pm in CIWW 102 |
First Lecture | Sep 5, 2012 |
Last Lecture | Dec 6, 2012 |
Midterm Exam | Oct 17, 2012, 7:10-9pm in CIWW 102 |
Final Exam | Dec 19, 2012, 7:10-9pm in CIWW 102 |
Instructor | Thomas Wies, office hours: Thu 3:00-4:00pm in CIWW 407, or by appointment |
Teaching Assistant | Sahil Vora, office hours: Thu 7:00-8:00pm in CIWW 412 |
News
- 10/30/12 - Due to the closing of NYU, the class on Wed 10/31/12 and the recitations on Thu 11/01/12 have been cancelled.
Course Description
Design and use of mainstream programming languages: naming, scoping, type models, control structures, procedural abstractions, modularization. Implementation issues and runtime organization. We will study languages such as C, C++, Java, Scala, Scheme, and ML. The course work includes extensive programming exercises in various languages.
Prerequisites
Undergraduate courses in data structures and algorithms or equivalent, as well as familiarity and programming experience in a high-level language like C, C++, Java, or a similar language.
Syllabus
- Syntax
- Names, Scopes, and Bindings
- Control Flow
- Subprograms and Control Abstraction
- Functional Programming
- Types
- Object-Oriented Programming
- Generic Programming
- Exceptions
- Concurrency
Reading Materials
Required Reading
- Programming Language Pragmatics, Third Edition by Michael L. Scott, Morgan Kaufmann Publishers, 2009
Recommended Reading
- Types and Programming Languages by Benjamin C. Pierce, The MIT Press, 2002
- ML for the Working Programmer, 2nd Edition by Lawrence C. Paulson, Cambridge University Press, 1996
- Programming in Scala, Second Edition by Martin Odersky, Lex Spoon and Bill Venners, Artima, 2010
Scheme Resources
Standard ML Resources
- Programming in Standard ML by Robert Harper, CMU.
- Standard ML of New Jersey (SML/NJ)
- Standard ML Basis Library
Scala Resources
- Programming in Scala, Second Edition by Martin Odersky, Lex Spoon and Bill Venners, Artima, 2010
- Official Scala web site
- Scala Standard Library
Syllabus
Week | Date | Topics | Materials |
---|---|---|---|
1 | 09/05 | Programming Languages Introduction; Syntax | Slides; Readings: PLP, ch. 1-2 |
09/06 | No recitations | ||
2 | 09/12 | Names, Bindings, Scopes | Slides; Readings: PLP, ch. 3.1-3.4 except 3.3.4 and 3.3.5 |
09/13 | Recitations | ||
3 | 09/19 | Basic Control Flow Mechanisms | Slides; Readings: PLP, ch. 6.1-6.5 |
09/20 | Recitations | ||
4 | 09/26 | Subprograms and Control Abstraction | Slides; Readings: PLP, ch. 3.6, 6.6, and 8.1-8.3 |
09/27 | Recitations | ||
5 | 10/03 | Functional Programming | Slides;
Lambda
calculus; Scheme code Readings: PLP, ch. 10 including 10.6.1 on the CD |
10/04 | Recitations | ||
6 | 10/10 | Types | Slides; Readings: PLP, ch. 7 |
10/11 | Recitations | ||
7 | 10/17 | Midterm exam | |
10/18 | No recitations | ||
8 | 10/24 | ML | Slides; Code;
Readings: PLP, ch. 10; Optional: Programming in Standard ML; ML for the Working Programmer |
10/25 | Recitations | ||
9 | 10/30 | Class cancelled (rescheduled to Thu, 12/06) | |
11/01 | Recitations cancelled | ||
10 | 11/07 | Modules and Program Structure |
Slides;
Stack.sml;
PriorityQueue.sml; Readings: PLP, ch. 3.3.4, 3.3.5, 3.8 |
11/08 | Recitations | ||
11 | 11/14 | No class (rescheduled to Thu, 11/29) | |
11/15 | Recitations | ||
12 | 11/21 | Object-Oriented Programming | Slides; Readings: PLP, ch. 9, 3.6.3 |
11/22 | No recitations (Thanksgiving) | ||
13 | 11/28 | Scala | Slides |
11/29 |
7:10-8pm: Recitations (in CIWW 101) 8:10-9pm: Class (in CIWW 102) |
Slides; Readings: PLP, ch. 8.5 | |
14 | 12/05 | Generic Programming | Slides; Readings: PLP, ch. 8.4 |
12/06 |
7:10-8pm: Recitations (in CIWW 101) 8:10-9pm: Class (in CIWW 102) |
||
15 | 12/12 | No class (Monday schedule) | |
11/13 | Recitations |
Homework
For submission of solutions, please follow the instructions on the assignment sheets. Sample solutions to homework assignments will be available after the submission deadline has passed.
Grading
Weekly Assignments (30%), midterm exam (30%), final exam (40%).
Academic Integrity
Please review the departmental academic integrity policy. In this course, you may discuss homework problems and assignments with other students, but the work you turn in must be your own. Do not copy another student's work. Also, you should consult the instructor before using materials or code other than that provided in class. Copying code or other work without giving appropriate acknowledgment is a serious offense with consequences ranging from no credit to potential expulsion.