The UCB1 Algorithm for Multi-Armed Bandit Problems

Thu, 01 Aug 2019 10:00:00 GMT

The multi-armed bandit scenario corresponds to many real-life problems where you have to choose among multiple possibilities. James McCaffrey presents a demo program that shows how to use the mathematically sophisticated but relatively easy to implement UCB1 algorithm to solve these types of problems.

Read article

Create a Machine Learning Prediction System Using AutoML

Mon, 01 Jul 2019 10:00:00 GMT

Microsoft ML.NET is a large, open source library of machine learning functions that lets you create a prediction model using a C# language program. Writing such a program isn’t simple, but as James McCaffrey explains, the AutoML system uses the ML.NET command-line interface (CLI) tool to create a prediction model for you. It also generates customizable sample code that uses the model.

Read article

Simplified Naive Bayes Classification Using C#

Mon, 03 Jun 2019 10:00:00 GMT

James McCaffrey presents a demo program that shows how to use naive Bayes classification to predict the class of a gemstone based on color, size and shape. The demo performs binary classification because there are only two class values, but the program logic can also be used without modification for multiclass classification.

Read article

Weighted k-NN Classification Using C#

Wed, 01 May 2019 10:00:00 GMT

James McCaffrey shows how to implement the k-nearest neighbors classification technique, one of the simplest of machine learning algorithms where the predicted class of a new item is determined by examining the distance of the item to data points with known class values.

Read article

Neural Anomaly Detection Using PyTorch

Mon, 01 Apr 2019 10:00:00 GMT

Anomaly detection is the process of finding rare items in a dataset. Using the PyTorch library, James McCaffrey presents a demo program that creates a neural autoencoder to handle anomaly detection, which comes with an addtional benefit in that neural techniques can handle non-numeric data by encoding that data.

Read article

Support Vector Machines Using C#

Fri, 01 Mar 2019 10:00:00 GMT

A support vector machine (SVM) is a software system that can make predictions using data. However, implementing a support vector machine is quite complex and difficult. James McCaffrey presents a complete working example of an SVM that will help you gain a good understanding of exactly how SVMs work and help you be able to use a library implementation.

Read article

Neural Regression Using PyTorch

Fri, 01 Mar 2019 10:00:00 GMT

The goal of a regression problem is to predict a single numeric value. Using a demo program, James McCaffrey shows how to create a prediction model based on the Boston Housing dataset. The demo creates and trains a neural network, then makes a prediction about the median house price in a test town.

Read article

Rating Competitors Using Infer.NET

Fri, 01 Feb 2019 10:00:00 GMT

Infer.NET is an open source code library that can be used to create probabilistic programming systems. James McCaffrey show you how to get started with Infer.NET by computing the ratings (and ranking) for a set of competitors.

Read article

Introduction to PyTorch on Windows

Wed, 02 Jan 2019 10:00:00 GMT

PyTorch is a neural network library that is quite different from and operates at a lower level than popular libraries like Microsoft CNTK, Google TensorFlow, and scikit-learn. Learn how to get started with PyTorch library and leverage the additional control over code.

Read article

Self-Organizing Maps Using C#

Wed, 02 Jan 2019 10:00:00 GMT

Self-organizing maps are relatively simple machine learning techniques/objects, but they can be confusing, both because there are so many variations and because they have characteristics that resemble several other ML techniques. James McCaffrey explains how they work and how they can be useful.

Read article

ML.NET: The Machine Learning Framework for .NET Developers

Wed, 19 Dec 2018 10:00:00 GMT

The ML.NET library is a new open source collection of machine learning code—created by Microsoft for .NET developers—that can be used to create powerful prediction systems. To demonstrate, James McCaffrey presents a program that creates a model for predicting the annual income for a person based on their age, sex, and political leaning.

Read article

Autoencoders for Visualization Using CNTK

Sat, 01 Dec 2018 10:00:00 GMT

Graphing data that has just two dimensions is easy, but what if your data has multiple dimensions? James McCaffrey shows how you can create a CNTK neural network autoencoder to condense each item down to two dimensions, in order to enhance visualization of the data.

Read article

Introduction to the ML.NET Library

Thu, 01 Nov 2018 10:00:00 GMT

James McCaffrey demonstrates a logistic regression approach to binary classification in order to introduce you to the ML.NET library, which has its origins as an internal Microsoft development tool. Unlike Python-based libraries like CNTK and TensorFlow, ML.NET integrates seamlessly into .NET applications.

Read article

Sentiment Analysis Using CNTK

Mon, 01 Oct 2018 10:00:00 GMT

Creating a custom sentiment analysis model is challenging, but it becomes feasible with the help of the Microsoft CNTK library. James McCaffrey presents a demo program that gives you all the information you need to get started on a production-quality system.

Read article

Introduction to Q-Learning Using C#

