Resume |
|
Thomas Becker, Ph.D. |
|
Lake Tahoe, Nevada |
| Email: |
| Homepage: www.thbecker.net |
|
|
|
| 1997- present |
Scientific Software Engineer and Mathematician (C++/Finance) to find out what company I work for. |
|
The company I currently work for licences software for performance and style analysis of stock and bond portfolios to leading institutional investors, money managers, and financial consultants worldwide. Prior to 1997, the company had been marketing a 16-bit windows program that had been written by contractors. In the fall of 1997 the company embarked on a complete rewrite and extension of its software in C++ for Windows NT, using its own team of staff engineers. I was the second person to be hired for the project. My first and main responsibility within this project was the design and implementation of a backend calculation engine in C++, using design and implementation technologies such as design patterns, multithreading and STL. At the time, design patterns were just becoming widely known and accepted. The acceptance level of the STL in applied software engineering was practically zero. It may not be an exaggeration to say that ours was the first large commercial software project that used generic programming and the STL throughout. Needless to say, we also became early adopters and heavy users of the Boost library. Similarly, the way I used multithreading extensively in the math engine was rather ahead of its time: its immediate purpose was to enhance the user experience of the program by deferring lengthy calculations to background threads. However, the design was such that it can now be leveraged to obtain better performance on multiprocessor machines. Implementing the math engine and the multithreaded calculation framework gave me ample opportunity to hone my unit testing skills. At one point, about one third of the way through the project, my unit test collection had more lines of code than the entire rest of the project. The mathematics of the engine that I wrote is based on Modern Portfolio Theory. In particular, the module implements returns-based style analysis as set forth by Nobel laureate and Stanford professor William F. Sharpe. Credit for the overall design and architecture of the software goes to our CTO/project lead and not to me. However, since our team consisted of just the two of us for several months, I was always passively and sometimes actively involved in the high level design decisions. As the team grew from 2 to 5 developers and the project matured, my work broadened beyond the application’s back end. Firstly, there was significant collaboration with other team members on the design and implementation of the middle layer between the mathematical engine and the user interface part of the program. Later, I also performed significant work on the presentation layer, including the charting engine. The product was shipped in December of 1999 and is now being used by more than 600 plan sponsors, money managers and financial consultants worldwide. In the spring of 2000, the company began development of a Web-based version of the software in a team consisting of two to four people, at various times. My role in this team consisted of the following:
The completion of the first version of the Web product marked the end of the startup phase of the company. At that point in time, it would have been natural for me to seek new challenges. An important reason for my decision to stay on was the fact that I had a financial stake in the company, and the outlook was bright, not in the least because of the quality of my work. From hindsight, the decision to stay has turned out to be more than just financially advantageous. It has also provided me with the unique opportunity to experience the growing and maintaining of a large code base over an extended period of time. Conceiving of a piece of software, building it, and getting it to market in due time is one thing. Staying with it for years, seeing how early design decisions and implementation techniques stand the test of time, is quite another. Another aspect of my work which has done a lot for my maturity as a software engineer is the fact that here, the feedback loop between the engineer and the end user is extremely short. Nothing gives a software engineer a better reality check than to work for a small company with a dedicated and demanding community of users who will let you know what they think and who will abandon you for the competition if you cannot deliver quality in a timely fashion. The growing client base of the company has also created a role for me as staff mathematician. Besides working on the software, which still takes the majority of my time, I also tend to all things mathematical, including client support, research concerning ongoing developments in portfolio theory, and talks at user conferences. Finally, I also serve as a mentor and instructor of more junior developers on the team, primarily on the subject of C++ and the Boost library. |
|
|   | |
| 1994-1997 |
Contracted Software Development and Training out of Munich, Germany Programming languages that I worked with were, among others: C, C++, perl, AutoCAD Lisp, SQL, VBA, PL/1, and COBOL. Environments were MS-DOS, Windows NT, UNIX, OS/2, and IBM-Mainframe. Topics of the training classes that I taught for IT professionals were: Programming in C++, Windows NT Programming (Win32, MFC, COM, ODBC), as well as Windows NT System Administration and Networking. |
|   | |
| 1988-1993 |
University of Passau, Germany, Computer Algebra Group Assistant Professor Duties included:
|
|   | |
| 1988-1993 |
Department of Mathematics, University of New Orleans, New Orleans, LA Instructor/Assistant Professor Duties consisted of teaching and research in algebra. |
|   | |
| 1982-1983 |
Department of Mathematics, Tulane University, New Orleans, LA Visiting Assistant Professor Duties consisted of teaching and research in algebra. |
|
  |
|
| September 2000 - August 2003 |
Contributing Editor of C/C++ Users Journal. Author of a bimonthly column
entitled STL and Generic Programming.
Titles of the column articles were:
|
||||||||||||||||||||||||||||||||||||
|   | |||||||||||||||||||||||||||||||||||||
| 2000 - 2001 | Member of the program committee of Scott Meyers' Workshop on C++ Template Programming. The workshop was held at Net.ObjectDays 2000 in Erfurt, Germany, and again at OOPSLA 2001 in Tampa, Florida. | ||||||||||||||||||||||||||||||||||||
|   | |||||||||||||||||||||||||||||||||||||
| Articles on Software Engineering |
|
||||||||||||||||||||||||||||||||||||
|   | |||||||||||||||||||||||||||||||||||||
| Portfolio Theory |
|
||||||||||||||||||||||||||||||||||||
|   | |||||||||||||||||||||||||||||||||||||
| Mathematics Book | Thomas Becker, Volker Weispfenning, in cooperation with Heinz Kredel: Gröbner Bases. A Computational Approach to Commutative Algebra. Graduate Texts in Mathematics 149, 574 pp., Springer Verlag, Berlin, Heidelberg, New York (1993) | ||||||||||||||||||||||||||||||||||||
|   | |||||||||||||||||||||||||||||||||||||
| Mathematical Research Articles |
|
||||||||||||||||||||||||||||||||||||
|   | |||||||||||||||||||||||||||||||||||||
| Miscellaneous | My free software utilities can be found on my personal homepage. I am also a (minor) contributor the the Boost library. Together with Dave Abrahams, I contributed the zip_iterator. | ||||||||||||||||||||||||||||||||||||
|   | |||||||||||||||||||||||||||||||||||||
| Erdös Number: 2 | Paul Erdös (1913-1996) was one of the most prolific mathematicians of all times. He published joint papers with over 500 fellow mathematicians. Paul Erdös’ own Erdös number is 0. If you have published a joint paper with him, your Erdös number is 1. If you have published a joint paper with someone whose Erdös number is 1, your Erdös number is 2, etc. For more information, see the Erdös Project. My name can be found on the Erdös list as co-author of the Erdös1-mathematician Saharon Shelah. | ||||||||||||||||||||||||||||||||||||
-- P.D. James