Work


Throughout my student life, I had the good fortune of being taught by some exceptional instructors. I learned a great deal from them, but just as importantly, I developed a keen interest in sharing my own knowledge — however limited — with others, just as my instructors had shared theirs with me. The great physicist Richard Feynman once remarked, “I find that teaching and the students keep life going, and I would never accept any position in which somebody has invented a happy situation for me where I don’t have to teach. Never.” I feel exactly the same way about teaching.

That conviction has carried me through two decades in the classroom — from calculus and mathematical biology in the Mathematics department to introduction to computing, data structures, and compiler construction in the Computer Science department at UMB. Some of the resources I have developed for my courses over the years are freely available below.

Current Courses (Fall 2026)

Previous Courses

Mathematics Department, University of Massachusetts at Boston

  • Calculus I (Math 140): Fall 14
  • Calculus I for Life and Environmental Sciences (Math 145): Spring 14
  • Calculus II for Life and Environmental Sciences (Math 146): Fall 13, 14
  • Introduction to Mathematical Biology (Math 303): Fall 15; Spring 16 (assisted the instructor with the programming sessions)

Computer Science Department, University of Massachusetts at Boston

  • Compilers (CS451/651): Fall 17, 18, 19, 20, 21, 22, 23, 24, 25; Spring 18, 19, 20, 21, 22, 23, 24, 25, 26; Summer 18
  • Intermediate Computing with Data Structures (CS210): Fall 16, 17, 18, 19, 20, 21, 22, 23, 24, 25; Spring 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26; Summer 09, 11, 15
  • Introduction to Computing (CS110): Fall 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25; Spring 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26; Summer 12, 13
  • Introduction to Java Part II (CS115L): Fall 07, 08, 09, 11; Spring 07, 08, 10, 11, 12
  • igniteCS Python Workshop: Spring 17

Resources

Introduction to Programming in Python

Introduction to Programming in Java

Data Structures and Algorithms in Java

  • Programs for teaching a course on data structures and algorithms in Java, as a VSCode project. Most of the programs are from Algorithms by Robert Sedgewick and Kevin Wayne.

  • Supporting libraries: the API, the jar file (compiled using OpenJDK 21), and the code as a VSCode project.

  • The API for the data structures and algorithms and the jar file (compiled using OpenJDK 21).

Introduction to Compiler Construction

  • Marvin: a hypothetical register-based machine designed for teaching purposes. (GitHub)

  • j--: a compiler (written in Java) for a language called j-- and targeting the stack-based Java Virtual Machine. (GitHub)

  • iota: a compiler (also written in Java) for a language called iota and targeting the register-based Marvin machine. (GitHub)

My research explores how collective behavior emerges on complex networks. Using tools from evolutionary game theory and individual-based modeling, I have studied the evolution of cooperation in social dilemmas, the co-evolutionary dynamics of viruses and their hosts, and the robustness of networks to targeted attacks. Along the way, I have also dabbled in document classification and compiler construction, culminating in a book on building compilers in a Java world.

Publications [citations]

Books

Introduction to Compiler Construction in a Java World, Bill Campbell, Swami Iyer, and Bahar Akbal-Delibaş, CRC Press (2012).

Papers

Posters

Phd Thesis

Erdős Number (4)

Swami Iyer ↔ Dan Simovici ↔ Ratko Tošić ↔ Joseph Straight ↔ Paul Erdös