Wed, 01 Aug 2018 10:00:00 GMT

Reinforcement learning (RL) tackles problems lacking explicit training data with known, correct output values. James McCaffrey explains how Q-learning can be used to solve some types of RL problems.

Read article

Machine Learning with IoT Devices on the Edge

Mon, 02 Jul 2018 10:00:00 GMT

James McCaffrey explains two ways to design ML on the edge, one that uses a custom model and IO function and a second that uses the Microsoft Embedded Learning Library to deploy an ML model to an IoT device.

Read article

Introduction to DNN Image Classification Using CNTK

Mon, 02 Jul 2018 10:00:00 GMT

Though the use of a convolutional neural network (CNN) is now more common for image classification, for simple image classification tasks, using a standard deep neural network (DNN) is easier and often just as or even more effective. In this article, James McCaffrey explains the DNN approach, using the Microsoft CNTK library.

Read article

Neural Regression Using CNTK

Fri, 01 Jun 2018 10:00:00 GMT

The goal of a regression problem is to make a prediction where the value to predict is a single numeric value. James McCaffrey explains how to use the Microsoft CNTK library to create a neural network regression model, which is more complex than the classical statistics linear regression technique, but usually more accurate.

Read article

Understanding LSTM Cells Using C#

Sun, 01 Apr 2018 10:00:00 GMT

Long short-term memory (LSTM) cells can be used to construct LSTM recurrent neural networks. These networks have been responsible for major advances in prediction systems that work with sequence data. James McCaffrey demonstrate how to implement an LSTM cell using C#.

Read article

Neural Binary Classification Using CNTK

Thu, 01 Mar 2018 10:00:00 GMT

The goal of a binary classification problem is to make a prediction where the value to predict can take one of just two possible values. There are many approaches to this problem, but in this article I'll show how the CNTK library can create a neural network binary classification model.

Read article

Deep Neural Network Classifiers Using CNTK

Thu, 01 Feb 2018 10:00:00 GMT

The Microsoft Cognitive Toolkit library is a powerful set of functions that allows you to create machine learning prediction systems. In this article James McCaffrey explains how to use CNTK to make a deep neural network classifier.

Read article

Thompson Sampling Using C#

Thu, 01 Feb 2018 10:00:00 GMT

Thompson sampling is a clever algorithm that can help you estimate the relative effectiveness of a number of different possible choices. James McCaffrey explains how it works.

Read article

Understanding k-NN Classification Using C#

Fri, 01 Dec 2017 10:00:00 GMT

If you have a classification problem with strictly numeric predictor values and a non-huge set of training data, k-NN is often a good approach. Learn how k-NN classification works and check out the C# sample code.

Read article

Kernel Logistic Regression Using C#

Wed, 01 Nov 2017 10:00:00 GMT

Kernel logistic regression (KLR) is a machine learning technique that can be used to make binary predictions. James McCaffrey explains how it works and presents a demo program to illustrate.

Read article

Time-Series Regression Using a C# Neural Network

Sun, 01 Oct 2017 10:00:00 GMT

Time-series regression is used to make predictions based on historical time data. James McCaffrey demonstrates how to perform this kind of analysis using rolling-window data combined with a neural network, which can lead to more accurate results.

Read article

Deep Neural Network Training

Fri, 01 Sep 2017 10:00:00 GMT

James McCaffrey explains how to train a DNN using the back-propagation algorithm and describes the associated 'vanishing gradient' problem. You'll get code to experiment with, and a better understanding of what goes on behind the scenes when you use a neural network library such as Microsoft CNTK or Google TensorFlow.

Read article

Deep Neural Network IO Using C#

Tue, 01 Aug 2017 10:00:00 GMT

Many of the recent advances in machine learning, like making predictions using data, have been realized using deep neural networks (DNNs). James McCaffrey introduces you to DNNs and explains how they work.

Read article

Introduction to the Microsoft CNTK v2.0 Library

Sat, 01 Jul 2017 10:00:00 GMT

Learn how to use the Microsoft Cognitive Toolkit (CNTK), a powerful, open source library that lets you create machine learning prediction models—in particular, deep neural networks that are at the forefront of artificial intelligence efforts such as Cortana and self-driving automobiles.

Read article

Restricted Boltzmann Machines Using C#

Thu, 01 Jun 2017 10:00:00 GMT

Restricted Boltzmann Machines are fascinating software components somewhat similar to basic neural networks. James McCaffrey describes how they work, shows a demo program, and gives an example of how RBMs can be used.

Read article

Kernel Perceptrons using C#

Sat, 01 Apr 2017 10:00:00 GMT

Unlike ordinary perceptrons, which can perform binary classification on simple, linearly separable data, a kernel perceptron can be used to handle non-linearly-separable data. The demo program in this article creates a prediction model using a kernel perceptron, as James McCaffrey explains.

