# James D. McCaffrey

James D. McCaffrey is an American research software engineer at Microsoft Research known for his contributions to machine learning, combinatorics, and software test automation.

## Education

McCaffrey earned a BA in experimental psychology from the University of California, Irvine, a B.A. in applied mathematics from California State University, Fullerton, an M.S. in computer science information systems from Hawaii Pacific University, and a Ph.D. in interdisciplinary computational statistics and cognitive psychology from the University of Southern California.

## Career

Prior to joining Microsoft, McCaffrey was the Associate Vice President of Research at Volt Information Sciences in Redmond, Washington, supporting the needs of software engineers at Microsoft. He joined Microsoft as a software engineer in 2006 and worked on various Microsoft products, including Exchange Server, Azure, and Bing. He then became a research software engineer at Microsoft Research, where he directs the internal Microsoft AI School, focusing on creating machine learning and artificial intelligence algorithms. He is the Senior Technical Editor for Microsoft's Visual Studio Magazine.
His research at Microsoft primarily focuses on machine learning. His other research interests include combinatorics, especially when applied to human behavior such as sports betting and Blackjack Switch, as well as "software systems which have designs influenced by the behavior of biological systems such as swarm intelligence optimization and simulated bee colony algorithms and their application to data mining.

## Selected bibliography

* McCaffrey, J.D., "Using the Multi-Attribute Global Inference of Quality (MAGIQ) Technique for Software Testing", Proceedings of the 6th International Conference on Information Technology New Generations, April 2009, pp. 738–742.
* McCaffrey, J.D., "An Empirical Study of the Effectiveness of Partial Antirandom Testing", Proceedings of the 18th International Conference on Software Engineering and Data Engineering, June 2009, pp. 260–265.
* McCaffrey, J.D. and Czerwonka, J., "An Empirical Study of the Effectiveness of Pairwise Testing", Proceedings of the 2009 International Conference on Software Engineering Research and Practice, July 2009, pp. 186–191.
* McCaffrey, J.D., "Generation of Pairwise Test Sets using a Genetic Algorithm", Proceedings of the 33rd IEEE International Computer Software and Applications Conference, July 2009, pp. 626–631.
* McCaffrey, J.D., "Generation of Pairwise Test Sets using a Simulated Bee Colony Algorithm", Proceedings of the 2009 IEEE International Conference on Information Reuse and Integration, August 2009, pp. 115–119.
* McCaffrey, J.D. and Dierking, H., "An Empirical Study of Unsupervised Rule Set Extraction of Clustered Categorical Data using a Simulated Bee Colony Algorithm", Proceedings of the 3rd International Symposium on Rule Interchange and Applications, November 2009, pp. 182–192.
* McCaffrey, J.D., "An Empirical Study of Categorical Dataset Visualization using a Simulated Bee Colony Algorithm", Proceedings of the 5th International Symposium on Visual Computing, December 2009, pp. 179–188.
* McCaffrey, J.D., "Keras Succinctly for Syncfusion", An eBook focused on Keras, an open-source, neural-network library written in the Python language., September 2018.
* McCaffrey, J.D., "Introduction to CNTK Succinctly for Syncfusion", An eBook focused on Microsoft CNTK (Cognitive Toolkit, formerly Computational Network Toolkit), an open source code framework that enables you to create deep learning systems, such as feed-forward neural network time series prediction systems and convolutional neural network image classifiers., April 2018.
* McCaffrey, J.D., "Bing Maps V8 Succinctly for Syncfusion", The Bing Maps V8 library is a very large collection of JavaScript code that allows web developers to place a map on a webpage, query for data, and manipulate objects on a map, creating a geo-application. August 2017.
* McCaffrey, J.D., "R Programming Succinctly for Syncfusion", The R programming language on its own is a powerful tool that can perform thousands of statistical tasks, but by writing programs in R, you gain tremendous power and flexibility to extend its base functionality. June 2017.
* McCaffrey, J.D., "SciPy Programming Succinctly for Syncfusion", SciPy Programming Succinctly offers readers a quick, thorough grounding in knowledge of the Python open source extension SciPy. September 2016.
* McCaffrey, J.D., "Machine Learning Using C# Succinctly for Syncfusion", In Machine Learning Using C# Succinctly, you'll learn several different approaches to applying machine learning to data analysis and prediction problems. October 2014.
* McCaffrey, J.D., "Neural Networks Using C# Succinctly for Syncfusion", Neural networks are an exciting field of software development used to calculate outputs from input data. While the idea seems simple enough, the implications of such networks are staggering—think optical character recognition, speech recognition, and regression analysis. July 2014.