Michael Mortensen
Academic Background
Education
PhD (2009), Computer Science at CSU, 4.0 GPA
Advisor: Dr. Sudipto Ghosh, Co-advisor: Dr. Jim Bieman
M.S. (1995), Computer Science, Florida Institute of Technology, 4.0 GPA
My thesis focused on using executable assertions from
various verification techniques as an aid
for debug and improving program correctness.
Advisor: Dr. J. Richard Newman
B.S. (1993), Computer Science, Brigham Young University, 3.6 GPA
Research Interests
- Developing systems using Aspect-oriented programming (AOP) and aspectualizing legacy systems
- Repository-based studies of software evolution and refactoring
- Using AspectC++ with C++ VLSI CAD frameworks
- Using AOP (esp. AspectC++) to develop and refactor large-scale software systems
- Testing aspect-oriented systems using AOP-based coverage criteria and mock systems
Dissertation topic: Improving Software Maintenance using Aspectualization. HP legacy C++ systems that used object-oriented frameworks were refactoring using AspectC++. Framework-based aspects were created, as were more general aspects (logging, caching, etc.).
AOSD '06 Poster: Enhancing the use of Object-Oriented Frameworks
through Aspect Libraries AOSD 2006 Poster (PPT)
Publications
Michael Mortensen, Sudipto Ghosh, and James Bieman,
Aspect-Oriented Refactoring of Legacy Applications: An Evaluation,
accepted to IEEE Transactions on Software Engineering in February 2010.
Michael Mortensen. Improving Software Maintainability through Aspectualization (Dissertation)
Final Defense: May 19, 2009. Graduation: Summer 2009.
Michael Mortensen, Sudipto Ghosh, and James Bieman.
A Test Driven Approach for Aspectualizing Legacy Software Using Mock Systems,
50(7-8): 621-640, 2008.
PDF Preprint
Michael Mortensen and Sudipto Ghosh. Refactoring Idiomatic Exception Handling in C++:
Throwing and Catching Exceptions with Aspects,
International Conference on Aspect-Oriented Software Development (AOSD) Industry Track
Vancouver, British Columbia, Canada, March 12-16, 2007. PDF Preprint
Michael Mortensen, Sudipto Ghosh, and James Bieman. Testing During Refactoring: Adding Aspects to Legacy Systems,
17th International Symposium on Software Reliability Engineering (ISSRE), Raliegh, NC, November 2006. PDF Preprint
Michael Mortensen and Sudipto Ghosh.
Using Aspects with Object-Oriented Frameworks,
International Conference on Aspect-Oriented Software Development (AOSD) Industry Track
Bonn, Germany, March 20-24, 2006. PDF Preprint
PPT
Michael Mortensen and Sudipto Ghosh.
Creating Pluggable and Reusable Non-functional Aspects in AspectC++,
Fifth AOSD Workshop on ACP4IS, Bonn, Germany, March 21, 2006. PDF Preprint
Michael Mortensen and Roger T. Alexander.
An Approach for Adequate Testing of AspectJ Programs,
2005 Workshop on Testing Aspect-Oriented Programs (held in conjunction with AOSD 2005). PDF
Michael Mortensen and Roger T. Alexander.
Adequate Testing of Aspect-Oriented Programs,
Department of Computer Science, Colorado State University, Fort Collins, Colorado, USA,
Technical report CS 04-110, December 2004. PDF
Michael Mortensen, Modular Software Design of EDA Applications Software: A Case Study Using Perl 5,
International Cadence User Group Conference, Austin, TX, September 1998.
Michael Mortensen, J. Richard Newman, Using Executable Assertions to Verify CAD Programs,
International Cadence User Group Conference, Boston, MA Oct 1995.
Michael Mortensen, Using multiple verification methodologies with executable assertions to improve confidence in the correctness of software,
Masters Thesis, Department of Computer Science, Florida Institute of Technology, 1995.
Michael Mortensen, US Patent 6,772,402, "Failure path grouping method, apparatus, and computer-readable medium", awarded 2004.
This patent was for work that used statistical classification of timing paths to rank and group electrical nodes that were most likely responsible for circuit failures.
Doctoral (post-MS) coursework includes:
CS 545 -- Machine Learning
CS 575 -- Parallel Processing
CS 614B -- Object-oriented analysis and testing
CS 614F -- Certification Techniques for Component-Based Software
CS 640/641 -- Advanced Artificial Intelligence
Qualifying exams in Software Engineering and Artificial Inelligence: completed March/April 2003
Preliminary exam (proposal approval by my committee): Sep 2005. Title: Enhancing the Use of Object-Oriented Frameworks through Aspect Libraries
Work History
July 2010 - present ... Google - Boulder, CO
I work on the Chrome Browser...
1999-July 2010 ... Hewlett-Packard - Fort Collins, CO
Develop high-end server manageability firmware in C for embedded systems. The firmware runs on FPGA-based processors and within Linux on small processors manage high-end CPUs, PCI connections, and network fabric. My experience includes developing code for networking (sockets, arp protocol, etc.), hardware access, device drivers, and interrupts. In addition to development I have been the lead for test automation and software quality (code coverage, static checking, etc.).
Verified Verilog RTL using SystemC. Developed C++ models to verify logic, characterize behavior of queues, and provide random stimulus.
Used tools to measure RTL coverage, event / register coverage, and C code coverage.
Development of CAD tools in C++, C, and Perl for static timing analysis and electrical rules checking. Static timing analysis ensures that a circuit will work
at the targeted frequency. Electrical rules checking ensures that a circuit
will not have electrical glitches that cause incorrect functioning of the
circuit.
Development and integration of VLSI CAD tools using object-oriented frameworks, using Si2's OpenAccess framework and HP proprietary OO frameworks.
Development of MVC-based tools to view CAD data using Qt and Tk. Experience with design patterns and UML-based analysis and design.
1997-1999 ... Cadence Design Systems - Austin, TX
Worked (as an onsite Cadence consultant) for Motorola (PowerPC design center)
developing floorplanning tools (in C, C++, and Lisp) and integrating Cadence
tools with in house PowerPC design tools.
Worked (an an onsite Cadence consultant) for IBM as the lead programmer
developing data translation tools (using a parser generator, C, and Lisp).
1995-1997 ... Motorola - Austin, TX
Automated layout generation by creating a toolkit (in SKILL) for block-based
microcontroller design. Worked on a C-based engine for transistor sizing
for optimal speed/area/power.
1993-1995 ... DoD-funded project at the Florida Institute of Technology.
Automated LPGA (laser-programmable gate array) flow and datapath generator
tools (RAMs, ROMs, ALUs, etc.) by writing SKILL code. [SKILL is a Lisp-based
language that can access and change data within Cadence's EDA tool databases].
Teaching Experience
Received Regis University Excellence in Teaching Award - May 2003
Classroom-based courses taught for Regis University (Jan 2002-present):
CS 436 - Object oriented programming in C++
CS 432 - Object oriented design with UML
CS 444 - Software Engineering
CS 465 - Unix operating system
CS 430 - Operating Systems
CS 440 - Computer Architecture
CS 320 - C Programming
CS 493 - Senior capstone
Online courses taught for Regis University:
CS 241 - Control Structures (Pascal/Delphi)
CS 341 - Data Structures (Pascal/Delphi)
CS 372 - Advanced Programming and Algorithms (C/C++)
CS 440 - Computer Architecture
CS 436 - Object oriented programming in C++
CS 437 - Advanced Data and File Structures (C/C++)
CS 444 - Software Engineering