Solving Games in Java (Part I) - Practical Java Projects
What you'll learn
- Learn to use searching techniques in practice (this part is mostly about DFS)
- Build a solver for Boggle game (in 3 different ways)
- Get a project prototype to work on and develop it further
Requirements
- Basic Java knowledge
- Understanding of basic data structures (array, list, queue)
- Basic grasp of recursion
- Read a thing or two about depth-first and breadth-first searches
Description
You know Java basics, maybe even took a data structures course and wonder how your knowledge could be used in practice? Looking for a coding project to hone your skills? Want to outplay or baffle your friends with a program that plays better than them? Join these series to build game solvers, game AI and Flash game bot! From scratch!
Solving Games in Java course series are targeted for demonstration of practical usage of searching techniques like depth-first search, breadth-first search, A* search, IDA* search, minimax search, alpha-beta pruning. Basic understanding of recursion and Java data structures (list, array, queue) is recommended.
Course series (released as different courses, some might still be unreleased):
- Part I: Boggle solver (3 different solutions, primary focus is DFS)
- Part II: N-puzzle solver (4 different solutions: DFS, BFS, A*, IDA*)
- Part III: Connect Four (4 different AI players: random, Monte Carlo, minimax, alpha-beta pruning)
- Part IV: Diamond Dash (we will build a bot to beat this Facebook game)
By the end of each course you will build a working solution (or even multiple solutions) which you could continue to work on, update, modify, experiment!
Who this course is for:
- Someone who is familiar with basic algorithms and data structures
- Java beginners who want to progress further
- Java beginners who seek some practical projects
- Java beginners who are eager to learn and experiment
- Anyone else who is interested in the topics covered
Instructor
I have been dealing with software development since 2001. I am currently in pursuit of Master's Degree in Computer Science. For most of the projects at work I have been working with Java and Scala. In my free time I like to work on small projects in different languages which include Ruby, JavaScript, C/C++, Haskell.
During my first year at the university I became interested in learning algorithms and competing in different contests which required algorithms knowledge. Since then I have participated twice in ACM ICPC as a part of our university team. I'm constantly solving problems on UVa online judge having nearly 1000 problems solved. Algorithms can be very interesting when presented in the right way. Games are definitely one of those right ways to show those eager to learn how something works to solve a game or play against human at good level.