Department of Computer Science

Hridesh Rajan

Got a question?

Got a question or comment? Contact me at (515) 294-6168 or

COMS 342: Principles of Programming Languages

This is the homepage of Com S 342, a course on principles of programming languages, as taught by Hridesh Rajan in Spring 2018 at Iowa State University. These pages make the course related materials available.

Course objectives

A variety of programming languages and paradigms exist today and more are being invented as we speak. Although theoretically every task can be accomplished in any Turing-complete programming language, in practice, there is a tight correlation between selected programming language, software development task, programmer productivity, and overall software efficiency and quality. A judicious choice of programming language is thus of utmost importance. Com S 342 provides undergraduate students with a scientific basis for this selection. In addition, after successfully completing this course, you should be able to:

  • Write and modify programs in functional style
  • Make effective use of data abstraction
  • Change or enhance interpreters to have features such as:
    • control flow
    • variables
    • recursion
    • scoping
    • syntactic sugars
    • arrays
    • parameter passing mechanisms
    • type checking
    • objects, and inheritance
  • Write programs using such features and explain their behavior
  • Explain the data structures and algorithms used in interpreters
  • Compare alternatives in programming language design and implementation


  • Time: TR 2:10-3:30pm
  • Venue: 101 Carver Hall
  • Instructor: Dr. Hridesh Rajan
  • E-mail:
  • Office: 105 Atanasoff Hall, Ames, IA, 50011
  • Teaching Assistants:

Statement on Disability Accommodation

