أقراء باللغة العربية Watch the video

CS50 Versions at Harvard University

Before explaining the difference between CS50 AP and CS50x, let me tell you something. There are many versions of CS50 at Harvard University. The most common versions are:

  • CS50x: this is the most famous one and is updated every year. This version is available for free. You need 12 weeks to complete this course.
  • CS50T: this is not famous, is not update every year and there are some similarities between it and CS50x. This version is available for free. You need 6 weeks to complete this course.
  • CS50AP: the info you need to know about this version is:
    1. This is for high school students who want to complete study in computer science college. This course satisfies theCollege Board’s AP Computer Science Principles (CSP) curriculum framework.
    2. However, this course is designed for anyone who has limited-to-no coding experience.
    3. The biggest one because its duration is 36 weeks.
    4. Not available for free.
    5. Not available online.
    6. The content of this course contains the content of CS50x and CS50T and more topics that are not in these two versions.

Also, there are many other uncommon versions. For example, CS50L (L for law) is designed for lawyers and law students. To know more about other versions, click here.

So, to know the difference between the course in our channel and that of Harvard University, we need to ask What is the real goal of an introduction to computer science course?

The main goal of any course is its content is an introduction to computer science is to teach you the basics of computer science. The word ‘basics’ means that it will not teach you 2 programming languages in detail and one framework. A Framework is ready to use libraries used to facilitate creating apps. Every programming language has a framework. Flask is a framework for python.

In CS50x, Dr. David includes 2 programming languages (C and Python) and a framework called a flask. So, including 2 programming languages and one framework make Dr. David neglect many details that are needed by computer science students especially the students who study the AP version of the course.

So, because we are caring about CS students and people who decide to study computer science by themselves, we decided to teach you the content of the AP version of the course.

You can say that this course teaches you CS50 AP.

But, in comparison to CS50x and CS50AP:

  • I will explain the following but not in detail:
  • C programming language with full details.
  • Python programming language with full details.
  • I will not explain the following:
  • SOL used to create databases.
  • HTML, CSS, JS used to create websites.
  • Flask framework.

The question is, why I will not teach you these topics?

For the following reasons:

  • CS50AP and this course is an introduction to computer science whose goal is to teach you basics about programming and computer science, not to teach you programming and framework to create applications.
  • CS50x course, which is available online for free, does not contain some important topics that computer science students take in their CS college or CS50AP and our goal is to make this course for CS students and for anyone who wants to study computer science.
  • If I include 2 programming languages and one framework in this course plus the content of CS50AP, the course will be about 1000 videos or more.

Also, there are many online courses for every programming language and framework. Also, in the coding bible channel, I will create a separate course for each programming language. Therefore, we do not need to include programming language in detail in this course.

Is this course designed for anyone?

Yes, this course is designed for anyone with limited-to-no coding experience. I will consider that anyone, watching this course, does not know anything about computer science.

Also, in the coding bible channel, our goal is to teach you any course in detail from scratch. This means that I will consider anyone, watching this course, does not have any previous coding experience or even does not know anything about computers.

How do I teach you the course?

According to this, there are 2 ways for teaching this course:

Computer Science Layers

Computer Science layers

First, you must know that computer science is seen as layers as shown in the following figure:

Top-down approach:

In this method, you will study computer science from the above layer to the lower layer.

The method is used by people who want to study computer science to just creating websites or applications, so, they just search for tutorials to learn programming languages and start creating applications.

They are supposed to complete learning to the lower layer; to the algorithms, but this is not the case.

Advantage: you will learn how to create apps quickly and this will encourage and boost your energy to continue learning.


  • This method will not teach you all the basics you need. This is because, in this method, you will follow the steps to create apps according to the tutorial you watch, and if one step goes wrong and an error shows up, you will not be able to know why this error shows up. This is because you do not know the basics.
  • No tutorial continues teaching to the lower layers.

Bottom-up approach:

In this method, you will study computer science from the lower layer (the algorithms) to the upper layer.

This means you will start learning from the basics of the lower layers and continues the way up to the upper layer.

This is the method used in universities to teach you from zero background.

Advantage: You will learn well because you learn all the basics not just a programming language.

Disadvantages: It takes a long time to learn everything you need.


I will teach you this course using the bottom-up approach. Also, Dr. David, who teaching The CS50 course at Harvard University, uses this method. In fact, this is the method that is used in computer science universities.


Let me tells you the difference between the 2 methods in simple words.

We said that any programming language is just a tool, and it is not computer science or the programming itself.

Teaching you how to use any programming language – to create apps – looks like that I teach you how to use the saw – to cut woods and make beautiful shapes – without teaching you the carpentry itself.

However, when I teach you the basics of carpentry properly and how to use the carpentry tools, then you will be professional carpentry.

This is the difference between the 2 methods.

The second method will teach you the basics of programming with the programming language; the tools you will use to program. However, the first method will teach you how to use program language to create apps without the basics and the details of programming and computer science.

You might ask sarcastically are the details so important? 

To know the importance of details, let me tell you about a situation from my experience as a medical laboratory specialist to show you that the real experience is not the number of years, but the amount of detail you know.

In the red blood cells (RBCs) count test, we can count the RBCs under a microscope using a special slide for counting under the microscope. After counting, we multiply the count by 10000. This number is calculated from a number written on the counting slide.

I asked my friend, who is more experienced than me, why 10000?

He told me “I don’t know. I learned it as it is”. 

So, let me ask you, what will I and my friends do if we get a new slide with a different number?

Of course, because I know that the 10000 is calculated from the number written on the slide, I will recalculate this number because the number on the new slide is different. Therefore, I will produce an accurate result.

But what about my friend? Because he does not know the details and does not know that the 10000 is calculated from the number written on that slide, he will not recalculate the new number and will count the RBCs using the new slide and multiply by 10000 producing a wrong result.

So, now, we can say that the experience is measured by the amount of information and details you know, not by the number of years of experience.

In other words, experience is measured by knowledge.

So, in our channel, we do care about details. Our goal is to teach you the very fine details of this course.

So, does this mean that I will start the course by teaching you about algorithms?



Because algorithms will be clear when I will teach you about programming languages such as C or python throughout the course.

If so, why does the algorithms layer lies before the hardware layer?

Because the normal sequence in computer science is to find an algorithm for the solution of a specific problem, then, start to implement it using programming languages.

Some algorithms need specific hardware, so, the hardware layer is above the algorithm layer immediately.

But because you are a student and not a computer scientist, you need to learn some basics first, then, you can learn about algorithms.

Watch our video