This repository contains my work for CS50’s Introduction to Artificial Intelligence with Python (CS50 AI). It includes problem sets, notes, experiments, and reflections as I learn core AI concepts such as search, knowledge representation, uncertainty, optimization, machine learning, neural networks, and natural language processing.
The purpose of this repository is to:
- Organize all course assignments and supporting materials in one place
- Track progress throughout the course
- Document my learning using a consistent workflow
- Practice software development habits while learning AI
For each problem set and project in this course, I follow a Software Development Learning Cycle to ensure my work is structured, testable, and reflective.
- Read the full specification carefully
- Identify inputs, outputs, constraints, and evaluation criteria
- Break the task into smaller components
- Identify which AI concept the task focuses on
- Outline the approach before writing code
- Write pseudocode for core logic
- Choose appropriate algorithms and data structures
- Identify edge cases early
- Write clear, readable Python code
- Follow consistent naming and formatting
- Commit changes frequently with meaningful messages
- Run any provided tests (if available)
- Write additional tests for edge cases
- Debug systematically by isolating variables and verifying assumptions
- Confirm correctness before moving on
- Summarize what I learned from the assignment
- Identify mistakes and how they were resolved
- Improve code structure, readability, and efficiency
- Record key takeaway