This computer opponent uses a crude Monte Carlo tree search to dominate its opponents. The code is available here if you want to look at that garbage. The main concept behind this Monte Carlo decision making is that the bot will look at the current state of the game, then simulate as many games as possible dropping the pieces at random. After those simulations are completed, the bot can choose to drop its piece in the column that returned the best winning percentage. So go ahead - try to beat this fairly decent Connect 4 opponent in a game on the board below:

The percentages underneath each column represent the percent of times dropping a piece in that column resulted in a win for the bot. The higher the percentage, the better the move (in theory). Taking the average win percentage of each column can give the bot a general "confidence" level on how likely they are to win the current game.

You have played 0 games, while the Monte Carlo bot has finished a simulation of 0 total games.

Not going to lie, this bot beats me more times than not. I can't figure out if this particular algorithm is good, or if I just suck at Connect 4. You can let me know how competitive your games have been.