Read article

Chi-Squared Goodness of Fit Using C#

Wed, 01 Mar 2017 10:00:00 GMT

If you have an array of observed counts and an array of expected counts, you can calculate how closely they match using the chi-squared statistic. James McCaffrey explains how to use this goodness of fit test in your software.

Read article

The Sign Test Using C#

Wed, 01 Feb 2017 10:00:00 GMT

In this article you’ll learn what type of problem the sign test solves, get to know exactly how to perform a sign test using C#, and understand how to interpret the results of a sign test.

Read article

Exploring the Microsoft CNTK Machine Learning Tool

Sun, 01 Jan 2017 10:00:00 GMT

The Microsoft Computational Network Tool Kit is a very powerful, command-line system that can create neural network prediction systems. In this article I walk through the process of installing CNTK, setting up a demo prediction problem, creating a neural network model, making a prediction, and interpreting the results.

Read article

Solving Sudoku Using Combinatorial Evolution

Tue, 01 Nov 2016 10:00:00 GMT

James McCaffrey explains how write a program to solve difficult Sudoku problems, using a technique he calls combinatorial evolution, a set of general guidelines that can be used to design a concrete algorithm to solve a specific optimization problem.

Read article

Create Interactive Geo-Applications Using Bing Maps 8

Sat, 01 Oct 2016 10:00:00 GMT

Learn how to build interactive geo-applications with the new Bing Maps 8 library. James McCaffrey presents two Web applications that demonstrate some of its most interesting features, which respectively enable user interaction and allow users to deal with large amounts of data.

Read article

ANOVA with C#

Sat, 01 Oct 2016 10:00:00 GMT

James McCaffrey explains and shows how to code a classic statistical technique—analysis of variance (ANOVA), which is used to tell if the averages of three or more groups are equal, in situations where you only have sample data.

Read article

The Secretary Problem

Thu, 01 Sep 2016 10:00:00 GMT

In machine learning, it's often necessary to come up with an approach for stopping training in a way to optimize the probability of selecting the best prediction model, and solutions to best choice problems can help. To illustrate, James McCaffrey shows how to tackle the Secretary Problem.

Read article

Lightweight Random Number Generation

Mon, 01 Aug 2016 10:00:00 GMT

Despite the existence of the easy to use .NET Random class, there are times you’ll want to write your own random number generator. In this article, James McCaffrey presents four different algorithms for doing so.

Read article

Matrix Inversion Using C#

Fri, 01 Jul 2016 10:00:00 GMT

Matrix inversion is a fundamental technique in machine learning, but the .NET Framework doesn't seem to have a matrix inversion method. James McCaffrey remedies this with a method that uses an algorithm called Crout's LU decomposition.

Read article

Introduction to Prediction Markets

Wed, 01 Jun 2016 10:00:00 GMT

James McCaffrey describes the math behind prediction markets and shows you how to implement the key functions in code. Though you’ll probably never have to create a prediction market, the ideas and techniques are quite interesting.

Read article

The Multi-Armed Bandit Problem

Sun, 01 May 2016 10:00:00 GMT

James McCaffrey provides an implementation of the multi-armed bandit problem, which is not only interesting in its own right, it also serves as a good introduction to an active area of economics and machine learning research.

Read article

Introduction to SciPy Programming for C# Developers

Tue, 01 Mar 2016 10:00:00 GMT

James McCaffrey takes you on a quick tour of programming with SciPy, then walks you through a representative program that uses SciPy to solve a system of linear equations, in order to demonstrate similarities and differences with C# programming.

Read article

Neural Network Regression

Tue, 01 Mar 2016 10:00:00 GMT

Neural network regression is arguably the most powerful form of regression. If you want to explore this potent tool for predicting the values of certain variables based on one or more independent variables, James McCaffrey helps get you get up and running.

Read article

Roach Infestation Optimization

Mon, 01 Feb 2016 10:00:00 GMT

In machine learning, some numerical optimization algorithms are based on the behaviors of natural systems. James McCaffrey explores a relatively new technique called roach infestation optimization, which loosely models the foraging and aggregating behavior of roaches.

Read article

Introduction to Spark for .NET Developers

Tue, 01 Dec 2015 10:00:00 GMT

Here’s an overview of Spark, an open source framework for big data. With its exceptional performance characteristics, Spark is well-suited for use with machine learning systems. James McCaffrey shows how you can install and run it on a Windows machine.

Read article

The T-Test Using C#

Sun, 01 Nov 2015 10:00:00 GMT

The t-test is one of the most fundamental forms of statistical analysis, but integrating t-test functionality directly into your software using a standalone tool can be awkward or impossible. James McCaffrey explains how to use raw C# code to perform a t-test.

Read article

Linear Discriminate Analysis Using C#

Thu, 01 Oct 2015 10:00:00 GMT

