Welcome to the Connect 4 Game Agent Project, part of the TU Berlin Bachelor of Science in Computer Science, and hosted by Dr. Felix Lundt in Wintersemester 23/24. In this project, students will implement a software agent capable of playing the classic game Connect 4. The project is divided into three main phases to guide your development:
-
Core Utility Functions (Weeks 1 & 2): In this initial phase, your task is to implement the core utility functions necessary to play Connect 4. These functions should enable your agent to play against a human opponent.
-
Basic Agent Design and Implementation: Once the core utility functions are in place, you will design and implement a basic game-playing agent.
-
Advanced Approaches (Rest of Semester, Possibly in Teams): In this phase, you'll choose a more advanced approach for your agent's development. This could involve techniques such as gradient-based learning, reinforcement learning, or other sophisticated strategies. We aim to set up a tournament to evaluate how well your agents perform against each other.
-
At each phase of the project, it's crucial that your code is well-tested and well-documented. Make sure to maintain a high standard of code quality.
-
Collaboration within each group should follow established software development processes, including issue tracking, setting milestones, and developing new features within dedicated repository branches, among other best practices.
The main objective of this course is to teach fundamental concepts of 'software carpentry,' which include:
-
Use of Version Control: You will become proficient with version control systems like Git to manage your project's source code.
-
Basic Software Design Principles: You'll learn and apply essential software design principles to create a well-structured and maintainable codebase.
-
Test-Driven Development: Writing tests to validate your code's functionality and ensuring it remains robust throughout development.
-
Documentation: Creating comprehensive documentation to help others understand and use your software.
-
Debugging, Profiling, and Optimization: Developing skills in debugging, profiling, and optimizing your code for efficiency.