Kevin

Kevin Angstadt

he/him/his

Ph.D. Candidate, Computer Science and Engineering
Engineering Teaching Consultant, Center for Research on Teaching and Learning in Engineering

University of Michigan

Contact

  • 2909 Bob and Betty Beyster Building
    Computer Science and Engineering
    University of Michigan
    2260 Hayward Street
    Ann Arbor, MI 48109-2121

About Me

Curriculum Vitae

I am a graduate student in Computer Science and Engineering at the University of Michigan where I am advised by Westley Weimer. My expected graduation date is May 2020. I am also an Engineering Teaching Consultant for the Center for Research and Learning on Teaching in Engineering at the University of Michigan. In this role, I provide support to the College of Engineering's undergraduate and graduate teaching assistants through one-on-one consultations, in-class observations, and professional development workshops.

Previously, I was a Ph.D. student in the Department of Computer Science at the University of Virginia and an Olive B. and Franklin C. Mac Krell Fellow at the Jefferson Scholars Foundation. My co-advisors were Westley Weimer and Kevin Skadron. In 2016, I received a Master of Computer Science (MCS) from the University of Virginia. In 2014, I received a B.S. in Computer Science, Mathematics, and German Studies from St. Lawrence University. My academic advisors at St. Lawrence were Ed Harcourt (CS), Dan Look (Math), and Ingrid Stipa (German Studies).

In my spare time, I enjoy (among other things) cooking, hiking, 3D printing and modeling, electronics, knitting, playing woodwind instruments, photography, and reading.

I recently completed a successful search for academic positions in departments that support and emphasize undergraduate education, research, and mentorship. For interested individuals, I have provided my curriculum vitae, teaching philosophy, research philosophy, and thoughts on diversity, equity, and inclusion here for reference. I am always delighted to discuss teaching, research, and efforts to broaden participation in computing.

Academic Highlights

  • December 2018: PhD Dissertation Proposal approved by committee  Proposal  Presentation Slides
  • September 2017: Joined Computer Science and Engineering at the University of Michigan
  • May 2017: Awarded UVA Department of Computer Science Graduate Student Awards for Outstanding Teaching and Service
  • May 2016: Received Master of Computer Science (MCS) from the University of Virginia
  • April 2016: Passed Ph.D. qualifying exam and defended MCS project  Project Report  Presentation Slides
  • August 2014–August 2017: Olive B. and Franklin C. Mac Krell Fellow, Jefferson Scholars Foundation (Three fellowships awarded among 394 offers of admission in Engineering at UVA)
  • May 2014: Graduated summa cum laude from St. Lawrence University with a BS in Computer Science, Mathematics, and German Studies

Research

Broadly, my personal research interests fall in the intersection computer architecture programming languages, and software engineering. I enjoy using my computing knowledge to help solve the world's problems, and thus it's not uncommon for me to work on projects outside of my nominal areas of expertise (especially with motivated students).

Programming Support for New and Emerging Technologies

My primary research interest is in the development of suitable abstractions, languages, and tools for new and emerging technologies as well as the design of new hardware architectures to address present-day challenges. In particular, I have studied the application of deterministic- and non-deterministic finite automata (DFAs and NFAs) an push-down automata (PDAs) as a hardware abstraction layer for accelerators.

