Hesam Samimi

Programming and Computing Teacher, Programming Languages Researcher, Developer


I am a Computer Science/Programming expert, turned Computing/Programming K-12 Teacher, as of 2017. I have one year of part-time classroom teaching experience in these areas, while my main focus and experience so far has been designing courses, curriculum, and project-based learning content for teaching Computing to later-years primary and secondary schools. My goal now is to obtain more classroom teaching experience, and to bring hands-on, project-based Tech/Computer Science learning to more schools.


I received my Ph.D., in the area of Programming Languages, in 2013 at UCLA Computer Science Department advised by Todd Millstein. At UCLA, Viewpoints Research Institute, and SAP Labs, I have spent seven years as a Programming Language researcher in the area of language design, programming frameworks, and the application of Artificial Intelligence algorithms in Software Development. I am a Computer Science and Programming teacher and an independent Mobile App Developer. I have enjoyed teaching Computer Science and Programming at the Living Wisdom High School in Ananda Village, CA, and at Connected Communities Academy, and have created courses in programming, app development, and high school Computer Science education for Udemy.com.



Technology Education for Primary and Secondary (K-12) Schools, Education of Computer Science, Programming, Artificial Intelligence (AI), Web Development, Mobile App Development, and Math, Application of AI in Programming and Software Development


In the field of programming languages, I would like to contribute towards the design of programming frameworks that allow programs to be specified in as elegant, declarative, and in domain-specific forms as possible, yet be practical enough to have impact in the software community. My main interest is finding practical applications of decision procedures, executable specifications, declarative programming, and constraint solvers in programming. However, my Ph.D. research has focused on utilizing these in software engineering in general: development, testing, debugging, reliability, and education. Aside from their application in the design of languages, I am interested in applying these tools in performing static and dynamic program analyses: verification, synthesis, and program repair.


Let's use constraint solvers not for program-analysis but for program-ming!


Sketchpad14 Constraints as a Design Pattern
              Generalization of Sutherland's 1961 Sketchpad tool towards programming using constraints and reactivity

Call by Meaning
              A meanings lingua franca and theorem prover, grounded to the real-world knowledge, enables automatable semantic understanding among programs, bringing about automated discovery and data adaption

CamlBack Automated Feedback for Introductory Functional Programming Errors
              Automatically generating instant, custom feedback for student solutions on functional programming problems (e.g. in OCaml)
              CamlBack: OCaml/Haskell quiz with instant feedback

Cooperating Languages
              Language interoperability enabled by a distributed and declarative framework

Declarative Mocking
              Mocking functionality and data using executable specifications and constraint solving for development and testing

Plan B Falling Back on Executable Specifications
              Automatic recovery from method failures by direct execution of specifications via a constraint solver
              PBnJ: Implementation of Plan B in Java

PHPRepair Automated Repair of HTML Generation Errors in PHP Applications Using String Constraint Solving
              An automatic, dynamic, test-based approach to fix HTML generation bugs in PHP programs

Sketch# Specification-Based Program Sketching
              Implementation of the Sketching program synthesis method on top of Spec# specification language

JOHN An educational programming language integrating Automated Planning
              Project Wiki


Constraints as a Design Pattern: from Sketchpad61 to Sketchpad14
Hesam Samimi, Alessandro Warth, Mahdi Eslamimehr, Alan Borning
ACM International Symposium on New ideas, New Paradigms, and Reflections on Programming & Software 2015 (Onward!'15) [pdf]

Timing Analysis of Event-Driven Programs with Directed Testing
Mahdi Eslamimehr, Hesam Samimi
15th International Workshop on Worst-Case Execution Time Analysis (WCET'15) [pdf]

Call by Meaning
Hesam Samimi, Chris Deaton, Yoshiki Ohshima, Alessandro Warth, Todd Millstein
ACM International Symposium on New ideas, New Paradigms, and Reflections on Programming & Software 2014 (Onward!'14) [pdf]

Declarative Mocking
Hesam Samimi, Rebecca Hicks, Ari Fogel, Todd Millstein
International Symposium on Software Testing and Analysis 2013 (ISSTA'13) [pdf]

Automated Repair of HTML Generation Errors in PHP Applications Using String Constraint Solving
Hesam Samimi, Max Schaefer, Shay Artzi, Todd Millstein, Frank Tip, Laurie Hendren
International Conference on Software Engineering 2012 (ICSE'12) [pdf]

Specification-Based Sketching with Sketch#
Hesam Samimi, Kaushik Rajan
International Workshop on Formal Techniques for Java-like Programs 2011 (FTfJP'11) [pdf]

Falling Back on Executable Specifications
Hesam Samimi, Ei Darli Aung, Todd Millstein
European Conference on Object-Oriented Programming 2010 (ECOOP'10) [pdf]

From Validation to Automated Repair & Beyond with Constraint Solving
Hesam Samimi
UCLA Ph.D. Thesis, June 2013 [pdf]