CS50x is Harvard College's introduction to the intellectual enterprises of computer science and the art of programming
for majors and non-majors alike, with or without prior programming experience.
An entry-level course taught by David J. Malan, CS50x teaches students how to think algorithmically and solve problems efficiently.
Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development.
From Wikipedia: "Computational complexity theory is a branch of the theory of computation in theoretical computer science and mathematics that focuses on classifying computational problems according to their inherent difficulty, and relating those classes to each other. A computational problem is understood to be a task that is in principle amenable to being solved by a computer, which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps, such as an algorithm."
The term analysis of algorithms is used to describe approaches to the study of the performance of algorithms. A key distinction between analysis of algorithms and computational complexity theory is that the former is devoted to analyzing the amount of resources needed by a particular algorithm to solve a problem, whereas the latter asks a more general question about all possible algorithms that could be used to solve the same problem.
Big O notation is used in Computer Science to describe the performance or complexity of an algorithm. Big O specifically describes the worst-case scenario, and can be used to describe the execution time required or the space used (e.g. in memory or on disk) by an algorithm.
Anyone who’s read Programming Pearls or any other Computer Science books and doesn’t have a grounding in Mathematics will have hit a wall when they reached chapters that mention O(N log N) or other seemingly crazy syntax. Hopefully this article will help you gain an understanding of the basics of Big O and Logarithms.
A nice guide to Big O nottion is provided by Rob Bell in his paper at A beginner's guide to Big O nottion
The result of the analysis of an algorithm is usually a formula giving the amount of time, in terms of seconds, number of memory accesses, number of comparisons or some other metric, that the algorithm takes.
In its simplest form, a logarithm answers the question: "How many of one number do we multiply to get another number?"
Example: How many 2s do we multiply to get 8?
Answer: 2 × 2 × 2 = 8, so we needed to multiply 3 of the 2s to get 8
So the logarithm is 3
We write "the number of 2s we need to multiply to get 8 is 3" as:
log2(8) = 3
The number we are multiplying is called the "base", so we can say:
"the logarithm of 8 with base 2 is 3"
or "log base 2 of 8 is 3"
or "the base-2 log of 8 is 3"
Notice we are dealing with three numbers:
the base: the number we are multiplying (a "2" in the example above)
how many times to use it in a multiplication (3 times, which is the logarithm)
The number we want to get (an "8")
A basic explaination can be found here
A more detailed and strict description is here
These are words. Can you show me a table where these values are compared?
Sure! Note that the natural logarithm has been used for the example.
We are working tirelessly to gather the most learned members in the community to help CS50 students having difficulty live, online. The service will be arranged very soon. We will be looking forward to your feedback in this regard.
CS50 is offered as CS50x through edX, a not-for-profit enterprise of its founding partners Harvard University and the Massachusetts Institute of Technology that features learning designed specifically for interactive study via the web. In other words, even if you're not a student at Harvard, you may take CS50 by registering for CS50x.
You may take CS50x at your own pace, starting and finishing anytime in 2015.
The CS50 Appliance is a "virtual machine" that allows students easy access to the tools needed for the course. It equates with running a computer system inside