James McCaffrey examines linear discriminate analysis--one of the oldest approaches to solving binary classification problems--and concludes that while the math is elegant, other algorithms may be more practical.

Read article

Computing with Artificial Spiking Neurons

Tue, 01 Sep 2015 10:00:00 GMT

James McCaffrey discusses artificial spiking neurons—small software components that model the behavior of biological neurons and just might lead to a fundamentally new approach to computers and programming

Read article

K-Means++ Data Clustering

Sat, 01 Aug 2015 10:00:00 GMT

Clustering is useful for revealing patterns in huge sets of data. One of the most common clustering techniques is the k-means algorithm. This article explains a relatively recent variation called k-means++, which improves the selection of initial means.

Read article

Introduction to R for C# Programmers

Wed, 01 Jul 2015 10:00:00 GMT

In this era of data acquisition and analysis, it makes sense to add a language for statistical computing to your toolbox. R is one such language and James McCaffrey helps C# programmers get up to speed.

Read article

Linear Regression Using C#

Wed, 01 Jul 2015 10:00:00 GMT

There aren’t many examples of how to perform linear regression using a programming language on the Internet. James McCaffrey explains how to do this using C#.

Read article

Firefly Algorithm Optimization

Mon, 01 Jun 2015 10:00:00 GMT

James McCaffrey explains a relatively new numerical optimization technique called firefly algorithm optimization, which loosely models the behavior of a swarm of fireflies.

Read article

Test Run - Multi-Class Logistic Regression Classification

Wed, 01 Apr 2015 10:00:00 GMT

James McCaffrey explains how standard logistic regression classification can be extended using multi-class logistic regression, which allows the variable to predict to have three or more values.

Read article

Test Run - Gradient Descent Training Using C#

Sun, 01 Mar 2015 10:00:00 GMT

James McCaffrey explains gradient descent and demonstrates how to use it to train a logistic regression classification system.

Read article

Test Run - L1 and L2 Regularization for Machine Learning

Mon, 02 Feb 2015 10:00:00 GMT

James McCaffrey looks at how regularization can help to reduce overfitting, a common result of machine learning that undermines the predictive accuracy of the model.

Read article

Test Run - Logistic Regression Classification with Multi-Swarm Optimization

Fri, 02 Jan 2015 10:00:00 GMT

James McCaffrey takes a look at one of the most fundamental forms of machine learning—logistic regression classification—and presents a technique called multi-swarm optimization that can be used for training.

Read article

Voice Recognition - Speech Recognition with .NET Desktop Applications

Mon, 01 Dec 2014 10:00:00 GMT

Apple Siri and Windows Phone Cortana have shown the compelling value of speech-enabled applications. This articles shows how to enable speech recognition and synthesis in applications for Windows console, Windows Forms and Windows Presentation Foundation.

Read article

Test Run - Fireworks Algorithm Optimization

Mon, 01 Dec 2014 10:00:00 GMT

James McCaffrey describes a relatively new optimization technique called fireworks algorithm optimization that, when displayed visually, resembles the geometry of exploding fireworks.

Read article

Test Run - Consensus Classification Using C#

Mon, 03 Nov 2014 10:00:00 GMT

James McCaffrey presents a custom machine learning technique that uses a rule set to create a prediction model.

Read article

Test Run - Probit Classification Using C#

Wed, 01 Oct 2014 10:00:00 GMT

James McCaffrey explores probit classification, a machine learning technique for making predictions in situations where the dependent variable to predict can take one of just two possible values.

Read article

Microsoft Azure - Introduction to Machine Learning Studio

Tue, 02 Sep 2014 10:00:00 GMT

Machine learning systems use data to make predictions. The Azure Machine Learning Studio gives you a much easier way to create a machine learning model than writing code from scratch.

Read article

Test Run - Winnow Classification Using C#

Tue, 02 Sep 2014 10:00:00 GMT

James McCaffrey explores the Winnow algorithm, a relatively simple technique for predicting the results of binary classification problems.

Read article

Test Run - Solving Sudoku Puzzles Using the MSF Library

Fri, 01 Aug 2014 10:00:00 GMT

James McCaffrey explains how to use the Microsoft Solver Foundation (MSF) library to solve Soduku puzzles programmatically.

Read article

Test Run - Distorting the MNIST Image Data Set

Tue, 01 Jul 2014 10:00:00 GMT

James McCaffrey presents a demo program that generates deformed images in order to create additional training data for an image recognition system.

Read article

Test Run - Working with the MNIST Image Recognition Data Set

Mon, 02 Jun 2014 10:00:00 GMT

James McCaffrey introduces you to the MNIST data set and image recognition, one of the most fascinating topics in the field of machine learning.

Read article

Test Run - Association Rule Learning

Thu, 01 May 2014 10:00:00 GMT

