CSCI400: Programming Languages


Cyndi Rader, , website:, office: Brown Building 280D

Where and When:

T/Th, 9:30-10:45, MZ 26

Office hours: T/Th, 8-9:15

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 programming. We'll also discuss some pragmatics of programming as time allows.

Why study principles of programming languages?


Miran Lipovaca, Learn You a Haskell for Great Good, Required (pdf available)

Flanagan & Matsumoto, The Ruby Programming Language, Recommended

Robert Sebesta, concepts of Programming Languages, Recommended

Student Evaluation

Exams/Quizzes Language Comparison Assignments Participation
45% 5% 45% 5%

Course grading will be done on a plus/minus scale, with 93 to 100 as A, 90 to 92.9 as A-, 87 to 89.9 as B+, etc. I typically do not curve course grades. Participation score is based on class attendance, piazza posts, code sharing, submitting funny links, asking or answering questions in class, etc.

Late Work and Grading Policy:

Late work is strongly discouraged. Late assignments will be penalized 10% per day and no assignments will be accepted more than 2 days late. Assignments are generally due at 11:59 pm, unless otherwise noted.

Programs submitted for grading must run. DO NOT SUBMIT A BUGGY PROGRAM THAT DOESN'T RUN! It is much better to submit a working program that only meets part of the requirements. You are strongly encouraged to ask for help via piazza! This is good experience, and will avoid receiving a 0 on homework assignments when you've put in lots of hours. If piazza posts don't provide sufficient help, I will also look at your program. Don't wait til the last minute, though.

Piazza "Rules of Engagement" (thanks Randy B.)

Online forums can be quite intimidating. I'd like to suggest these guidelines:

We will make use of piazza for this course:

In addition, this classroom is based on mutual RESPECT. This includes respect for your classmates, your instructor and yourself. It's important to recognize that the rigorous requirements of studying at Mines can cause stress, which sometimes results in distressed or disruptive behavior. If you are experiencing issues, or believe that one of your partners or teammates is, please SPEAK UP. Feel free to come talk to me, or visit

Collaboration Policy for Programming Projects in CS Courses

The following policy exists for all CS courses in the EECS 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:
  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. To prevent unintended sharing, any code stored in a hosted repository (e.g., on github) must be private. For group projects, your team members may, of course, be collaborators.
  5. If you are aware of students violating any aspects of 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.


Info on this page is also available on this syllabus, in case you prefer to print a copy.

The Colorado School of Mines is committed to ensuring the full participation of all students in its programs, including students with disabilities. If you are registered with Disability Support Services (DSS) and I have received your letter of accommodations, please contact me at your earliest convenience so we can discuss your needs in this course. For questions or other inquiries regarding disabilities, I encourage you to visit for more information.