Blaise Pascal

CSCI 400: Principles of Programming Languages


Lady Ada

 
 
Course Information (Fall 2008):
Current Session:
Assignments Very Tentative Course Schedule
Chapter Objectives Makeup Questions

 
Section Day Time Room Instructor Email
A: MWF 8:00 CTLM 231 Cyndi Rader crader@mines.edu
Course Goals: This purpose of this course is to consider in detail the main constructs of modern programming languages, including abstraction mechanisms, sequence control, data control and storage management. The course will include a brief introduction to functional and logic programming. We'll also discuss some pragmatics of programming as time allows.

Why study principles of programming languages?

  • To enhance your ability to learn new languages,
  • To allow you to choose an appropriate tool for a given task,
  • To gain an appreciation for the challenges involved in implementing a language,
  • To expand your ability to express your ideas using a given language,
  • To see some very different styles of programming (e.g., Scheme and Prolog),
  • Because it's fun!
Chapter
Notes:
Ch01
Ch02
Ch03
Ch04
Ch4Parsing
Ch05
Ch06
Ch07
Ch08
Ch09
Ch10
Ch11
Ch12
Ch13
Ch14
Ch15
Compiler Tools
Ch16


Required Textbook: Robert W. Sebesta, concepts of Programming Languages
Fun Links: Lisp Comedy, thanks Andy
One more Lisp Comedy

Submission from Liz:
http://www-users.cs.york.ac.uk/~susan/joke/foot.htm

Student Evaluation
Assignments Exam I Exam II
50% 25% 25%


Assignments includes homework, labs and class participation.


Late work:
The policy for this course is that late work is strongly discouraged. However, since there may be occasions when you will not be able to finish an assignment by the due date, and since it's generally better for you to finish the lab (to aid your understanding of the material), late assignments will be permitted. The penalty for late labs is 2 points per day.

 
Collaboration Policy for Programming Projects in MCS Courses
The following policy exists for all CS courses in the MCS department. This policy is a minimum standard; your instructor may decide to augment this policy.
  1. If the project is an individual effort project, you are not allowed to give code you have developed to another student or use code provided by another student. If the project is a group project, you are only allowed to share code with your group members.
  2. You are encouraged to discuss programming projects with other students in the class, as long as the following rules are followed:
    1. You view another student's code only for the purpose of offering/receiving debugging assistance. Students can only give advice on what problems to look for; they cannot debug your code for you. All changes to your code must be made by you.
    2. Your discussion is subject to the empty hands policy, which means you leave the discussion without any record [electronic, mechanical or otherwise] of the discussion.
  3. Any material from any outside source such as books, projects, and in particular, from the Web, should be properly referenced and should only be used if specifically allowed for the assignment.
  4. If you are aware of students violating this policy, you are encouraged to inform the professor of the course. Violating this policy will be treated as an academic misconduct for all students involved. See the Student Handbook for details on academic dishonesty.