Department of Computer Science

Hridesh Rajan

Got a question?

Got a question or comment? Contact me at (515) 294-6168 or hridesh@iastate.edu.

About this page

On this page, you will find description of the courses taught by Hridesh Rajan at Iowa State University and elsewhere. All the material made available here is copyright © Hridesh Rajan 2005 - 2018. 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.

Software Design

Com S 362: Object-Oriented Analysis and Design [Spring 2006], [Fall 2006], [Spring 2007], [Fall 2007].

Com S 541: A Graduate Course on Programming Language Design and Semantics

Below you will find description of the course Com S 541 as taught by Hridesh Rajan at Iowa State University and elsewhere.

  • Fall 2015: This edition used the lecture notes on Software Foundations developed by Benjamin C. Pierce et al. and the textbook "Types and Programming Languages" by Benjamin C. Pierce. Compared to previous editions that integrated projects, this edition used homework and exams as the primary evaluation medium. The course utilized ISU blackboard system for distributing material to students.
  • Fall 2010: This edition also used the lecture notes on Software Foundations developed by Benjamin C. Pierce et al. and the textbook "Types and Programming Languages" by Benjamin C. Pierce. Besides minor changes this edition was similar to the Fall 2009 edition.
  • Fall 2009 This edition used the lecture notes on Software Foundations developed by Benjamin C. Pierce et al. and the textbook "Types and Programming Languages" by Benjamin C. Pierce. A major change from last edition of this course was to use the Coq proof assistant throughout this course for expressing language semantics, type systems, and for proving properties about them.
  • Fall 2008 This edition used the textbooks "Types and Programming Languages" by Benjamin C. Pierce and "the Formal Semantics of Programming Languages" by Glynn Winskel.

COMS 342: An Undergraduate Course on Programming Language Design, Semantics and Implementation

I have taught (or currently teaching) the following editions of Com S 342.

  • Fall 2015: This edition is also using the book draft Programming Languages: Design, Semantics, and Implementation that uses the Java programming language as the defining language. In this edition of the course, the interpreter framework used by the course saw significant overhaul. We also overhauled the semantics descriptions, and provided more coverage of inductive specifications, and additionally covered ideas behind a module system. The book draft and exercises were also refined and subsequently clarified.
  • Spring 2015: This edition is also using the book draft Programming Languages: Design, Semantics, and Implementation that uses the Java programming language as the defining language. In this edition of the course, the book draft and exercises were refined and clarified.
  • Fall 2014: These editions are using a new book Programming Languages: Design, Semantics, and Implementation that uses the Java programming language as the defining language. In these editions of the course, we also covered several additional topics not covered in previous editions, e.g. concurrency, event-based programming, reactive programming, etc...
  • Fall 2011, Spring 2012, Fall 2012, and Spring 2013: These editions are also using the book Essentials of Programming Languages, 3rd Edition by Friedman and Wand. In these editions of the course, we covered additional topics not included in the textbook, e.g. garbage collection.
  • Spring 2011: This edition is also using the book Essentials of Programming Languages, 3rd Edition by Friedman and Wand. In this edition of the course, we covered more topics compared to the Spring 2009 edition. In particular, lectures on semantics were extended to cover continuations, exceptions, and threads. I also added a module on types and type checking for this edition.
  • Spring 2010: This edition also used the book Essentials of Programming Languages, 3rd Edition by Friedman and Wand. In this edition of the course, we covered more topics compared to the Spring 2009 edition. In particular, lectures on semantics were extended to cover continuations, exceptions, and threads. I also added a module on types and type checking for this edition.
  • Spring 2009: This edition used the book Essentials of Programming Languages, 3rd Edition by Friedman and Wand. Main change in this edition was to adopt the 3rd edition of textbook, which required significant modifications in lecture notes, homework styles and exam styles.

  • Fall 2007: This edition used the book Essentials of Programming Languages, 2nd Edition by Friedman, Wand and Haynes. Most of this edition was adopted from a previously taught course by Prof. Gary T. Leavens.

SE/CPRE 491/492: Senior Design Projects Supervised by Hridesh Rajan

Below you will find description of the senior design projects supervised by Hridesh Rajan. A senior design project is organized under the course title SE/CPRE 491/492 at Iowa State University.

  • Fall 2015: This semester I supervised two SE 491 teams consisting of Arik D Coats, Cody C. Hanika, and Robert S Kloster (team 1) and Alex C Dana, Evan M Dye, and Deeksha Juneja (team 2). These teams are working on creating a collaborative platform for specification inference that we call SpecGuru.

    I also supervised one SE 492 team consisting of David Johnston, Dalton Mills, and Trey Erenberger. This team continues to work on the initial prototype of @PaniniJ from Spring 2015. @PaniniJ is an annotation-based realization of the Panini language.

  • Spring 2015: This semester I supervised one SE 491 team consisting of David Johnston, Dalton Mills, and Trey Erenberger. This team designed and created an initial prototype of @PaniniJ, an annotation-based realization of the Panini language.

Other Courses on Programming Language Design, Semantics, and Implementation

Com S 610-HR: Advanced Topics Courses

CS-551/661 - Aspect-oriented Software Development Fall 2004, co-developed and co-taught with Prof. Kevin Sullivan at University of Virginia

Software Security

Com S 610-HR: Graduate Seminar on Security Properties of Software Systems Fall 2006

Other

Preparing Graduate Students for Faculty Career

Teaching Related Resources

exam.class: A LaTeX class file and example for typesetting exams and quizzes.