This repository contains all the work I did during my Artificial Intelligence internship at CodSoft. I'll be honest — some of these tasks pushed me out of my comfort zone, but that's kind of the point, right?
I've split the projects across Java and Python since I wanted to challenge myself with both and not just stick to one language throughout.
A conversational chatbot built using pattern matching and rule-based logic. I used Java with a Swing-based GUI to make it feel like an actual chat window rather than just a terminal output. It handles a bunch of common queries and responds based on predefined intents.
Classic Tic-Tac-Toe but with an AI opponent that doesn't go easy on you. I implemented the Minimax algorithm with Alpha-Beta Pruning, which makes the AI essentially unbeatable if you play optimally. Built the game board UI using Java Swing.
This one was the most challenging by far. I combined a pretrained CNN (ResNet) for extracting image features with an LSTM-based model to generate captions. Trained on the Flickr8k dataset. The results aren't perfect but they're genuinely interesting to look at.
Built a movie recommendation system using collaborative filtering and cosine similarity on the MovieLens dataset. You give it a movie you like, it gives you similar ones. Simple idea, but there's a lot going on under the hood.
Used OpenCV and DeepFace to detect and recognize faces in images. Supports both static images and real-time webcam feed. Wasn't expecting this one to actually work as well as it did.
- Python 3.x — PyTorch, OpenCV, DeepFace, Pandas, NumPy, scikit-learn
- Java — Swing, OOP design patterns
- Git & GitHub for version control
Each task folder has its own README.md with step-by-step setup and run instructions. I'd recommend checking those individually since the dependencies are quite different across tasks.
I built all of these from scratch during the internship period. Each project taught me something different — whether it was understanding how search algorithms work in games, how neural networks process images, or just how to structure a Java GUI properly. Not everything went smoothly the first time, and I think that's reflected in how I approached each solution.
If you have questions or feedback, feel free to reach out!