Work Experience


Head Teaching Assistant - Fall 2016
University of Utah - School of Computing

CS 2420 - Introduction to Algorithms & Data Structures
This course provides an introduction to the problem of engineering computational efficiency into programs. Students will learn about classical algorithms (including sorting, searching, and graph traversal), data structures (including stacks, queues, linked lists, trees, hash tables, and graphs), and analysis of program space and time requirements. Students will complete extensive programming exercises that require the application of elementary techniques from software engineering.


Software Engineer Intern - Summer 2016
Salt Lake City, Utah

Audodesk - Delcam
Worked with a C/C++ legacy code base of CAD/CAM software. Updated existing C/C++ code to C# to improve maintainability and address memory issues. Worked with the main projects API to write external software that generates HTML and XLS documents that detail machine setup for part manufacturing.


Head Teaching Assistant - Spring 2016
University of Utah - School of Computing

CS 2420 - Introduction to Algorithms & Data Structures
This course provides an introduction to the problem of engineering computational efficiency into programs. Students will learn about classical algorithms (including sorting, searching, and graph traversal), data structures (including stacks, queues, linked lists, trees, hash tables, and graphs), and analysis of program space and time requirements. Students will complete extensive programming exercises that require the application of elementary techniques from software engineering.


Head Teaching Assistant - Fall 2015
University of Utah - School of Computing

CS 1410 - Introduction to Object-Oriented Programming
The second course required for students intending to major in computer science and computer engineering. Introduction to the engineering and mathematical skills required to effectively program computers, and to the range of issues confronted by computer scientists. Roles of procedural and data abstraction in decomposing programs into manageable pieces. Introduction to object-oriented programming. Extensive programming exercises that involve the application of elementary software engineering techniques.


Teaching Assistant - Spring 2015
University of Utah - School of Computing

CS 3500 - Software Practice
Meets with CS 5010. Practical exposure to the process of creating large software systems, including requirements specifications, design, implementation, testing, and maintenance. Emphasis on software process, software tools (debuggers, profilers, source code repositories, test harnesses), software engineering techniques (time management, code, and documentation standards, source code management, object-oriented analysis and design), and team development practice. Much of the work will be in groups and will involve modifying preexisting software systems.