Computer Science 101: Master the Theory Behind Programming
4.5 (2,378 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
12,407 students enrolled

Computer Science 101: Master the Theory Behind Programming

Computer Science 101: Learn Computer Science to become a better Programmer and Software Engineer.
4.5 (2,378 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
12,407 students enrolled
Created by Kurt Anderson
Last updated 5/2020
English [Auto], French [Auto], 1 more
  • Italian [Auto]
Current price: $34.99 Original price: $49.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 8.5 hours on-demand video
  • 20 articles
  • 1 downloadable resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Understand the Fundamental Theories of Algorithm Analysis
  • Be able to Compare Various Algorithms
  • Understand When to use Different Data Structures and Algorithms
  • Understand the Fundamentals of Computer Science theory
  • Understand the Core Sorting Algorithms
Course content
Expand all 83 lectures 09:11:27
+ Introduction
4 lectures 24:41

Welcome to the Computer Science Course! I am really excited for you to get started. We will just go over a little bit about the course and then jump right in to it. 

Preview 01:08
Binary Deca Number Conversion

Some notes on the Binary Number System in Computer Science.

Binary Number System Notes

Let's cement our knowledge of the Binary Number System with a couple questions! 

Binary Number System Quiz
3 questions
+ Analyzing Algorithms
12 lectures 01:16:18
All Notes

Let's jump in to one of the core concepts of Computer Science. The analysis of Time Complexity! 

Introduction to Time-Complexity

Let's go over the log function and how it's important to computer science. 

Math Refresher: Logarithmic Functions

Let's go over factorials and how they related to computer science. 

Math Refresher: Factorial Functions

Let's go over algebraic expressions and how they relate to computer science. 

Math Refresher: Algebraic Expressions

Some notes on the refresher course and how it ties in to computer science. 

Math Refresher Notes

Let's begin our analysis with one of Computer Science's fundamental concepts, n-notation.

n-notation Introduction

Let's go more in-depth into n-notation for computer science.

n-notation Scaling

Let's go over an example in n-notation. This will apply some concrete numbers to this computer science concept.

n-notation Example

In Computer Science, n-Notation is usually combined with the important Big O Notation.

Big O Notation

Let's go over some notes on n-Notation. 

n-Notation Notes

Let's put together everything we have learned and test our comprehension! 

Big O Notation Quiz
3 questions

Let's take this concept and look at a real world example to help reinforce it a little bit better. 

Big O Real-World Example
+ Arrays
11 lectures 01:30:41

Let's take a step back and look at how data is stored in computer's. This study will help us understand different computer science data structures like arrays, linked lists, and so on. 

How is Data Stored?

Learn about our first data structure in Computer Science, the fixed array.

Preview 05:09

Learn about the computer science run times of different operations associated with arrays.

Fixed Array Run Times

Learn about the binary search algorithm, and how it applies to a sorted fixed array in computer science.

Binary Search Algorithm (Fixed Array Sorted Search)

Here is a good summary to reinforce the main concepts about an array! 

Fixed Array Notes

Let's take a look at and extension of the computer science array data structure, the circular array. With just a small change, we can improve some of the run times, and make this data structure even more flexible. 

Circular Arrays

Let's look at another improvement we can add to arrays, the ability to scale with the data. We will also look at the most efficient way to do this, making the insertion still amortized O(1) time. 

Dynamic Arrays

Learn the math behind why in some computer science problems we can approximate O(n) -> O(1)

O(1) Approximation

Let's reinforce what we have learned with a quick review using text. 

Circular and Dynamic Array Notes

Let's bring all of these computer science array patterns together with a single video. 

Array Review

Lets look at some applications for the array, and how it's used in the real world. This will help cement what exactly an array is and when you might use one. 

Array Real World Examples

Let's cement our learning with a quiz! 

Array Quiz
4 questions
+ Linked Lists
9 lectures 57:40

Let's discuss a key computer science element to hold data. The node. These are very versatile data structures which can be used to create trees and linked lists. 


Through combining nodes, we have the ability to form a different data structure, the linked list. This computer science data structure gives us the ability to link data from multiple places! 

Singly Linked List
Linked List Run Times

Let's take a step back and reinforce the singly linked lists and how they help with different computer science operations. 

Singly-Linked List Notes

These are very similar to singly linked lists. They give us a little bit more flexibility and some time improvements, which are always great in the computer science field!  

Doubly Linked Lists

These help improve our access time to the back of a linked list. This allows constant time to both the back and front of the list, giving us a lot more application with them in Computer Science. 

Tail Pointers

Let's take a step back and look at these improvements and how they are important to Computer Science. 

Doubly-Linked List and Tail Pointer Notes

Let's go over some Linked List real world examples in Computer Science. 

Linked List Real World Examples

Let's go over everything together at once. Now you should have a good understanding of the Computer Science linked list data structure. 

Linked List Review

Let's make sure we know the main points of a linked list! 

Linked Lists
3 questions
+ Stacks and Queues
9 lectures 01:01:56

Now that we have a couple of data structures under our belt, we can begin to combine them to make new data structures. This constant improvement is something that is common in Computer Science. 


Lets take a look at some examples of stacks and how we might parse through them. These types of questions are common on Computer Science tests. 

Stack Examples

Let's reinforce all of the ideas behind stacks and how they are applied in the computer science curriculum. 

Stack Notes

Let's take a look at the Stack's brother, the queue. The big difference is where insertion and removal happen. Both of these data structures have wide applications within computer science. 


Let's take a look at a few examples and how these queues are built. This will also give you an idea of their usefulness within Computer Science. 

Queue Examples

Let's tie it all together with a quick summary of what we have learned and how it applies to computer science. 

Queue Notes

Let's take a look at the run times of both of these operations and how we might build them to give us the best run times. In computer science it is essential to get these fast run times. 

Queue and Stack Run Times

Let's go over some real world examples of Stacks and Queues in Computer Science. 

Stack and Queue Real World Examples

Let's test our knowledge with a stacks and queues quiz. 

Stacks and Queues Quiz
3 questions

Let's go over one of the trickier problems in the last quiz! 

Stacks and Queues Quiz Explanation
+ Sorting Algorithms
16 lectures 01:38:08

Let's discuss one of the most important aspects of computer science, sorting. 

Introduction to Sorting Algorithms

The first sort we will cover is the bubble sort. This is typically the first sorting algorithm to be introduced in the computer science ciriculum. The reason for this is because of it's simplicity and how easy it is to analyze why it's bad. 

Bubble Sort

Let's break Bubble sort down just a little bit more and how it ties in to computer science. 

Bubble Sort Notes

Selection sort is the next logical step, as it performs pretty similar to that of bubble sort with a slight change. A sorted and unsorted region. This new addition makes it the next logical step in the computer science curriculum.  

Selection Sort

Let's summarize what we have learned about selection sort and how it applies to computer science. 

Selection Sort Notes

Let's go over some of the key concepts of Bubble and Selection Sort. 

Bubble Sort and Selection Sort Quiz
4 questions

The next step on our journey is insertion sort. It is very similar to selection sort, but adds a little bit more ingenuity. This is the next logical step and gives us the the last piece of the puzzle to start building more advanced algorithms. This is why computer science classes typically cover this sorting algorithm here. 

Insertion Sort

Let's summarize what we have learned about insertion sort and how it ties to computer science. 

Insertion Sort Notes

Let's start getting in to the faster computer science sorting algorithms. Quick sort implements a divide and conquer method to begin dividing up the work in more efficient manners. 

Quick Sort

Let's take a look at the run time for quick sort and how it we are able to derive this run time. 

Quick Sort Run Time

Let's summarize what we have learned about quick sort and how it applies to computer science. 

Quick Sort Notes

Let's do some test problems on Insertion and Quick Sort

Insertion Sort and Quick Sort Quiz
2 questions

Now let's move to one of our fastest sorting algorithms. Although quick sort is technically faster, merge sort has a consistent speed which makes it more reliable. This and quick sort are frequently used within computer science.  

Merge Sort

Let's take a look at the run times this sort offers us and how with our computer science knowledge we can figure these run times out. 

Merge Sort Run Times

Let's summarize what we have learned about merge sort and how it applies to computer science. 

Merge Sort Notes

Let's discuss a topic that is important to sorting algorithms stability. This is an important part to consider when discussing these algorithms with respect to computer science. 

Stable vs NonStable

Let's summarize stability and how it applies to computer science. 

Stable Vs NonStable Notes

Let's reinforce the key concepts of Merge Sort and Stability. 

Merge Sort and Stability Quiz
3 questions
Sorting Algorithm Real World Examples
+ Trees
6 lectures 44:15

Let's discuss another important aspect of computer science, the basics of trees. 


We can use trees to build another important aspect of computer science, the BST or the binary search tree. 

Binary Search Trees

Le'ts look at the run times of these neat computer science data structures. 

Binary Search Tree Run Times
Tree Notes

Let's reinforce some of the important ideas about Trees. 

Tree Quiz
3 questions

Another important aspect of trees and computer science, the tree traversals. 

Tree Traversals

Let's take a look at some real world applications of trees in Computer Science. 

Tree Real World Examples
+ Heaps
4 lectures 24:09

Learn about heaps and how they are different from trees in computer science. 

Heaps Introduction
Heap Analysis

Learn about some of the applications of heaps. 

Heaps Real World Examples
Heap Notes
+ Graphs
7 lectures 42:55

We will learn the basics of graphs and how graphs are different than charts in computer science.

Introduction to Graphs

We will learn about directed, undirected and weighed graphs in computer science.

Basic Types of Graphs
Graph Terminology
Graph Terminology Summary

Learn how to use a depth first search, which is not only important for graphs, but many other computer science topics.

Depth First Search

Learn about how to use Breadth First Search with graphs in Computer Science

Breadth First Search

Learn about the run times of BFS and DFS in Computer Science.

BFS and DFS Run Times
+ Conclusion
1 lecture 01:07

Thanks everyone for joining me in this computer science course! 

Thank You!
  • A Willingness to Learn New Topics!
  • No Prior Experience or Knowledge is Needed!

Master the Theory to Becoming a Good Programmer! 

If you're looking to learn the theory that makes great programmers, you've come to the right place! This course is perfect for anyone interested in learning the fundamentals to Computer Science Theory. 

No Previous Experience Necessary! 

Computer science and technology are often thought of as things only for "analytical minds". I believe however that technology and it's theory are for everyone. So I designed this course to teach each topic in a variety of easy to digest ways. Through these multiple reinforcing steps, I believe anyone can follow along and succeed! 

Why is the Theory of Programming Important? 

Understanding Computer Science theory is what sets apart Great programmers from average ones. Programming theory is something that transcends a single programming language. It gives you skills and techniques you can apply to any programming language you touch. Learning the theory behind programming is just as important, if not more important than learning a singular programming language like Java or C++.

Programming is all about problem solving. Analyzing a problem, and being able to figure out a way that a computer can help with that problem. Computer Science is the practice of this analysis process. It goes over the techniques and knowledge necessary to design efficient and sustainable code. 

So if you want to begin setting yourself apart from the average programmers, this is the course for you! 

Enroll Now and you'll Learn: 

  • Binary Number System

  • N Notation

  • Big O Notation

  • How to Analyze a Program

  • Arrays and their Advantages

  • Nodes and their Importance

  • Linked Lists and their Advantages and Implementations

  • Stacks implemented with Arrays and Linked Lists

  • Queues Implemented with Arrays and Linked Lists

  • Various Sorting Algorithms and Their Comparisions

  • Trees and Binary Search Trees

  • And Much Much More! 

My Guarantee

I am so confident you will enjoy this course, I offer a 100% 30-day money-back guarantee through Udemy. If you are not happy with your purchase, I have no problem with giving your money back! 

Are You Ready to Get Started? 

I will be waiting for you inside the course! 

Remember, this is an online course, so you can take it at your own pace. Are you busy right now? That's okay. Enroll today, and take the course at your own pace.

Thanks so much for your interest in this Computer Science 101 Course! 

See you inside!


Who this course is for:
  • Anyone who wants to become a Good Programmer
  • Anyone interested in the Computer Science Discipline
  • Anyone who wants to learn how to problem solve like a Computer Scientist