Up Next

General Information



Instructor and teaching assistants


Instructor:
 
Dave Musser, 276-8660, musser[at]cs.rpi.edu
Office Hours: Lally 313, Tuesday & Wednesday 2:30-4 pm or by appointment


Teaching Assistants:
 
Ying Yang, yangy2[at]rpi.edu
Office Hours: Lally 09, Tuesday 10:00 am - 12:00 pm

Jon Purnell, purnej[at]rpi.edu
Office Hours: first floor, 2009 15th Street (between Sage and Peoples Avenues),
     Monday 4:00 - 6:00 pm

Anurat Chapanond, chapaa[at]rpi.edu
Office Hours: Amos Eaton 217, Thursday 11:00 am - 12:00 pm
When you have questions outside of class, either visit one of us or send email. Further instructions as to which persons to direct email to will be given but may vary during the semester, or for different purposes, so it's a good idea to check here first for the latest advice.

Brief overview


This course is a study of important concepts of modern programming languages. Topics include
  • Programming Language Syntax and Semantics
  • Abstraction: Data Abstraction and Control Abstraction
  • Programming Paradigms: Declarative, Declarative Concurrent, Object-Oriented, and Logic Programming; possibly others
Emphasis is on evaluation of a programming language or programming paradigm based on its underlying semantic concepts. As a unifying basis for demonstrating, experimenting with, and comparing different concepts, we will use the Oz language and its supporting programming environment, Mozart. Comparisons will also be made with languages that exemplify a particular paradigm, such as C++, Erlang, Haskell, Java, Scheme, ML, Prolog. Note: This is not an ``Oz course.'' The main subject matter is, again, programming language concepts. Oz is a useful tool in this context because it exhibits in a single language most of the important concepts of today's widely used programming languages. You may or may not also find that Oz is useful in itself for serious future programming projects, but if you do, consider it a bonus --- it's not the main goal of this course.
  More overview is presented in Lecture 01.

Prerequisites


CSCI-2400 Models of Computation or equivalent.


From the Rensselaer Catalog: CSCI-2400 Models of Computation This course introduces conceptual tools for reasoning about computational processes and the languages with which they are prescribed. It bears directly upon language translation, program verification, and computability. Topics to be covered include formal languages, finite automata, pushdown automata, nondeterminism, regular expressions, context-free grammars; parsing, compiler design basics; computability, Turing machines, Church's thesis, unsolvability and intractability. Prerequisites: CSCI-2300 and MATH-2800. Fall and spring terms annually. 4 credit hours

Homework and exams


There will be four to six homework assignments. Late homework will not be accepted. There will be two exams, one at midterm and a final exam; each will cover all the material up to that point but with greater emphasis on topics discussed since the previous exam. Exams will be designed to test both understanding of concepts and problem solving skills.

The course grade average will be determined as follows:
Homework 25%
Midterm Exam 35%
Final Exam 40%
Grade averages required for each letter grade are as follows:
A 90%
B 80%
C 70%
D 60%
F < 60%
The D letter grade is not available to graduate students (Grad School rule). One additional rule: you cannot pass the course unless you have a passing average on the exams.

Additional details
The homework assignments are where you learn technical skills and gain understanding of important concepts working at your own pace; it is therefore important that you do them on your own. Instructions for submitting the homework assignments will be given.

There is no late submission for homework assignments. They will not be accepted after the deadline, and a grade of F will be assigned. Extensions may be arranged only in the event of severe illness, dire emergencies, and religious observances. Please present appropriate documentation to me regarding the nature and duration of the illness or emergency ASAP thereafter; documentation is also needed for any religious observances not listed in the Rensselaer calendar.

The exams will be given in class. You are expected to arrive at the beginning of the class period, and no extra time will be given for late arrivals.

Try to make it to the exams! In case of any emergency you don't have to worry, but you have to inform me in advance and I need a written and signed explanation. If I accept your excuse you have to take an oral exam (which, due to the nature of oral exams, is usually more difficult). If you miss an exam without an excuse there will be no oral exam and the exam will be graded F with 0 points.

Extra requirements for some students
If you are a graduate student taking the course to satisfy the Programming Languages Component of the Ph.D. Qualifying Exam you'll need an A average on the exams in addition to an A average for the course grade. (This is a separate issue from taking the course for graduate credit, which is discussed next.)

All students taking the course for graduate credit (registered for CSCI-6969) will be assigned extra homework problems, usually ones delving a little deeper into theoretical issues, such as proofs of functional correctness or deriving or proving properties of programming language semantics. Grades on these problems will be included in computation of the homework average (which will remain as 25% of the course grade).

In addition, CSCI-6969 students should volunteer to give a presentation in class, either
  • about a programming language topic that is not definitely scheduled for a lecture, such as one of the topics marked ``tentative'' in the Schedule. Another programming language related topic can be proposed instead, subject to my approval. These presentations may be from 15 to 35 minutes (discuss the proposed length with me in advance);

  • or about a programming-language-related tool. Example topics: a debugger, a profiler, a static analyzer, a comparison of different compilers in terms of error reporting, or in terms of code optimization, etc. Such tools exist for Oz, but tools for other languages can be chosen, particularly if you already have experience with them. These presentations may be from 10 to 15 minutes, and should include a live demonstration of the tool (not just slides about it).
In either case, the presentation should be prepared and presented by two students working as a team. Please find a partner and discuss with me your presentation proposal as early as possible but no later than March 29. (Tool presentations can be scheduled earlier than that.) [Added 3/29: The deadline for proposing a presentation is extended to April 5.]

These presentations will not be graded. (In the past, however, such presentations have helped me say favorable things in letters of recommendation.)

Collaboration and other academic integrity issues


Except for assignments in which it is specifically permitted to work in pairs, homework must be done individually: copying or allowing another student to copy one's work is not permitted. Nor is it permissible to use material from other sources without proper attribution. You are encouraged to use the Internet and its resources but you have to give the original author(s). Any acts of plagiarism or other anti-intellectual behavior will be dealt with severely: the assignment or exam will receive a grade of zero, and two or more incidents will result in a failing grade for the course.


Up Next