Dr. Jean-Claude Franchitti
Computer Science Department
New York University
class1 class2 class3 class4 class5 class6 class7 class8 class9 class11 class12 class13
project1 project2 project3 project4
Draft Revision dates: 1/5, 1/25
The course covers the main issues in the design and use of mainstream programming languages: abstraction and modularization, naming, scoping, type models, control structures, concurrency, exceptions. Software design and programming in the large. Implementation issues: run-time organization and storage management. Imperative languages: Fortran, Pascal. Functional languages and metacircular interpreters: Lisp, Scheme. Object-oriented programming languages: polymorphism, inheritance, and dynamic dispatching in C++, Ada, and Java. Extensive programming practice in a variety of languages.
Instructor: Jean-Claude Franchitti
Course home page:http://www.cs.nyu.edu/courses/spring98/G22.2110
Time: Monday, 5-7 PM
Place: Room 109, Warren Weaver Hall, 251 Mercer Street
Teaching assistant(s): Tao Zhao, Ed Osinski.
The first day of class is Monday, Jan. 26.
Attendance is important. If you miss class often, you will not pick up the material as well, and your performance on assignments and exams will suffer. If you miss class, be sure to find out from a classmate what you missed. Also check the web page for programs that were done in class on days that you missed.
Office: 225 Mercer Street, room 401
Home page:http://www.cs.nyu.edu/cs/faculty/jcf/ or go to URL http://cs.nyu.edu then follow the
link for course home pages.
Office hour: Wednesdays 12:30 pm - 1:30 pm (note: not regular office), after class, or by appointment
Office phone: (212) 209-2641
Name: Tao Zhao
Office: 417 WWH
Office hour: Thursdays 7:00 pm - 8:00 pm
Office phone: (212) 998-3106
Name: Ed Osinski
Office: Room 715 at 719 Broadway
Office hour: by appointment
Office phone: (212) 998-3525
The weekly syllabus including topics, pointers to slides on-line, reading assignments and homework assignments are at syllabus.
Programming Languages, Concepts and Constructs, Ravi Sethi, Addison Wesley, 2nd Edition, 1996, ISBN 0-201-59065-4.
Copies of text are available at the NYU bookstore.
Formal Syntax and Semantics of Programming Languages, K. Slonneger, B. L. Kurtz,, Addison Wesley, 1995, ISBN 0-201-65697-3.
C, A Reference Manual, 4th Edition, Harbison and Steele, Prentice Hall.
The C++ Programming Language, Stroustrup.
The Annotated C++ Reference Manual, Ellis and Stroustrup, Addison Wesley.
The Java Language Specification, J. Gosling, B. Joy, and G. Steele, Addison Wesley.
The Java Programming Language, J. Gosling, Addison Wesley.
Programming in ADA, 3rd Edition, Plus Language Reference Manual, Addison Wesley, ISBN 0-201-56539-0.
ADA 95, J. English, Prentice Hall, ISBN 0-13-230350-7.
Smalltalk and Object-Orientation, an Introduction, J. Hunt, Springer Verlag, ISBN 3-540-76115-2.
Eiffel, The Language, B. Meyer, Prentice Hall, ISBN 0-13-247925-7.
Common Lisp, The Language Ė Second Edition, Guy L. Steele Jr., Digital Press, ISBN 1-55558-041-6.
Lisp, 3rd Edition, P.H. Winston, Berthold Klaus Paul Horrn, Addison Wesley, ISBN 0-201-08319-1.
The Scheme Programming Language, R. Kent Dybvig, Prentice Hall, 1996, ISBN 0-13-454646-6.
Logic Programming: The Essence of Prolog, 1/e, J.M. Spivey, Imperial College, March 1996, Prentice Hall Professional Technical Reference, ISBN 0-13-536047-1.
Mathematica 3.0, Wolfram.
The Mathematica Programmer, Roman Maeder, AP Professional.
Copies or recommended texts are available at the NYU bookstore. Copies have also been placed on reserve at the NYU library (Courant Institute Library, 1200 WWH).
Computer accounts and resources
All students must be able to access the Web and the Software Tools necessary for class assignments. Any student can obtain an account on the Computer Science Department Sun workstations which will provide such access. Students who do not already have a Sun account should formally request one by filling out a form in the department office, room 405.
We presuppose acquaintance with programming in some languages already and hands on experience with systems. In particular, to handle the programming assignments and projects associated to the class, students should know the fundamentals of Data Structures and Algorithms and Computer Architectures as taught in University level courses (e.g., Introduction to Computer and Programming course A22.0002). We also presuppose some basic knowledge of other areas of computer science (a compiler course would be helpful in some places, a course in discrete mathematics in other places), and some degree of mathematical sophistication.
Course email list
You should place yourself on the class mailing list. The CS department has set up a Majordomo email list server on cs.nyu.edu (Read about Majordomo in Liu, et. al., Managing Internet Services, Chaps 24 and 25). This way, the instructor can send email to everyone in the class on one fell swoop.
To register, send an email with the body (the subject field is irrelevant)
to, Majordomo@cs.nyu.edu (note that the name of the list is case-sensitive!!!) .
You should send this email from the account that you use to read your mail. To multicast an email to the class, email to firstname.lastname@example.org (please restrict your messages and questions to matters directly related to the content of the course, and type in an appropriate subject in the subject field of your message). You (can also read the messages sent to this list on the newsgroup nyu.cs.programming.language. To learn more about majordomo, send email with "help" in the body.
Assignments and Student Evaluation
A student can earn a total of 100 points in this course. Points will be allocated to assignments as indicated. All assignments should be done individually. You may discuss assignment and projects with other students in a general way, but the solutions, or the design and coding of programs is to be done on your own. Copying will not be tolerated and violators will be punished, possibly by failing the course.
Homework problems from texts 30
Take-home final examination 25
Late homeworks will be accepted up to one week late with a 10 point penalty. No assignments will be accepted more than one week after the due date.
As a comment, at the top of every program (or assignment) that you submit, put the following:
If you have a problem with the way one of your assignments was graded, please try to resolve that problem with the TA. If that does not resolve it, then bring it to my attention.
The midterm will be in-class in March (exact date to be announced later). Anyone who has a conflict with this must contact me as soon as possible.
The take-home examination will be handed out on the last day of class, and due one week later.
I am very reluctant to give incompletes. These are headaches for everyone. 90% of the time, an incomplete is never completed, and then it turns automatically into a failing grade for the course. I strongly suggest that you donít ask for an incomplete. Come to me early in the course to talk if you are struggling.
Computer accounts will be used to access the following software development tools:
Unix GNU compilers (gnu++, gnat, GNU LISP and Smalltalk)
Sunís Java Development toolkit
Microsoft Visual Studioís C++ and Java (alternative)
If you feel overloaded, desire help, or just want to talk, please contact me. Donít let yourself fall behind.