Collected data is often analyzed in a multitude of different ways, and many algorithms in areas such as data-mining, bioinformatics, deep packet analysis, and spam filtering require identification of exact or near-match character patterns. Special hardware accelerators, such as FPGAs and custom hardware (e.g., Micron's Automata Processor, the Cache Automaton, etc.) can dramatically reduce processing time for these tasks. Because of pressure from industry, physical design limits, and the rapid growth of data collection, these devices are becoming increasingly common in general-purpose computing; however, these technologies often rely on abstractions or assumptions not supported by present techniques for programming, debugging, and securing systems. Thus, programming these devices can be challenging for non-expert users. My goal is to ease the programming burden by providing automated transformations, new language support, and debugging tools, which enable researchers to leverage these performance improvements.

Software Tools

Tutorials

Trusted and Resilient Mission Operation for Autonomous Vehicles

UVA open house
Kevin with a Drone
x86 rover
x86 rover

Autonomous vehicles, such as quadcopters and rovers, perform critical tasks for government agencies and emergency services. Missions often take place in locations where communication with human operators is infrequent or delayed, such as distant planets, war zones, and remote crash sites. Consequently, humans may not be able to take manual control to recover the vehicle if the software begins to malfunction. Many of these malfunctions, or software bugs, do not cause total loss of the vehicle, but rather hinder the successful completion of a mission (e.g., a sample is not collected or a camera is not pointed in the correct direction). How can an autonomous vehicle fend for itself when such malfunctions occur?

To help solve this problem, I collaborate with a team of academics and industry practitioners to combine best-in-breed techniques for securing software, detecting attacks, and automatically repairing bugs in source code. While detecting problems in real-time and repairing software are challenging in and of themselves, deploying new software mid-flight (and avoiding crashes) presents an additional set of challenges. My colleagues and I have been developing a dual controller hardware design that includes fail-over hardware for situations when the main controller is compromised. Additionally, we have developed selective checkpoint and restore algorithms to maintain critical mission state while loading new software.

Our contributions aim to increase system resiliency for autonomous vehicles, allowing more missions to complete successfully in the face of software defects and malicious attacks.

Tutorials and Project Information

I have developed several tutorials for configuring quadcopter software and hardware. Please see below for links to publicly-available documentation.

GPU Database Acceleration

While attending St. Lawrence University, I worked along with my faculty advisor, Ed Harcourt, to complete a year-long senior honors research project, entitled Accelerating Database Joins Using a General Purpose GPU. For this project, I implemented an experimental database engine in CUDA that supports relational joins between tables.

StatKey

I worked with Robin Lock, Patti Frazer Lock, Ed Harcourt, and Rich Sharp to develop a collection of web-based statistical simulation apps. The application, known as StatKey, accompany Statistics: Unlocking the Power of Data.

As of March 1, 2019, StatKey has had over one million users around the world (according to Google analytics).

statkey

statkey 1m hits

Publications

  • Yu Huang, Kevin Angstadt, Kevin Leach, and Westley Weimer. Selective Symbolic Type-Guided Checkpointing and Restoration for Autonomous Vehicle Repair. In Proceedings of the 1st International Workshop on Automated Program Repair, APR 2020. Seoul, South Korea, 2020. To appear.
  • Kevin Angstadt, Jean-Baptiste Jeannin, and Westley Weimer. Accelerating Legacy String Kernels via Bounded Automata Learning. In Proceedings of the 25th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS '20. Lausanne, Switzerland, 2020. ACM, to appear.
  • Matthew Casias, Kevin Angstadt, Tommy Tracy II, Kevin Skadron, and Westley Weimer. Debugging Support for Pattern-Matching Languages and Accelerators. In Proceedings of the 24th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS '19. Providence, Rhode Island, 2019. ACM. 21% acceptance rate pdf lightning talk presentation
  • Kevin Angstadt, Jack Wadden, Westley Weimer, and Kevin Skadron. Portable Programming with RAPID. In IEEE Transactions on Parallel and Distrubuted Systems, vol. 30, no. 4, pp. 939-952, 1 April 2019. IEEE. 4.181 Impact Factor pdf
  • Kevin Angstadt, Arun Subramaniyan, Elaheh Sadredini, Reza Rahimi, Kevin Skadron, Westley Weimer, and Reetuparna Das. ASPEN: A Scalable In-SRAM Architecture for Pushdown Automata. In Proceedings of the 51st Annual IEEE/ACM International Symposium on Microarchitecture, MICRO 51. Fukuoka, Japan. 2018. IEEE. 21% acceptance rate pdf lightning talk presentation poster
  • Sihang Liu, Kevin Angstadt, Mike Ferdman, and Samira Khan. ARMOR: Towards Restricted Approximation with a Worst-Case Guarantee. In Proceedings of the 2018 Workshop on Approximate Computing Across the Stack, WAX 2018. Williamsburg, VA, 2018. pdf
  • Kevin Angstadt, Jack Wadden, Vinh Dang, Ted Xie, Dan Kramp, Westley Weimer, Mircea Stan, and Kevin Skadron. MNCaRT: An Open-Source, Multi-Architecture Automata-Processing Research and Execution Ecosystem. In IEEE Computer Architecture Letters, vol. 17, no. 1, pp. 84-87, Jan.-June 1 2018. IEEE. ~24% acceptance rate pdf
  • Jack Wadden, Kevin Angstadt, and Kevin Skadron. Characterizing and Mitigating Output Reporting Bottlenecks in Spatial Automata Processing Architectures. In Proceedings of the 24th IEEE International Symposium on High-Performance Computer Architecture, HPCA '18. Vienna, Austria. 2018. IEEE. 21% acceptance rate pdf lightning talk
  • Ke Wang, Kevin Angstadt, Chunkun Bo, Nathan Brunelle, Elaheh Sadredini, Tommy Tracy, II, Jack Wadden, Mircea Stan, and Kevin Skadron. An overview of Micron's Automata Processor. In Proceedings of the Eleventh IEEE/ACM/IFIP International Conference on Hardware/Software Codesign and System Synthesis, CODES '16, Pittsburgh, PA. 2016. ACM. Invited Paper pdf presentation
  • Kate Highnam, Kevin Angstadt, Kevin Leach, Westley Weimer, Aaron Paulos, and Patrick Hurley. An Uncrewed Aerial Vehicle Attack Scenario and Trustworthy Repair Architecture. In Proceedings of the 46th International Conference on Dependable Systems and Networks, DSN '16 Industrial Track, Toulouse, France, 2016. IEEE. pdf presentation
  • Kevin Angstadt, Westley Weimer, and Kevin Skadron. RAPID Programming of Pattern-Recognition Processors. In Proceedings of the 21st International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS '16, Atlanta, Georgia, 2016. ACM. 22% acceptance rate pdf presentation
  • Kevin Angstadt and Ed Harcourt. A Virtual Machine Model for Accelerating Relational Database Joins using a General Purpose GPU. In Proceedings of the High Performance Computing Symposium, HPC '15, Alexandria, VA, 2015. Society for Computer Simulation International. pdf presentation

Technical Reports

  • Kevin Angstadt, Jack Wadden, Westley Weimer, and Kevin Skadron. MNRL and MNCaRT: An Open-Source, Multi-Architecture State Machine Research and Execution Ecosystem. Technical Report CS-2017-01, Department of Computer Science, University of Virginia, May 2017. pdf

Presentations and Posters

  • MNRL and MNCaRT: An Open-Source, Multi-Architecture State Machine Research and Execution Ecosystem. GOMACTech, Miami, Florida, 2018. pdf poster
  • START:UAVs—Software Techniques for Automated Resiliency and Trustworthiness in Uncrewed Aerial Vehicles. Thornton Society Reception, University of Virginia, 2016. poster
  • RAPID: Accelerating Pattern Search Applications with Reconfigurable Hardware. TECHCON 2016, Austin, Texas, 2016. Best in Session Award pdf presentation poster
  • RAPID Programming of Pattern-Recognition Processors. Center for Automata Processing Webinar Series, University of Virginia, 2016. presentation
  • Quadcopter Basics: Opportunities and Challenges. Rivanna Radio Control Club, Charlottesville, Virginia, 2016. handout
    Presented overview of quadcopter software and resiliency research to group of 15 club members.
  • Self-Healing Autonomous Vehicles: Increasing System Resiliency with Automated Program Repair. Public Days, University of Virginia, 2016. poster
  • Getting Started with the Micron Automata Processor. Center for Automata Processing Webinar Series, University of Virginia, 2016. tutorial presentation
  • Self-Healing Autonomous Vehicles: Increasing System Resiliency with Automated Program Repair. 14th Annual Jefferson Fellows Symposium, Jefferson Scholars Foundation, 2016. presentation
  • Accelerating Database Joins Using a General Purpose GPU. Festival of Science, St. Lawrence University, 2014. presentation
  • Developing Interactive Web Tools for Statistics Students. Honors Reception, St. Lawrence University, 2012. poster

Teaching

Current Semester

I do not have any teaching obligations for the Winter 2020 term.

Previous Semesters

EECS 281
Data Structures and Algorithms
EECS 398
Practical Techniques for Teaching Computing
CS 4610
Programming Languages
CS 4640
Programming Languages for Web Applications

Guest Lectures

  • Lexical Analysis Foundations and Lexical Analyzer Generators. EECS 483 (Compiler Construction), University of Michigan, Winter 2018.  Recording Available
  • Designing and Presenting Programming Languages in the Broader Research Community. EECS 590 (Advanced Programming Languages), University of Michigan, Fall 2017.  Lecture Slides  Reading Guide
  • Data-flow Analysis. CS 4501-005 (Compilers Practicum), University of Virginia, Spring 2016.  Resources
  • Accelerating Pattern Searches with Hardware. CS 6354 (Computer Architecture), University of Virginia, Spring 2016.  Lecture Slides
  • Designing and Presenting Programming Languages in the Broader Research Community. CS 6610 (Programming Languages), University of Virginia, Fall 2015.  Lecture Slides  Reading Guide

German Courses

While an undergraduate at St. Lawrence University, I taught a total of eleven discussion sections for German Language (DaF) courses.

A selection of my teaching resources may be found here.

Curricula (including materials and selection of topics and activities) for the German Labs were developed by myself to coordinate with the schedule of topics in lectures. An example syllabus is available here.

  • GER 104B: Lab for German 104 (Spring 2014)
  • GER 102C: Lab for German 102 (Spring 2014)
  • GER 102D: Lab for German 102 (Spring 2014)
  • GER 103B: Lab for German 103 (Fall 2013)
  • GER 101B: Lab for German 101 (Fall 2013)
  • GER 101C: Lab for German 101 (Fall 2013)
  • GER 101E: Lab for German 101 (Fall 2013)
  • GER 101B: Lab for German 101 (Fall 2012)
  • GER 101C: Lab for German 101 (Fall 2012)
  • GER 102C: Lab for German 102 (Spring 2012)
  • GER 101C: Lab for German 101 (Fall 2011)

Evaluations