{"id":24510543,"url":"https://github.com/lim-calculus/project-cs50ai","last_synced_at":"2026-04-30T03:41:07.113Z","repository":{"id":151907802,"uuid":"490968755","full_name":"Lim-Calculus/Project-CS50AI","owner":"Lim-Calculus","description":"My solutions for CS50's Introduction to Artificial Intelligence with Python (CS50AI) course","archived":false,"fork":false,"pushed_at":"2022-05-19T08:20:53.000Z","size":7623,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-15T22:42:46.413Z","etag":null,"topics":["ai","artificial-intelligence","computer-vision","machine-learning","natural-language-processing","neural-network","reinforcement-learning"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lim-Calculus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-11T05:26:38.000Z","updated_at":"2022-06-11T13:51:20.000Z","dependencies_parsed_at":"2023-05-15T13:15:24.602Z","dependency_job_id":null,"html_url":"https://github.com/Lim-Calculus/Project-CS50AI","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Lim-Calculus/Project-CS50AI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lim-Calculus%2FProject-CS50AI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lim-Calculus%2FProject-CS50AI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lim-Calculus%2FProject-CS50AI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lim-Calculus%2FProject-CS50AI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lim-Calculus","download_url":"https://codeload.github.com/Lim-Calculus/Project-CS50AI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lim-Calculus%2FProject-CS50AI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32454157,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","artificial-intelligence","computer-vision","machine-learning","natural-language-processing","neural-network","reinforcement-learning"],"created_at":"2025-01-22T00:29:40.245Z","updated_at":"2026-04-30T03:41:02.650Z","avatar_url":"https://github.com/Lim-Calculus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src =\"https://prod-discovery.edx-cdn.org/media/course/image/3a31db71-de8f-45f1-ae65-11981ed9d680-b801bb328333.small.png\" width=\"100\"\u003e \u003cbr/\u003e\n# Project Harvard CS50AI \u003cbr/\u003e\n\u003cimg src =\"https://github.com/Lim-Calculus/Project-CS50AI/blob/main/Certificate/CS50AI(Lim%20Jing%20Bin).png\"\u003e \u003cbr/\u003e\n###  My projects \u0026 solutions for CS50's Introduction to Artificial Intelligence with Python (CS50AI) course\n### My CS50AI Project certificate : [CS50AI certificate](https://certificates.cs50.io/d39904b5-94a6-434b-88e5-813da08a54e5.pdf?size=letter) [Verified Certificate](https://courses.edx.org/certificates/b96f09744e39472196a39e47faf09f58) \u003cbr/\u003e\n### Before visiting the projects, please carefully read about [CS50 Academic Honesty](https://cs50.harvard.edu/x/2020/honesty/#:~:text=Unless%20otherwise%20specified%2C%20collaboration%20on,doing%20your%20work%20for%20you.). \u003cbr/\u003e\n\n## Course Information:\nLink to the course : [CS50AI on Harvard's website ](https://cs50.harvard.edu/ai/2020/ \"CS50AI on Harvard's website \") or [CS50AI on Edx](https://learning.edx.org/course/course-v1:HarvardX+CS50AI+1T2020/home \"CS50AI on Edx\") \u003cbr/\u003e\n[CS50AI](https://learning.edx.org/course/course-v1:HarvardX+CS50AI+1T2020/home \"CS50AI\") course is taught by David J. Malan and Brian Yu. \u003cbr/\u003e\nThe nominally 7-week course comprised 12 practical tasks covering key methods in both conventional deterministic AI and more current approaches such as deep neural networks and natural language processing. This repository contains my solutions to the assignments for future reference. The course had a total of 19 tasks, including 7 quizzes and 12 programming assignments.\n\n[========]\n\n## Week 0  : Search \nThe first week discussed standard methods for finding preferrably optimum or near-optimal ways to complete a job that can be reduced to a problem of \"finding a path between two places with the least amount of cost incurred.\" \u003cbr/\u003e\n\n**The algorithm and theory covered:** \u003cbr/\u003e\n**1. Depth-First Search.** \u003cbr/\u003e \nDepth-First Search is a search algorithm that exhausts each direction before trying another. \u003cbr/\u003e\n\n**2. Breadth-First Search.** \u003cbr/\u003e\nBreadth-First Search is a search algorithm that will take one step in each possible direction before taking the second step in each direction at the same time.\n\n**3. Greedy best-first search.** \u003cbr/\u003e\nGreedy best-first search is a search algorithm that extends the node closest to the target, as defined by a heuristic function h(n). The function, as the name implies, calculates how close the next node is to the goal, although it is vulnerable to errors. The greedy best-first algorithm's efficiency is determined by the quality of the heuristic function. \u003cbr/\u003e\n\n**4. A * search** \u003cbr/\u003e\nA variant of the greedy best-first method, takes into account not only h(n), the estimated cost from the current position to the goal, but also g(n), the cost incurred up to the current location. By integrating these numbers, the algorithm can more accurately calculate the value of the solution and optimise its quick decisions. The algorithm keeps track of (cost of path until now + estimated cost to goal), and if it exceeds the estimated cost of some previous option, it will abandon the current path and return to the previous option, preventing itself from taking a long, inefficient path that h(n) incorrectly marked as best. \u003cbr/\u003e\n\n**5. MiniMax** \u003cbr/\u003e\nMinimax is an adversarial search method that depicts victory circumstances as (-1) for one side and (+1) for the other. These conditions will drive subsequent actions, with the minimising side attempting to get the lowest score and the maximizer attempting to achieve the maximum score.\n\n**6. Alpha-Beta Pruning** \u003cbr/\u003e\nAlpha-Beta Pruning, a method for optimising Minimax, avoids some of the unpleasant recursive calculations. Following the establishment of the value of one action, if there is preliminary evidence that the following action can bring the opponent to a higher score than the previously established action, there is no need to investigate this action further because it will be decidedly less favourable than the previously established one. \u003cbr/\u003e\n\n**7. Depth-Limited Minimax** \u003cbr/\u003e\nDepth-limited Minimax algorithm examines just a certain number of moves before stopping, never reaching a terminal state. However, because the end of the hypothetical games has not been reached, this does not provide an exact value for each action. Depth-limited Minimax addresses this issue by relying on an evaluation function that calculates the predicted utility of the game from a given state, or, in other words, assigns values to states. \u003cbr/\u003e\n \n- **Project 0a : Degree** \u003cbr/\u003e\nThe first project makes use of the breadth-first search technique to determine the \"degrees of separation\" between two actors, commonly known as the \"Six Degrees of Kevin Bacon.\" \u003cbr/\u003e \nLink to full assignment on Harvard website : [Degree ](https://cs50.harvard.edu/ai/2020/projects/0/degrees/ \"Degree \") \u003cbr/\u003e\nLink to my project : [Project 0a : Degree](https://github.com/Lim-Calculus/Project-CS50AI/tree/main/Week%200%20:%20Search/Project%200a%20:%20Degree) \u003cbr/\u003e\n\n- **Project 0b : Tic-Tac-Toe** \u003cbr/\u003e\nThis project demonstrating a simple game of Tic-Tac-Toe with an AI opponent employs the minimax Alpha-Beta pruning algorithm to determine the best strategy. \u003cbr/\u003e\nLink to full assignment on Harvard website : [Tic-Tac-Toe](https://cs50.harvard.edu/ai/2020/projects/0/tictactoe \"Tic-Tac-Toe\") \u003cbr/\u003e\nLink to my project : [Project 0b : Tic-Tac-Toe](https://github.com/Lim-Calculus/Project-CS50AI/tree/main/Week%200%20:%20Search/Project%200b%20:%20Tic-Tac-Toe \"Project 0b : Tic-Tac-Toe\") \u003cbr/\u003e\nVideo to my project : [Presentation of Project 0b : Tic-Tac-Toe](https://www.youtube.com/watch?v=ToK0P4cTvAc \"Presentation of Project 0b : Tic-Tac-Toe\") \u003cbr/\u003e\n\n\n[========]\n\n## Week 1  :  Knowledge  \u003cbr/\u003e\nThis week works with knowledge representation and logical reasoning in a machine-readable manner, algorithmically addressing logically deductive issues. \u003cbr/\u003e\n**The algorithms and theory covered : **\n1. Knowledge-base agents\n2. Propositional Logic\n3.\tInference algorithms\n4. Truth table\n5. Model Checking\n6. Knowledge Engineering\n7. Inference rules\n8. De Morgan’s Law\n9. Conjunctive normal form\n10. Inference by resolution\n11. First-Order Logic\n\n- **Project 1a: Knights**\nThe goal of this project is to develop an AI that can use inference to rationally deduce answers to numerous classic \"Knights and knaves\" issues. \u003cbr/\u003e\nLink to full assignment on Harvard website : [Knights](https://cs50.harvard.edu/ai/2020/projects/1/knights/ \"Knights\") \u003cbr/\u003e\nLink to my project : [Project 1a : Knights](https://github.com/Lim-Calculus/Project-CS50AI/tree/main/Week%201%20:%20Knowledge/Project%201a%20:%20Knights \"Project 1a : Knights\")\n\n- **Project 1b: Minesweeper**\nThis project integrates artificial intelligence to the popular Windows game Minesweeper. It operates by making safe moves based on field information and, if no safe moves are available, producing a random one. \u003cbr/\u003e\nLink to full assignment on Harvard website : [Minesweeper](https://cs50.harvard.edu/ai/2020/projects/1/minesweeper/) \u003cbr/\u003e\nLink to my project : [Project 1b : Minesweeper](https://github.com/Lim-Calculus/Project-CS50AI/tree/main/Week%201%20:%20Knowledge/Project%201b%20:%20Minesweeper)\n\n\n[========]\n## Week 2 : Uncertainty \nDue to numerous constraints, the AI, like us, may not always be aware of all of the knowledge available within the problem at any given time. As a result, the issues revolve around building AI to operate with probabilistic reasoning.\n\n**The algorithm and theory covered:**\n1. Unconditional probability\n2. Conditional probability\n3. Random Variable\n4. Joint probability\n5. Probability Rule\n6. Bayesian Network\n7. Bayes’ Rule\n8. Inference by enumeration\n10. Inference by approximation\n11. Sampling\n12. Markov Model\n\n- **Project 2a: PageRank**\nThis project simulates Google's algorithm for ranking websites based on their relevance \u003cbr/\u003e\nLink to full assignment on Harvard Website : [PageRank](https://cs50.harvard.edu/ai/2020/projects/2/pagerank/) \u003cbr/\u003e\nLink to my project : [Project 2a : Pagerank](https://github.com/Lim-Calculus/Project-CS50AI/tree/main/Week%202%20:%20Uncertainty/Project%202a%20:%20Pagerank) \u003cbr/\u003e\n\n\n- **Project 2b: Heredity**\nThis project implements an AI algorithm that estimates a hidden attribute of having a damaged gene based on a visible impairment, in this instance, hearing loss. \u003cbr/\u003e\nLink to full assignment on Harvard Website : [Heredity](https://cs50.harvard.edu/ai/2020/projects/2/heredity/) \u003cbr/\u003e\nLink to my project : [Project 2b : Heredity](https://github.com/Lim-Calculus/Project-CS50AI/tree/main/Week%202%20:%20Uncertainty/Project%202b%20:%20Heredity)\n\n[========]\n\n## Week 3 : Optimization \u003cbr/\u003e\nThis week discusses the topic that can be handled by an AI determining the optimal solution among a set of options. \u003cbr\u003e\n\n**The algorithm and theory covered:** \u003cbr\u003e\n1. Local search\n2. Hill Climbing\n3. Simulated Annealing\n4. Linear Programming\n5. Constraint Satisfaction\n6. Node Consistency\n7. Arc Consistency\n8. Backtracking Search\n\n- **Project 3 : Crossword** \u003cbr\u003e\nThe goal of this project is to build an AI that generates crossword puzzles from a template and a word dictionary. \u003cbr\u003e\nLink to full assignment descripment on Harvard website : [Crossword](https://cs50.harvard.edu/ai/2020/projects/3/crossword/) \u003cbr/\u003e\nLink to my project : [Project 3: Crossword](https://github.com/Lim-Calculus/Project-CS50AI/tree/main/Week%203%20:%20Optimization/Project%203%20:%20Crossword)\n\n[========]\n\n## Week 4 : Learning \u003cbr\u003e\nThis week introduces the chapters on machine learning, which is the development of AI that can reach conclusions without direct human intervention. \u003cbr/\u003e\n\n**The algorithm and theory covered:** \u003cbr\u003e\n1. Machine Learning\n2. Supervised Learning\n3. Nearest - Neighbor Classification \n4. Perceptron Learning\n5. Support Vector Machines\n6. Regression\n7. Loss Functions\n8. Overfitting\n9. Regularization\n10. Reinforcement Learning\n11. Markov Descision Processes\n12. Q - learning\n13. Unsupervised Learning\n14. k-means Clustering\n15. Scikit-learn framework\n\n- **Project 4a : Shopping** \u003cbr/\u003e\nThis project implements an AI to predict whether or not internet shoppers will complete a purchase. \u003cbr/\u003e\nLink to full assignment on Harvard website : [Shopping](https://cs50.harvard.edu/ai/2020/projects/4/shopping/) \u003cbr/\u003e\nLink to my project : [Project 4a : Shopping](https://github.com/Lim-Calculus/Project-CS50AI/tree/main/Week%204%20:%20Learning/Project%204a%20:%20Shopping) \u003cbr/\u003e\n\n- **Project 4b : Nim** \u003cbr/\u003e\nThis project implements an AI that learns to play the NIM game, in which two players remove rings from several towers, with the last person to take a ring losing. \u003cbr/\u003e\nLink to full assignment on Harvard website : [Nim](https://cs50.harvard.edu/ai/2020/projects/4/nim/) \u003cbr/\u003e\nLink to my project : [Project 4b : Nim](https://github.com/Lim-Calculus/Project-CS50AI/tree/main/Week%204%20:%20Learning/Project%204b%20:%20Nim) \u003cbr/\u003e\n\n[========]\n\n## Week 5: Neural Networks \u003cbr/\u003e\nThis week discusses the now immensely popular notion of neural networks, which was developed in the 1970s but is only being used now because of decreasing processing costs.\u003cbr/\u003e\n**The algorithm and theory covered:** \u003cbr/\u003e\n1. Neural Networks\n2. Activation Functions\n3. Neural Network Structure\n4. Gradient Descent\n5. Multilayer Neural Networks\n6. Backpropagation\n7. Overfitting\n8. TensorFlow\n9. Computer Vision\n10. Image Convolution\n11. Convolutional Neural Networks\n12. Recurrent Neural Networks\n\n- **Project 5: Traffic** \u003cbr/\u003e\nThis project is to develop a rudimentary computer vision neural network that recognizes traffic signs in preparation for automated driving. \u003cbr/\u003e \nLink to full assignment descriptions on Harvard website : [Traffic](https://cs50.harvard.edu/ai/2020/projects/5/traffic/) \u003cbr/\u003e\nLink to my project : [Project 5 : Traffic](https://github.com/Lim-Calculus/Project-CS50AI/tree/main/Week%205%20:%20Neural%20Networks/Project%205%20:%20Traffic) \u003cbr/\u003e\nLink to my project presentation : [CS50AI Week 5 Traffic Video Presentation](https://www.youtube.com/watch?v=PSAPfkUEr3k)\n\n[========]\n## Week 6 : Natural Language Processing \u003cbr/\u003e\nThis week's topic introduces Natural Language Processing (NLP), an algorithmic approach that allows AI to begin comprehending and dealing with human language. \u003cbr/\u003e\n**The algorithm and theory covered:** \u003cbr/\u003e\n1. Language\n2. Syntax and Semantics\n3. ntlk\n4. n-grams\n5. Tokenization\n6. Markov Models\n7. Bags - of Words Model\n8. Naive Bayes\n9. Information Retrieval\n10. tf-idf\n11. Information Extraction\n12. WordNet\n13. Word Representation\n14. word2vec\n\n- **Project 6a : Parser** \u003cbr/\u003e\nThe nltk package is used in this project to parse sentences into their core noun phrase components. \u003cbr/\u003e\nLink to full assignment descriptions on Harvard website : [Parser](https://cs50.harvard.edu/ai/2020/projects/6/parser/) \u003cbr/\u003e\nLink to my project : [Project 6a : Parser](https://github.com/Lim-Calculus/Project-CS50AI/tree/main/Week%206%20:%20Language/Project%206a%20:%20Parser) \u003cbr/\u003e\n\n- **Project 6b : Questions** \u003cbr/\u003e\nThis project employs n-grams to parse datasets / data corpuses in order to understand word frequencies and meanings. Then it responds to queries by using plausible answer phrases from the original dataset. \u003cbr/\u003e\nLink to full assignment descriptions on Harvard website : [Questions](https://cs50.harvard.edu/ai/2020/projects/6/questions/) \u003cbr/\u003e\nLink to my project : [Project 6b : Questions](https://github.com/Lim-Calculus/Project-CS50AI/tree/main/Week%206%20:%20Language/Project%206b:%20Questions) \u003cbr/\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flim-calculus%2Fproject-cs50ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flim-calculus%2Fproject-cs50ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flim-calculus%2Fproject-cs50ai/lists"}