James McCaffrey explains association rule learning, an exploratory technique intended to reveal interesting and possibly useful relationships between items.

Read article

Async Programming - Asynchronous TCP Sockets as an Alternative to WCF

Mon, 03 Mar 2014 10:00:00 GMT

New features in .NET 4.5 that make it much easier to work with an effective alternative to Windows Communication Foundation called async socket programming. James McCaffrey shows how async socket programming works.

Read article

Test Run - Frequent Item-Sets for Association Rule Learning

Thu, 02 Jan 2014 10:00:00 GMT

Extracting frequently occurring item-sets from a list of transactions is a surprisingly tricky but useful task. This article explains the Apriori algorithm and presents a complete demo program.

Read article

Test Run - Radial Basis Function Network Training

Mon, 02 Dec 2013 10:00:00 GMT

Following on his previous column in which he explained the details of RBF networks, James McCaffrey now provides practical guidance on implementing RBF network training.

Read article

Test Run - Implementing the National Institute of Standards and Technology Tests of Randomness Using C#

Fri, 01 Nov 2013 10:00:00 GMT

The Computer Security Division of the U.S. government's National Institute of Standards and Technology provides resources to protect information systems against cyber threats. This article implements the NIST's tests of randomness using the C# language.

Read article

Test Run - Radial Basis Function Networks for Programmers

Tue, 01 Oct 2013 10:00:00 GMT

Radial basis function (RBF) networks are software systems that have certain similarities to neural networks. This article will describe exactly what RBF networks are, explain how RBF networks compute their outputs, and present a complete RBF network input-output demo program.

Read article

Test Run - Multi-Swarm Optimization

Mon, 02 Sep 2013 10:00:00 GMT

Multi-swarm optimization, a technique for estimating the solution to difficult or impossible numerical problems, may be simpler to implement and easier to customize than other general-purpose numerical optimization approaches, as James McCaffrey explains.

Read article

Test Run - Converting Numeric Data to Categorical Data

Thu, 01 Aug 2013 10:00:00 GMT

There are many scenarios where you need to discretize data—convert numeric data to categories—but few resources exist to tell you how. James McCaffrey presents a powerful discretization algorithm and discusses how and why you’d use it.

Read article

Test Run - Amoeba Method Optimization Using C#

Mon, 03 Jun 2013 10:00:00 GMT

Some difficult problems, especially in the areas of machine learning and artificial intelligence, can't be solved easily using classical optimization techniques. In such situations, alternatives, such as amoeba method optimization, can be of value, as James McCaffrey explains.

Read article

CLR - Shortest-Path Graph Analysis Using a CLR Stored Procedure

Wed, 01 May 2013 10:00:00 GMT

Graph analysis is becoming increasingly important in software applications, and this article shows how to perform shortest-path analysis with techniques that can also be used for many other data-access programming tasks.

Read article

Test Run - Data Clustering Using Category Utility

Wed, 01 May 2013 10:00:00 GMT

James McCaffrey presents a powerful new clustering algorithm that is relatively simple to implement, has worked well in practice, can be applied to both numeric and categorical data, and scales well to huge data sets.

Read article

CLR - Classification and Prediction Using Adaptive Boosting

Mon, 01 Apr 2013 10:00:00 GMT

James McCaffrey explain a fascinating technique called adaptive boosting classification, which uses training data to generate a large collection of very simple rules of thumb that are then weighted and combined to improve their predictive quality.

Read article

Data Clustering - Data Clustering Using Naive Bayes Inference

Fri, 01 Mar 2013 10:00:00 GMT

James McCaffrey presents a clustering algorithm based on a technique called Naive Bayes inference, which works with either categorical or numeric data.

Read article

Data Clustering - Detecting Abnormal Data Using k-Means Clustering

Fri, 01 Feb 2013 10:00:00 GMT

Learn how C# developers can use k-Means clustering to group data items into similar clusters and enable detection of abnormal data.

Read article

Test Run - Naive Bayes Classification with C#

Fri, 01 Feb 2013 10:00:00 GMT

Naive Bayes classification is a fundamental machine-learning technique that can predict which category a data case belongs to. James McCaffrey explains how it works and gives you the foundation for adding prediction features to your .NET applications.

Read article

Test Run - Artificial Immune Systems for Intrusion Detection

Wed, 02 Jan 2013 10:00:00 GMT

Explore how artificial immune systems can model the behavior of the human immune system to detect harmful network packets.

Read article

C# - Matrix Decomposition

Mon, 03 Dec 2012 10:00:00 GMT

Matrix decomposition is an essential part of many important algorithms. Learn what matrix decomposition is, when it is used, and how to code it in C# and integrate it into your applications.

Read article

Test Run - Graph-Based Shortest-Path Analysis with SQL

Mon, 03 Dec 2012 10:00:00 GMT

