Teaching

* 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 - 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.

Software Design

Com S 362: Object-Oriented Analysis and Design

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 (http://www.eecs.ucf.edu/~leavens)Prof. Gary T. Leavens.

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 (http://www.lix.polytechnique.fr/coq/)Coq proof assistant throughout this course for expressing language semantics, type systems, and for proving properties about them.

"Types and Programming Languages" by Benjamin C. Pierce and "the Formal Semantics of Programming Languages" by Glynn Winskel.

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

Other Courses

Preparing Graduate Students for Faculty Career

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