Skip to content

KevinLiTian/Harvard_CS50_AI

Repository files navigation

Harvard University's CS50AI - Introduction to Artificial Intelligence

In the summer after my sophomore year, in order to gain more knowledge and continue programming, I chose to study Harvard's online artificial intelligence course, CS50AI, which I found through the online learning platform, edX. Here's my certificate after completing the course

In this repository, I am putting my notes and my work on course projects. For each lecture, I will list the objectives of the lecture and corresponding projects. Detailed notes and in-class examples regarding each lecture can be accessed through the link of the corresponding lecture below. The release material and specification of each project are also included in the DIY directory in case one wants to practice doing them

Please DO NOT directly use the source code, they are ONLY for reference. Plagiarism is strictly prohibited by both the Harvard University and the edX platform. See academic honesty and license for details

Course Overview

This course explores the concepts and algorithms at the foundation of modern artificial intelligence, diving into the ideas that give rise to technologies like game-playing engines, handwriting recognition, and machine translation. Through hands-on projects, students gain exposure to the theory behind graph search algorithms, classification, optimization, reinforcement learning, and other topics in artificial intelligence and machine learning as they incorporate them into their own Python programs. By course’s end, students emerge with experience in libraries for machine learning as well as knowledge of artificial intelligence principles that enable them to design intelligent systems of their own

Artificial Intelligence

Artificial Intelligence (AI) covers a range of techniques that appear as sentient behavior by the computer. For example, AI is used to recognize faces in photographs on your social media, beat the World’s Champion in chess, and process your speech when you speak to Siri or Alexa on your phone. This course will explore some of the ideas that make AI possible

  • Search: Finding a solution to a problem, like a navigator app that finds the best route from your origin to the destination, or like playing a game and figuring out the next move
  • Knowledge: Representing information and drawing inferences from it
  • Uncertainty: Dealing with uncertain events using probability
  • Optimization: Finding not only a correct way to solve a problem, but a better—or the best—way to solve it
  • Learning: Improving performance based on access to data and experience. For example, your email is able to distinguish spam from non-spam mail based on past experience
  • Neural Networks: A program structure inspired by the human brain that is able to perform tasks effectively
  • Language: Processing natural language, which is produced and understood by humans

Get Started

  • To setup the environment on your device, please follow the guide in docs
  • To practice doing projects, check all the projects with their specifications in DIY

Lecture 0 - Search

Search problems involve an agent that is given an initial state and a goal state, and it returns a solution of how to get from the former to the latter

Objectives

  • Search Problem Terms
  • Algorithms
  • Adversarial Search

Projects

Lecture 1 - Knowledge

Humans reason based on existing knowledge and draw conclusions. The concept of representing knowledge and drawing conclusions from it is also used in AI, and this lecture will explore how we can achieve this behavior

Objectives

  • Propositional Logic
  • Inference
  • First Order Logic

Projects

Lecture 2 - Uncertainty

Last lecture shows how AI can represent knowledge and from that, derive new knowledge. But in reality, usually we don't have that much knowledge for certain. In fact, most of the times AI can only have partial knowledge and leaving some space for uncertainty. Still, we would want the AI to make the best possible decision during these situations

Objectives

  • Probability
  • Random Variables
  • Sampling

Projects

Lecture 3 - Optimization

Optimization is choosing the best option from a set of possible options. We have already encountered problems where we tried to find the best possible option, such as in the minimax algorithm, and this lecture will learn about tools that we can use to solve an even broader range of problems

Objectives

  • Local Search
  • Linear Programming
  • Constraint Satisfaction

Projects

Lecture 4 - Learning

Machine learning provides a computer with data, rather than explicit instructions. Using these data, the computer learns to recognize patterns and becomes able to execute tasks on its own

Objectives

  • Supervised Learning
  • Reinforcement Learning
  • Unsupervised Learning

Projects

Lecture 5 - Neural Networks

AI neural networks are inspired by neuroscience. In the brain, neurons are cells that are connected to each other, forming networks. Each neuron is capable of both receiving and sending electrical signals. Once the electrical input that a neuron receives crosses some threshold, the neuron activates, thus sending its electrical signal forward

Objectives

  • Structure and Algorithms
  • Computer Vision
  • Recurrent Neural Networks

Projects

Lecture 6 - Language

Natural Language Processing spans all tasks where the AI gets human language as input. It can be challenging since natural languages have complex syntax and are sometimes ambiguous

Objectives

  • Syntax
  • Bayes & TF-IDF
  • Semantics

Projects

Contact ME

If you have any questions regarding the course material or any of the projects, please feel free to contact me through my emails [email protected] or [email protected]