Shortest-path graph analysis is likely to increase in importance as enterprises gather more data and store that data in a cloud environment. This article shows how to use this approach on your data.

Read article

Test Run - Neural Network Back-Propagation for Programmers

Mon, 01 Oct 2012 10:00:00 GMT

Back-propagation is a complex, but tricky to code, algorithm that can be used to train a neural network. James McCaffrey explains how to implement back-propagation.

Read article

Test Run - Coding Logistic Regression with Newton-Raphson

Tue, 04 Sep 2012 10:00:00 GMT

There are plenty of resources describing the complex mathematics behind finding logistic regression beta parameters using Newton-Raphson, yet few implementation guides. James McCaffrey explains how logistic regression with Newton-Raphson works, and how to implement a solution in C#.

Read article

Test Run - Classification and Prediction Using Neural Networks

Mon, 02 Jul 2012 10:00:00 GMT

In the May issue, James McCaffrey explained the basics of neural networks. Now he shows you how to use neural networks to classify existing data into groups, and to predict the group membership of new data.

Read article

SQL Server - Custom Indexing for Latitude-Longitude Data

Fri, 01 Jun 2012 10:00:00 GMT

Find out how to create custom indexes for geographical data that includes latitude and longitude location information so that you can retrieve real-time data faster than ever.

Read article

Test Run - Evolutionary Optimization Algorithms

Fri, 01 Jun 2012 10:00:00 GMT

Why should you be interested in evolutionary optimization algorithms? There are at least three good reasons, James McCaffrey points out, and he shows you how to code them.

Read article

Test Run - Dive into Neural Networks

Tue, 01 May 2012 10:00:00 GMT

Neural networks can be used to solve a variety of practical problems. James McCaffrey explains what they are and presents C# code that implements a neural network.

Read article

Test Run - Bacterial Foraging Optimization

Mon, 02 Apr 2012 10:00:00 GMT

Facing a tough numerical optimization problem? A probabilistic technique that models the food-seeking and reproductive behavior of common bacteria might be able to help.

Read article

Test Run - Ant Colony Optimization

Wed, 01 Feb 2012 10:00:00 GMT

James McCaffrey introduces the Ant Colony Optimization algorithm, an artificial intelligence technique based on the pheromone-laying behavior of ants.

Read article

Test Run - Simulated Annealing and Testing

Tue, 03 Jan 2012 10:00:00 GMT

James McCaffrey explores an artificial intelligence technique based on the behavior of cooling metal.

Read article

Test Run - Tabu Algorithms and Maximum Clique

Wed, 30 Nov 2011 10:00:00 GMT

Dr. McCaffrey wraps up his examination of the challenging and mysterious maximum clique problem—often used in social networking scenarios—with an advanced solution called the tabu algorithm.

Read article

Test Run - Greedy Algorithms and Maximum Clique

Wed, 26 Oct 2011 10:00:00 GMT

Dr. McCaffrey this month presents a greedy algorithm as a solution to the graph maximum clique problem, which is to find the largest group of nodes in a graph that are all connected to one another. He explains how to design and test these algorithms to solve the problem.

Read article

Test Run - Graph Structures and Maximum Clique

Mon, 26 Sep 2011 10:00:00 GMT

In computer science, the maximum clique problem is challenging and not completely understood. But the code used to solve it can help developers out in important areas such as social networking. So dig in.

Read article

Artificial Intelligence - Particle Swarm Optimization

Fri, 29 Jul 2011 10:00:00 GMT

Particle Swarm Optimization (PSO) is an artificial intelligence technique which can be used to find approximate solutions to extremely difficult or impossible numeric maximization or minimization problems. It's loosely modeled on group behavior such as bird flocking and fish schooling.

Read article

Test Run - Curved Lines for Bing Maps AJAX

Wed, 01 Jun 2011 10:00:00 GMT

This month’s dual-purpose column provides a walkthrough of a JavaScript function to draw a Bezier curve on a Bing Maps AJAX map control along with guidelines for testing a nontrivial JavaScript function.

Read article

Test Run - Super-Simple Mutation Testing

Mon, 02 May 2011 10:00:00 GMT

Mutation testing is known for being difficult and expensive, but we’re here to show you a real-world system you can build in just a few hours with a little C# code and Visual Studio.

Read article

Natural Algorithms - Use Bee Colony Algorithms to Solve Impossible Problems

Fri, 01 Apr 2011 10:00:00 GMT

Simulated Bee Colony (SBC) algorithms model the behavior of honey bees and can be used to find solutions to difficult or impossible combinatorial problems. In this article I explain what exactly SBC algorithms are, describe the types of problems which can be solved using SBC algorithms, and present a complete end-to-end example which uses an SBC algorithm to solve the Traveling Salesman Problem.

Read article

Test Run - Diffusion Testing

Fri, 04 Mar 2011 10:00:00 GMT

