Written by Nikos Vaggalis
Wednesday, 07 June 2023

Need we say more? Python for Artificial Intelligence is a match made in heaven. This free and self-paced course materializes this relationship.

CS50's Introduction to Artificial Intelligence with Python is the latest addition to the line up of Harvard University courses that build on CS50x, the online version of David Malan's highly acclaimed CS50 class aimed at teaching Computer Science to beginners.

Using Python, it 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.

In other words, it teaches subjects like search algorithms, classification, optimization and reinforcement learning.

While self-paced, the estimated time of completion is 7 weeks, if dedicating 10–30 hours per week. These 7 weeks are divided into:

0. Search
This chapter kicks off the class by tackling the so called Search Problem, for instance how to find your way through a maze.
Practical example of the notion is how Google Maps is able to figure out what is the best way for you to get from point A to point B, even weighting the traffic in. This is solved through the concept of the Search Algorithms which this chapter looks into.

1. Knowledge
This chapter explores the ability to take knowledge and reason based on that knowledge, and apply those ideas to artificial intelligence.

Practically, this means that in this chapter knowledge-based agents are going to build.That is, agents that are able to reason and act by representing knowledge internally.

2. Uncertainty
Oftentimes there's going to be some amount of uncertainty in the information that our AIs or our computers are dealing with where it might believe something with some probability.

This chapter then introduces the idea of probability theory, the mathematical foundations underpinning it and how to use it in order to program an AI that is able to use information about probability to draw inferences.

3. Optimization
This chapter tackles the "optimization problems" where optimization is really all about choosing the best option from a set of possible options. For instance when playing a game to create an AI that chooses the best move out of a set of possible moves.

4. Learning
This chapter goes through supervised learning, where you have labeled input and output pairs, as well as reinforcement learning, where an agent learns from rewards or punishments that it receives. It also briefly touches the third major category of machine learning, unsupervised learning.

5. Neural Networks
Really it can't be simpler than that. It defines a neural network in simple terms as some mathematical function that is mapping certain inputs to particular outputs, based on the structure of the network. The rest of the chapter looks at how to create them.

6. Language
So far we interacted with AI by learning to speak the language of AI. this chapter is the opposite; AI understanding our language, the human language, to get some sort of meaning out of it.

(There's also another quality class on NLP by Stanford, covered in our review Take Stanford's Natural Language Processing with Deep Learning For Free.)

The approach taken in all of the chapters is pretty approachable. It lays out the concepts comprehensibly avoiding to throw dedicated terminology around without taking care of explaining it. After managing to deliver a good grasp of the underlying theory, to further solidify it, each chapter features examples and projects in Python.

• Chapter 0 and 1 do not require any special Python libraries.

• Chapter 2 requires Pomegranate, a PyTorch implementation of probabilistic models.

• Chapter 3 requires scipy. optimize, a library that provides functions for minimizing (or maximizing) objective functions, possibly subject to constraints.

• Chapter 4 requires scikit-learn.

• Chapter5 requires numpy, tensorflow, scikit-learn and pygame. Understandably since it tackles the involved subject of Neural Networks.

• Finally Chapter 6, requires Markovify, which is a simple and extensible Markov chain generator, and NLTK for building Python programs to work with human language data.

Python 3.10 is required, while students should have at least one year experience with the language. The course also lists
as a pre-requisite having completed CS50’s Introduction to Computer Science, but I think this might only be necessary if you are a complete beginner in CS generally and just starting out. If however you are already a developer and have some Python experience then there would be no issues.

In any case, if you want to find out more this CS class make sure to check our review Computer Science For Beginners With Harvard's CS50x.

As a format, the course is offered independently on Harvard's official site or can be taken through the edX platform, either for free or paid-for if you want a verified certificate on successful completion of the course. On edX is is also offered as part of Computer Science for Artificial Intelligence Professional Certificate which bundles it with CS50's Introduction to Computer Science, a 12-week course that is completed first, at a cost of \$400.

Of course all resources, such as the videos of the lectures, the source code, the slides and even the video transcripts are available in any versions of the class you choose to enroll in.

All in all, this is a very satisfying course. It manages to blend theory and practice excellently and exposes the student to Python's data science environment that the language is so famous of. Totally recommended.

CS50's Introduction to Artificial Intelligence with Python - EdX

#### Related Articles

Computer Science For Beginners With Harvard's CS50x

Microsoft's Machine Learning for Beginners