Iowa State University is committed to assuring that all educational activities are free from discrimination and harassment based on disability status. All students requesting accommodations are required to meet with staff in Student Disability Resources (SDR) to establish eligibility. A Notification Letter form will be provided to eligible students. The provision of reasonable accommodations in this course will be arranged after timely delivery of the Notification Letter to the instructor. Students are encouraged to deliver Notification Letters as early in the semester as possible. SDR, a unit in the Dean of Students Office, located in 1076 Student Services Building or online via the Student Disability Resources website ( Contact SDR by e-mail at or by phone at 515-294-7220 for additional information.

Statement on Dead Week

This class follows the Iowa State University Dead Week policy as noted the ISU Policy Library; as well as section 10.6.4 of the Faculty Handbook. Visit the ISU Policy Library website ( for policy wording.

Harassment and Discrimination

Iowa State University strives to maintain our campus as a place of work and study for faculty, staff, and students that is free of all forms of prohibited discrimination and harassment based upon race, ethnicity, sex (including sexual assault), pregnancy, color, religion, national origin, physical or mental disability, age, marital status, sexual orientation, gender identity, genetic information, or status as a U.S. veteran. Any student who has concerns about such behavior should contact his/her instructor, Student Assistance at 515-294-1020 or email, or the Office of Equal Opportunity at 515-294-7612.

Religious Accommodations

Iowa State University attempts to reasonably accommodate students whose sincerely held religious beliefs or creed conflict with academic requirements. Accommodation requests causing an undue hardship may not be feasible, and they must be made proactively; no retroactive accommodation will be granted. The process for requesting an accommodation is interactive and the process must be initiated by the individual seeking the accommodation. For optimal consideration, students should inform instructors as soon as possible in the semester of any future conflict. It is recommended that the student and instructor discuss the request in person and then document the resolution in an email format. Assistance throughout the process for all parties involved is available through the Office of Equal Opportunity at 515-294-7612.

Tentative Schedule

The table below provides the tentative schedule of this courses. The date and time for the final exam is fixed. The dates for homework, topics, and midterm exams could change. The course staff will notify students about such change via the class discussion board and during lectures.

Course Components and Grading Policy

This course has the following components:

  • Homework: 30%
  • First Midterm: 20%
  • Second Midterm: 20%
  • Final Exam: 30%

All components are essential, you will not receive a passing grade in this course if you haven't completed a component of the course. For example, let us assume John Doe didn't hand in any homeworks, but received a 'B' grade or better in all other components. His final grade will be 'F' without any exceptions.

Grade Computation Logic

You will receive an absolute letter grade for this course. There will not be any curving. As a result, everybody in this class may expect to receive an 'A'. The grades will be assigned as follows:

  • A: 90 and above
  • A-: 85 - 89
  • B+: 80 - 84
  • B: 75 - 79
  • B-: 70 - 74
  • C+: 65 - 69
  • C: 60 - 64
  • F: 59 and below

Late Deliverable Policy

You are expected to submit your deliverables on time. Solutions for some deliverables may be discussed in class after the due date. These deliverables will not be accepted after the due date and you will receive no grade for them. The penalties for other submissions are as follows:

  • Submitted after the due date but less than 24 hours late: 25%
  • More than 24 hours late: 100%

Deliverable Packaging and Naming Convention Policy

If we have provided a naming conventions for your deliverables. and/or instructions on how to package your submission, please carefully follow them. Failure to do so may result in receiving no grades for that part of the deliverable.

Policy on Academic Honesty[1]

Students enrolled in Computer Science courses at ISU are expected to maintain the highest standards of academic integrity. Cases of cheating that go undetected and hence unpunished skew the grading curve in a class, thereby lowering the grades for students who do not cheat. Students who cheat rob themselves not only of knowledge and skills that they should have acquired in a course, but also of the experience of learning how to learn, arguably the most valuable benefit of a university education. The reputation of the department, the university, and the value of the degree suffer if employers find the graduates of a program lacking in abilities that successful completion of specific courses should guarantee. Most professions, including Computer Science, have codes of ethics or standards to which individuals will be expected to abide by. At the University, you practice the integrity that you must demonstrate later. Suspected cases of academic misconduct will be pursued fully in accordance with ISU policies. Students are strongly urged to consult the Iowa State University's policy on academic dishonesty. A copy of the policy can be obtained from here. The information included here is intended to help students avoid unintentionally committing academic dishonesty.

The primary purpose of assignments is to clarify and enhance the understanding of the concepts covered in the lectures. Past experience with this course has shown that this is helped by increased interaction among students. Discussion of general concepts and questions concerning the homework and programming assignments among students is encouraged. However, each student is expected to work on the solutions individually (except in the case of assignments that are explicitly assigned to teams of students OR students are allowed to work in study groups).


When discussing problems from assigned homework with other students in your study group, you may:

  • discuss the material presented in class or included in the assigned readings needed for solving the problem(s)
  • assist another student in understanding the statement of the problem (e.g., you may assist a non-native speaker by translating some English phrases unfamiliar to that student)

It is expected that your study group has independently arrived at solutions that you turn in for problem sets. The following are examples of activities that are PROHIBITED:

  • sharing solutions or fragments of solutions (via email, whiteboard, handwritten or printed copies, etc.)
  • posting solutions or fragments of solutions in a location that is accessible to others
  • using solutions or fragments of solutions provided by other students (including students who had taken the course in the past)
  • using solutions or solution fragments obtained on the Internet or from solution manuals for text books


Copying someone else's solutions, using notes or reference materials (unless instructed otherwise), altering an exam for re-grading, getting an advance copy of the examination, or having someone else write the exam amount to cheating on an exam.

You need to exercise special care with take-home exams. You should NEVER

  • share solutions or fragments of solutions (via email, whiteboard, handwritten or printed copies, etc.)
  • post solutions or fragments of solutions in a location that is accessible to others
  • use solutions or fragments of solutions provided by other students (including students who had taken the course in the past)
  • use solutions or solution fragments obtained on the Internet or from solution manuals for text books
  • use material from text books, reference books, or research articles without properly acknowledging and citing the source

[1] The academic honesty policy has been compiled using material adapted from several sources including the past offerings of this course, other computer science courses at Iowa State University, as well as other universities. In particular, majority of this policy comes from Com S 572 as taught by Professor Vasant Honavar.

Copyrights and Licensing

All the material made available here is copyright © Hridesh Rajan 2020. Permission is granted to make copies for educational and scholarly purposes, but copies may not be used directly or indirectly for commercial purposes. All copies must retain this copyright notice. All other rights reserved.