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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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#.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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#.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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#.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Test Run - Curved Lines for Bing Maps AJAX
Wed, 01 Jun 2011 10:00:00 GMT
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
Wed, 06 Jan 2010 10:00:00 GMT
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 .
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.
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.
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.
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.
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.
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.
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.
Test Run - Using Combinations to Improve Your Software Test Case Generation
Tue, 15 Jun 2004 10:00:00 GMT
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.
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.
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.