The doctor prescribes a little-known technique that—under the right circumstances—lets you automatically generate new test case data from existing test cases that yield a pass result, saving time and work.

Read article

Test Run - Measuring Test Effort Progress with EVM

Tue, 01 Feb 2011 10:00:00 GMT

An important part of software testing -- or coding -- effort is the ability to measure the progress. One technique for doing this is a technique called Earned Value Management, and we'll show you how easy it is to apply EVM to your own projects.

Read article

Test Run - Web Application UI Testing with jQuery

Fri, 03 Dec 2010 10:00:00 GMT

Although jQuery was created with Web development in mind, it has several characteristics that make it well-suited for lightweight Web UI test automation. We’ll show you how to build a simple jQuery-based test harness.

Read article

Test Run - Web UI Test Automation with the WebBrowser Control

Tue, 02 Nov 2010 10:00:00 GMT

Modal message boxes generated by a Web application pose a tricky problem for automated testing. We’ll show you a relatively simple technique for creating a test harness for these cases.

Read article

Test Run - Request-Response Testing Using IronPython

Tue, 31 Aug 2010 10:00:00 GMT

Beef up your testing toolset by learning how to perform HTTP request-response tests of your ASP.NET Web apps using IronPython, a .NET Framework-compliant implementation of Python.

Read article

Test Run - Fault Injection Testing with TestApi

Fri, 30 Jul 2010 10:00:00 GMT

Fault injection testing is the process of deliberately inserting an error into an application to determine whether it deals with the error properly. We’ll explain how you can introduce faults into .NET applications at run time using the Managed Code Fault Injection APIs of the TestApi library

Read article

Test Run - Generating Graphs with WPF

Mon, 07 Jun 2010 10:00:00 GMT

A common software-development task is generating a graph from a set of test-related data. But if you're doing it by hand and the underlying data changes frequently, this particular task can become quite tedious. James McCaffrey shows you how to automate the process using Windows Presentation Foundation technology.

Read article

Test Run - Combinations and Permutations with F#

Mon, 03 May 2010 10:00:00 GMT

Understanding combinations and permutations is a fundamental skill in software testing. We show you how to work with combinations and permutations using code written in the new F# language.

Read article

Test Run - Testing Silverlight Apps Using Messages

Wed, 24 Feb 2010 10:00:00 GMT

Silverlight greatly simplifies the process of building rich Web applications, and we’ll walk through an example of using Messages as a quick method of interactively testing simple Silverlight apps.

Read article

Test Run - WCF Service Testing with Sockets

Wed, 03 Feb 2010 10:00:00 GMT

There are many ways to test WCF services, but the socket-based approach is flexible and very useful for security and performance testing. We show you show you how to test a WCF service using a network socket based approach.

Read article

Test Run - Web Application HTTP Request-Response Test Automation with JavaScript

Wed, 06 Jan 2010 10:00:00 GMT

Write a simple browser-based request-response test automation using JavaScript that’s platform independent and useful when you are working in a highly dynamic environment.

Read article

Test Run - Pairwise Testing with QICT

Mon, 14 Dec 2009 10:00:00 GMT

In this month's column, James McCaffrey explains exactly what pairwise testing is and provides you with complete C# source code for a production quality pairwise testing tool named QICT.

Read article

Test Run - Partial Anitrandom String Testing

Mon, 12 Oct 2009 10:00:00 GMT

This column presents an approach to Antirandom (AR) testing the author calls partial AR string testing, which can be used to test a wide range of software systems.

Read article

Test Run - Request-Response Testing With F#

Thu, 18 Jun 2009 10:00:00 GMT

This month we show you how to use F# to perform HTTP request-response testing for ASP.NET Web applications.

Read article

Test Run - .NET Module Testing with IronPython

Mon, 18 May 2009 10:00:00 GMT

This month we demonstrate how easy it is to use IronPython to test .NET-based libraries.

Read article

Test Run - Automating UI Tests In WPF Applications

Thu, 19 Feb 2009 10:00:00 GMT

This month we describe techniques for automating UI testing in Windows Presentation Foundation applications.

Read article

Mutant Power - Create A Simple Mutation Testing System With The .NET Framework

Thu, 09 Mar 2006 10:00:00 GMT

With mutation testing, the system under test is changed to create a faulty version called a mutant. Here James McCaffrey explains how to do this in .NET.

Read article

Test Run - Determining .NET Assembly and Method References

Thu, 09 Feb 2006 10:00:00 GMT

Before you can test any software system effectively, you must understand the system under test.If the system includes the Microsoft® . NET Framework, understanding the system under test includes understanding its assembly and method dependencies.

Read article

Test Run - Software Testing Paradoxes

Tue, 08 Nov 2005 10:00:00 GMT

