Key Accomplishments in Training, Teaching, and Curriculum Development
- Led development, and approval of five new degree programs at Iowa State University: MS in Artificial Intelligence, B.A. in Computer Science, a Data Science (DS) Minor, a DS Certificate, and a DS B.S. Degree. Responsibilities included: developing consensus; organizing obtaining and acting on university-wide feedback; developing the program proposals with early and frequent feedback; presenting the program to university bodies; and helping negotiate program governance. Also, co-designed and co-developed four new core courses for these programs.
-
Developed and revised a new pedagogy and a textbook draft to teach programming languages and functional programming to students who start in Computer Science programs that teach an imperative language such as Java that led to 20% improvement in the student success rate. The textbook appeared as: Hridesh Rajan, An Experiential Introduction to Principles of Programming Languages, MIT Press, Cambridge, MA, pp. 304, May 2022.
-
Contributed (or currently contributing) to the research-based training of a broad body of 31 graduate and postdoc students and over 45 undergraduate students between 2005-present.
Curriculum and Program Development at Iowa State University
-
MS in AI Program: Along with Prof. Jin Tian, I led the development of the MS in AI program at ISU. This program is designed to provide students with a comprehensive understanding of artificial intelligence concepts, methodologies, and applications. It includes courses covering artificial intelligence, machine learning, natural language processing, and more. The program emphasizes both theoretical foundations and practical skills, preparing students for a wide range of careers in the rapidly growing field of AI.
-
BA in Computer Science Program: Spearheaded by Professor Soma Chaudhuri, Professor Jack Lutz and me, ISU’s BA in Computer Science program was approved by the Iowa Board of Regents and began in spring 2023. This program aims to lead to more diverse student enrollment by accommodating those who wish to major in computer science but desire a wider variety of courses. It offers a rigorous yet flexible curriculum with 32 computer science credits, allowing students to double major and enjoy more career choices. The BA program maintains a close relationship with the existing BS program, offering students an opportunity to study computer science as part of a broader liberal education. This effort aligns with the increasing demand for computing professionals and ISU’s strong position to respond to commercial and academic needs for interdisciplinary computer scientists.
-
Data Science Program: In collaboration with Associate Deans Dr. Arne Hallam and Dr. Sriram Sundararajan, I co-led the development of three Data Science degrees at ISU. I chaired two university-level committees. The first committee designed a Data Science B.S. degree, and the second committee designed Data Science Minor and Certificate programs.
- Data Science B.S. degree: A comprehensive undergraduate program in data science.
- Data Science minor: Intended for undergraduate students of any discipline at Iowa State University, this minor aims to equip them with the skills needed for data science roles. It consists of nine credit hours of data science core courses and six credit hours in data science electives.
- Data Science certificate: Designed for students who have completed a baccalaureate degree or are currently pursuing one at ISU, this certificate includes nine credit hours of data science core courses, nine credit hours of data science electives, and a three-credit data science capstone. The capstone provides hands-on experience, allowing students to apply data science concepts in a multi-disciplinary team setting.
These courses within the data science programs are crafted to provide students with the background necessary for jobs that require substantial data science expertise, such as establishing and operating data analysis pipelines.
- I also led the creation of four new courses for the data science curriculum:
- DS 201: Introduction to Data Science (with Dr. Adisak Sukul): A foundational course covering data science concepts, domain case studies, data analysis pipelines, computing concepts, hands-on experience, and ethical considerations.
- DS 202: Data Acquisition and Exploratory Data Analysis (with Dr. Heike Hofmann): This course focuses on data acquisition, data displays, numerical and visual summaries, pipelines for data analysis, data visualization, and reproducibility, and includes programming exercises.
- DS 301: Applied Data Modeling and Predictive Analysis (with Drs. Kris De Brabanter and Dr. Jin Tian): A course that explores predictive analysis elements, machine learning techniques, data modeling, assessment, communication of findings, and ethical considerations. Team projects are a vital component.
- DS 401: Data Science Capstone: A course where students work in individual and team settings to plan, design, and implement significant multi-disciplinary projects in data science, with oral and written reports expected.
Summer School Curriculum Development}
- Annual Midwest Big Data Summer School (2016-2019, Website. This summer school, which I founded in 2016, is designed as a one-week, intensive curriculum aimed at early career researchers to introduce them to data science. The school includes full-day lectures on various topics, ranging from data acquisition, data preprocessing, and exploratory data analysis to descriptive data analysis, data analysis tools and techniques, visualization and communication, ethical issues in data science, reproducibility and repeatability, and understanding domain/context. The first summer school was attended by 144 participants from several universities within the Midwest, as well as a few outside of it, including but not limited to Iowa State University, Indiana University, University of Wisconsin, University of South Dakota, California State University East Bay, University of Maryland, and Oregon State University. We also had participants from various organizations such as American Express, Ames Lab, Danforth Plant Science Center, and others. In response to a post-event survey, 43.75% of participants reported being very satisfied, 43.75% were satisfied, 6.25% were neutral, 3.13% were dissatisfied, and 3.13% were very dissatisfied. Each successive edition was attended by a similarly broad audience. The 2019 edition was attended by 175+ participants. In total, 600+ attendees benefited from this initiative between 2016-2019.
Courses Taught
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.
- 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.
Other Courses on Programming Language Design, Semantics, and Implementation
Com S 610-HR: Advanced Topics Courses
- Fall 2009: Advanced Topics in Type Systems
- Spring 2008: Advanced Topics in Program Analysis
- Spring 2006: Aspect-oriented Software Development
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
Teaching Related Resources
exam.class: A LaTeX class file and example for typesetting exams and quizzes.