Department of Computer Science

Hridesh Rajan

Got a question?

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

COMS 641: Advanced Topics in Programming Languages

This is the homepage of Com S 641, a course on advanced topics in programming languages, as taught by Hridesh Rajan in Fall 2019 at Iowa State University. These pages make the course related materials available.

Course objectives

Explore programming models and language support for fairness, accountability, certainty and transparency (FACT) to aid development of software used for data-intensive tasks. Explore programming models behind data intensive languages and frameworks including a detailed study of their operational semantics, type systems, and their soundness. Applications of semantics on areas such as program correctness, language design or translation. This new edition was designed in Fall 2019 and first offered in the same semester.

We will study the following four properties:

  • Fairness
  • Accountability
  • Certainty
  • Transparency


  • Time: T 3:40-6:40pm
  • Venue: 1312 Gilman Hall
  • Instructor: Dr. Hridesh Rajan
  • E-mail:
  • Office: 227 Atanasoff Hall, Ames, IA, 50011

Tentative Schedule

A more complete schedule will be available after project teams have been formed and project presentation dates are decided.

Course Components and Grading Policy

This course has the following components:

  • Topic Presentation: 30%
  • Topic Discussion: 10%
  • Midterm 1 Project Report and Presentation: 15%
  • Midterm 2 Project Report and Presentation: 15%
  • Final Project Report and Presentation: 20%
  • Class Participation: 10%

All components are essential, you will not receive a passing grade in this course if you haven't completed a component of the course. The class participation grade will be determined by your attendance in the class and your contributions to the class discussions. You will only be able to contribute to the class in a significant way, if you have carefully read the assigned readings for the class.

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 before next class period: 25%
  • After next class period: 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

Term Projects

You may make use of all the resources available at your disposal, including the published work of others, publicly available code, publicly available data sets, as well as consultation with others (fellow students, faculty, or other experts on the topic of your project). Note however, that your conduct of the project should be guided by the best practices of academic research and writing.

In particular, you should exercise utmost care to avoid plagiarism: the deliberate use of someone else's language, ideas, data, code, or other original material that is not common knowledge without properly acknowledging the source. You should also familiarize yourself with appropriate ways to acknowledge the contributions of others and to cite all your sources (See for example, ISU library's index of resources for avoiding plagiarism).

Students may choose to work in teams of 2 or 3 members on the term project. Collaboration within a team is expected and encouraged. Each team member is expected to contribute to all aspects of the project: including conception of the initial idea, planning, implementation (including design and analysis of algorithms, design, implementation, and testing of code, experimental evaluation) and reporting (including organization and writing of the report). However, because each individual brings unique abilities to a team, and one of the goals of working in a team is to take advantage of the unique abilities of the team members, it is not unusual for the contributions of individual team members to vary across tasks. To ensure that each team member gets credit for his or her contributions, the final report should include a statement of contributions that explicitly identifies the contributions of each team member and a statement that every team member concurs with the contents of the report. If there are irreconcilable differences among members your team, you should notify the course staff as early as possible (but after having made a good faith effort to resolve the differences among yourselves) so we can help resolve the differences or suggest alternatives.

Submitting a single term project or paper for credit in two different classes (in the same semester or in different semesters) is not allowed unless explicit permission to do so is obtained in advance from each of the professors involved.


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.