Paradoxes are fun. In this month's column I show you three interesting cases that can occur when you are performing software testing. They're fundamentally mathematical in nature, and they can be a useful addition to your troubleshooting arsenal.

Read article

Test Run - Low-Level Web App UI Test Automation

Tue, 13 Sep 2005 10:00:00 GMT

As Web applications have become more complex, testing them has become more important.There are many testing techniques available to you.For example, in the April 2005 issue of MSDN®Magazine, I describe a simple JScript®-based system that can test a Web app through its UI by using the Internet Explorer Document Object Model.

Read article

Test Run - Low-Level UI Test Automation

Tue, 09 Aug 2005 10:00:00 GMT

There are several ways to test a Windows®-based application through its user interface.For example, in the January 2005 issue of MSDN®Magazine (Test Run: Lightweight UI Test Automation with . NET) I described a lightweight technique for testing .

Read article

Test Run - The Analytic Hierarchy Process

Tue, 10 May 2005 10:00:00 GMT

Most software testing takes place at a relatively low level.Testing an application's individual methods for functional correctness is one example.However, some important testing must take place at a very high level—for example, determining if a current build is significantly better overall than a previous build.

Read article

Test Run - Lightweight UI Test Automation for ASP.NET Web Apps

Tue, 15 Mar 2005 10:00:00 GMT

The release of ASP. NET revolutionized Web development and made it easy to create full-featured Web applications.Visual Studio® 2005 and ASP. NET 2. 0 will let you add even more functionality to your applications, but the more features a Web application has, the more important testing becomes.

Read article

Test Run - Automate Your ASP.NET Web Services Testing

Tue, 15 Feb 2005 10:00:00 GMT

It's no exaggeration to say that Web services are revolutionizing application-to-application communication.Web services are already being used extensively in corporate intranet environments and are making their way into commercial use, too.

Read article

Test Run - Lightweight UI Test Automation with .NET

Tue, 14 Dec 2004 10:00:00 GMT

Manual user interface testing is one of the most fundamental types of software testing and it's the kind of testing that most software engineers first experience.Paradoxically, automated user interface tests are probably the most technically challenging kind of test to write.

Read article

Test Run - API Test Automation in .NET

Tue, 19 Oct 2004 10:00:00 GMT

The most fundamental type of software test automation is automated API testing.API testing essentially entails testing the individual methods that make up a software system rather than testing the overall system itself.

Read article

Test Run - Automate Testing of Your Stored Procs

Tue, 17 Aug 2004 10:00:00 GMT

Many Windows®-based applications have a SQL Server™ back-end component that contains stored procedures.Although techniques to automatically test functions in the front-end code are well known, the techniques to write test automation for stored procedures are not.

Read article

Test Run - Test Automation for ASP.NET Web Apps with SSL

Tue, 20 Jul 2004 10:00:00 GMT

If you're encrypting user data with Secure Sockets Layer (SSL) over HTTP and you want to test your Web applications programmatically you'll find that the techniques are not widely known.In this month's column I'll show you how to set up a test SSL server and write test automation that verifies the functionality of a simple but representative Web application.

Read article

Test Run - Using Combinations to Improve Your Software Test Case Generation

Tue, 15 Jun 2004 10:00:00 GMT

Read article

Testing - Perform Code Coverage Analysis with .NET to Ensure Thorough Application Testing

Tue, 16 Mar 2004 10:00:00 GMT

When running your tests how do you know which parts of your product code are actually executed and tested? This article presents a complete system called Fundamental Function code coverage that operates at the method level.The author gives an overview of the system so you can understand code coverage principles, explains the key parts of the underlying code, and discusses how code coverage fits into the overall product development cycle.After reading this article you will be able to perform code coverage analysis on any .NET software system.

Read article

Encrypt It - Keep Your Data Secure with the New Advanced Encryption Standard

Tue, 14 Oct 2003 10:00:00 GMT

The Advanced Encryption Standard (AES) is a National Institute of Standards and Technology specification for the encryption of electronic data.It is expected to become the accepted means of encrypting digital information, including financial, telecommunications, and government data. This article presents an overview of AES and explains the algorithms it uses. Included is a complete C# implementation and examples of encrypting .NET data. After reading this article you will be able to encrypt data using AES, test AES-based software, and use AES encryption in your systems.

Read article

Test - Build Quick and Easy UI Test Automation Suites with Visual Studio .NET

Tue, 17 Dec 2002 10:00:00 GMT

The .NET Framework provides a surprising new way to quickly and easily create user interface test automation. By using objects in the System.Reflection and System.Threading namespaces, you can write automated tests in minutes instead of hours. This article walks you through the building of a typical Windows-based application that will be used as the test subject. The author then runs through the creation of a C#-based test tool that simulates clicking the test app's UI controls and checks the application's state. After the tool is built, the author explains in detail how it works so you can modify and extend it for your own use.

Read article