I am a teacher of computer science and programming, teaching and developing project-based learning curriculums for secondary K-12 schools and online educational platforms since 2017. I'm also an ESL english teacher, a web and mobile app developer, and a yoga and meditation instructor.
I've recently launched Termeric, which is an online curriculum buy-and-sell marketplace for grade school subjects.
Before discovering my passion at the crossroads of computers and teaching, I spent seven years during and after my Ph.D. studies at UCLA as a programming languages researcher, focusing on the application of artificial intelligence in programming and software development.
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 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, curriculum developer, and an independent Android/iOS Mobile App Developer. I have enjoyed teaching Computer Science and Programming at Pathumthep Witthayakarn School in Thailand, Living Wisdom High School in Ananda Village, California USA, and at Connected Communities Academy. I worked with the BSD Education team, developing Computer Science and Technology education project-based learning curriculum and content for secondary K-12 schools. I also have created online courses in Programming, Mobile App Development for Android and iOS, and high school Computer Science education for Udemy.com.
In the field of programming languages, my work was 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.
My research work mantra: 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
Language interoperability enabled by a distributed and declarative framework
Mocking functionality and data using executable specifications and constraint solving for development and testing
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
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]
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]
From Validation to Automated Repair & Beyond with Constraint Solving
UCLA Ph.D. Thesis, June 2013 [pdf]