I work on robots because robots can help us overcome the world's vital challenges: our changing climate, food production, nuclear responsibilities, exploring space, environmental monitoring, and liberating people from dangerous, dirty, and dull work.

I am actively recruiting motivated PhD students to join my lab. If you're interested, please contact me at jwore at ncsu dot edu.



I'm John-Paul Ore, an assistant professor of computer science at the North Carolina State University I have a B.A. in Philosophy from the University of Chicago.

Research Interests

My research interests focus on applying program analysis techniques to software that controls robots and senses and acts in the physical world. This includes abstract type inference of physical unit types (like 'meters-per-second') with dataflow analysis, Probabilistic techniques for combining semantic information in identifiers (variable names) with code flow inference, and empirical measurements of how developers make decisions about robotic software, and how to connect program analysis with robotic simulation. I'm specifically focused on program analysis and software testing that helps make systems safer and more reliable while remaining practical and economically efficient.

I seek to accelerate and amplify the processes and tools that can be a catalyst for new capabilities.


2021 2019 2018 2017 2016 2015 2014 2013
  • Research Mentor for undergraduate Becca Horzewski 2016--17
  • Research Mentor for undergraduate Lambros Karkazis 2018
  • Graduate Teaching Assistant: Software Engineering II : SOFT-260, FALL 2018 ( 4.7 / 5, student evaluations)

  • "Excellent understanding of the material, very good at explaining topics in a way that gives a deeper than surface-level understanding."
  • "[John-Paul] is very kind and engaging and knowledgeable on software topics."
  • "Effective Communication Skills paired with Comprehensive Knowledge of the material."
  • "Knowledgable, friendly, great attitude, has an enthusiasm for what he does."
  • "[John-Paul] displays amazing patience and kindness when explaining new concepts!"
  • ACM SIGSOFT Travel Award ($300)
  • ISSTA 2017 Best Tool Demonstration: Phriky Units (github)
  • Helped author NSF CCF-1718040 ($484,694.00)
  • Othmer Fellowship 2014-2018 ($8K / year)
  • UNL CSE Outstanding Master's Thesis Award 2015
  • RSS 2013 Travel Grant ($500)
  • Aerial Water Sampler #US9606028B2 2017

  • Phys (in collaboration with Purdue's Xiangyu Zhang and Sayali Kate)
  • Phriky ISSTA 2017 Best Tool Demonstration Award
  • Quadrotor UAV Pendulum Simulator (Simulink)

  • Detecting Bugs in Robotic Systems : ISSTA 2017 Workshop on Testing Embedded and Cyber-Physical Systems
  • ROSCON'17: Physical Unit Inconsistency Detection Tool for ROS(slides)(video, 3-minutes)
  • Bright Lights Robotics Camp (Summer 2016, 2017)
  • Flying Robots. Seward Chapter of PEO (June 2015).
  • Separation Logic (Formal Verification Technique)

  • Program Committee for Workshop on Robotic Software Engineering (RoSE, part of ICSE 2019)
  • Reviewer: IEEE Robotics and Automation Letters 2018
  • Reviewer: MEMCODE 2018
  • Reviewer: Software Testing Verification and Reliability 2018
  • Reviewer: Journal of Field Robotics 2015, 2017, 2018
  • Reviewer: International Conference on Robotics and Automation (ICRA) 2014,2015,2017
  • Reviewer: International Journal of Mining Reclamation and Environment 2018
  • Reviewer: Limnology and Oceanography: Methods, 2017
  • Faculty Search Committee Student Representative - UNL CSE (2016)
  • Bright Lights Robotics Camp Counsellor (Summer 2015)
  • Certified Remote UAS Drone Pilot under FAA Part 107.


  • 2 Minute Lightning Talk at ROSCon 2017 Vancouver Day 1 from OSRF on Vimeo.
  • Overview of code analysis tool 'Phriky.'
  • Demonstration of autonomous aerial water sampling system at Blue Oak Ranch Reserve, near San Jose, CA, USA. UAV uses GPS to navigate over the water body, then uses ultrasonic sensors and conductivity sensors to detect the water's surface. The pump has to be submerged to prime before turning it on. Can collect 3 separate water samples and purge the system between sampling locations by shooting water overboard.
  • Pumping water through a 67-micron screen to filter for Zebra Mussel 'Velligers' (baby Zebra Mussels). Initial results indicate this method is effective.
  • Water sampling UAV crashes into water on a cold morning. A single motor reported it was on and spinning even though it stuttered and momentarily provided no thrust. Lessons learned: 1) Launch away from shore; 2) freshwater crashes don't destroy electronics (because freshwater is not a good conductor, unlike saltwater).
  • 3-D Water thermal structure interpolated from temperature readings taken from a thermometer suspended from a UAV. Video reveals internal thermal structure of approximately 6x6 meters of a lake at UC Berkeley's Blue Oak Ranch Reserve.
  • Laser scans from a SICK-TIM571 with Vicon markers to localize readings. Scans show the perimeter of the VICON cage at the NIMBUS Lab.
  • Simulink model of UAV with cable-suspended payload demonstrating pathological behavior when cable imparts a small spring force. Cable is modeled as a series of links. Model available at: https://github.com/jpwco/uav-pendulum-simulation
  • Simulink model of UAV translating between two waypoints including a change in attitude (rotation). Used to validate model with behavior of real quadcoptors.

  • Simulink model of UAV with a cable-suspended payload showing an initial start of full-extended 90 degrees.
  • Early autonomous water sampling prototype in Vicon motion-capture room.
  • UAV follows iPad. Demonstration of webpage sharing GPS information relayed to a UAV's position guidance (2012).

  • Schematic for embedded system for UAV-base water sampling. Power distribution on the middle right, capacitors at bottom middle to smooth the power to servo and water pump.
  • Embedded system for UAV-base water sampling. ATMega328p used to control submerged water pump, read from ultrasonic rangers and conductivity sensors. Communicates with a command and control system (laptop) by XBee Radio (2.4GHz).


    2014 Class Project: Virtual Reality (Unity) 3-D rendering of Text Clouds for source code visualization with the Oculus Rift DK1 (2014). Class project experiment with using virtual reality for program comprehension. Word color is the identifier type, font size is based on word frequency (TD-IDF).

    2015 Project experimenting with spatial logics to predict spatio-temporal regions where two UAVs might collide. (Matlab)


    Hiking, travelling, cycling, cuisine, photography, and birding.