We may earn an affiliate commission when you visit our partners.
Course image
Udemy logo

Computer Science 101

Master the Theory Behind Programming

Kurt Anderson

Master the Theory to Becoming a Good Programmer.

Read more

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.


Enroll now

What's inside

Learning objectives

  • 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



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. 

Read more
Binary Number Introduction
Binary Deca Number Conversion

Some notes on the Binary Number System in Computer Science.

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

In this unit we will learn n-notation, and how we can use it to compare different algorithms!
All Notes

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

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

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

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

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

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

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

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

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

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

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

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

Understand Data Storage, and how Arrays work and run.

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. 

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

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

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

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

Let's go over a bit more math to understand our next data structure, the circular array.

Let's work through an example of how a circular array works.

Let's take a break and look at some code on how a circular array works.

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. 

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

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

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

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. 

Let's cement our learning with a quiz! 

Linked Lists

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! 

Let's go over the linked list run times and how they compare to the array run times.

Singly Linked-List Code Example

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

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!  

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. 

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

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

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

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

Now let's combine the data structures we have learned in to different data structures.

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. 

Let's tie things together by covering a code example of a stack.

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

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 Code Example

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

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. 

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

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

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

We will go over the basic sorting algorithms and pros and cons of each.

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

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 Coding Example

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

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.  

Let's go over how selection sort works with code!

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

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

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. 

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


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. 

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

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

Here is how quick sort might be applied in code.

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

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.  

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. 

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

Merge Sort Code Example

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. 

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

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

Sorting Algorithm Real World Examples
We will learn the basics of trees and how they are used to organize and categorize data!

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. 

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

Tree Code Example
Tree Notes

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

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

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

Learn about heaps and how they are beneficial to Computer Science

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

Heap Analysis

Learn about some of the applications of heaps. 

Heap Notes
We will learn about graphs and graph theory in computer science.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Supports the development of core knowledge and skills for a career as a programmer or software engineer
Taught by an experienced and knowledgeable instructor
Covers a wide range of fundamental computer science topics
Provides a strong foundation for further learning in computer science
Suitable for both beginners and those with some prior programming experience
Emphasizes hands-on practice and real-world examples

Save this course

Save Computer Science 101: Master the Theory Behind Programming to your list so you can find it easily later:

Reviews summary

Engaging introduction to cs

According to students, this introductory course is engaging and gets straight to the point of how software is made. The easy to understand sections on Big O notation and sorting algorithms receive high praise. Theory-focused learners will greatly enjoy this course.
Students found the section on sorting algorithms to be engaging
"I enjoyed learning about sorting algorithms."
Well-received section on Big O notation
"I was nervous about the Big O Notation section, but it was broken down in a way that was easy to understand."
Many students are engaged with the materials
"I was never one to enjoy theory, but this course made it engaging and exciting."
"I found myself wanting to learn more even after each lecture was over."
Leanrs can expect theory-based materials and assignments
"This course was surprisingly theory-focused, but it was great!"
"If you think of yourself as a high level thinker, this course will be a lot of fun."

Career center

Learners who complete Computer Science 101: Master the Theory Behind Programming will develop knowledge and skills that may be useful to these careers:
Computer Network Architect
Computer Network Architects design, implement, and maintain computer networks. A strong foundation of networking and computer science is paramount to succeed in this role as a Computer Network Architect. The course provides the fundamental concepts in Computer Science and will explore core networking concepts like binary number systems, big O notation, and linked lists.
Systems Analyst
Systems Analysts design, develop, and implement computer systems for businesses. To excel at this, it is often required to have a strong understanding of computer science. This course provides a solid introduction to the fundamentals of programming and computer science, making the Systems Analyst more well-rounded in the theoretical aspect of computer science.
Computer Support Specialist
Computer Support Specialists provide technical support to computer users. To succeed in this role, it is essential to have a strong understanding of computer science. This course provides a firm understanding of the core ideas in computer science. This makes for a more well-rounded Computer Support Specialist.
Information Systems Manager
Information Systems Managers are responsible for planning, implementing, and managing computer systems for organizations. This role often requires a strong foundation in Computer Science, and this course can provide that. The course's focus on programming theory can help the Information Systems Manager make impactful decisions.
Security Analyst
Security Analysts identify and assess security risks to computer systems and networks. To be successful in this role, one should have a solid understanding of computer science. This course provides a strong foundation in computer science. This can aid in analyzing security risks more efficiently.
Web Developer
Web Developers design, develop, and maintain websites. To excel as a Web Developer, it is imperative to have a solid grasp of computer science fundamentals. This course provides a foundational understanding in the core principles of computer science.
Software Architect
Software Architects are responsible for designing, developing, and maintaining software applications. A Computer Science background is often requested for this role. This course's fundamental teachings in Computer Science will only aid the Software Architect as they grow in their career.
Database Administrator
Database Administrators are responsible for designing, implementing, and maintaining databases. A Database Administrator is likely to have a strong foundation in computer science. This course can assist by providing a stronger conceptual basis for one to build upon.
Computer and Information Research Scientist
Computer and Information Research Scientists research and develop new computer hardware and software technologies. It is expected that one in this role should have a solid background in Computer Science. This course provides a foundational understanding of the core principles of computer science.
Technical Writer
Technical Writers write documentation for computer software and hardware. To succeed in this position, it is frequently requested for one to possess a solid understanding of computer science. This course covers fundamental computer science concepts like binary number systems, big O notation, and stacks, all of which an experienced Technical Writer should have some understanding of.
Computer Programmer
Computer Programmers are responsible for writing and maintaining code that runs on computers. To be successful in this role, one should have a strong foundation in Computer Science. This course provides a firm grasp of the foundational pillars that Computer Science sits on, which can help make one a more valuable asset in this role.
Software Engineer
Software Engineers apply the principles of computer science and engineering to design, develop, maintain, and test software systems. A Software Engineer is expected to have a strong understanding of computer science. This course can aid in making one a better Software Engineer by providing fundamental teachings in computer science.
Computer Hardware Engineer
Computer Hardware Engineers design, develop, and test computer hardware components. It is pretty common for one in this field to have at least a Master's Degree in Computer Science or Electrical Engineering. This course provides the Computer Hardware Engineer a strong base in the fundamentals of computer science.
Computer Scientist
Computer Scientists conduct research in the area of computer science, including hardware, software, networks, or human-computer interaction. In order to excel in this role, one should have their Master's Degree in Computer Science or any related field. This course provides a firm foundation in computer science and may assist in the research endeavors.
Data Scientist
Data Scientists are responsible for collecting, analyzing, and interpreting data to help businesses make informed decisions. To succeed as a Data Scientist, it is often necessary to possess advanced degrees such as a Master's Degree or higher. This course's topic on the fundamentals of Computer Science may be helpful as this field typically requires a background in computer science.

Reading list

We've selected 14 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Computer Science 101: Master the Theory Behind Programming.
It is one of the standard textbooks in the algorithms field and is recommended as a reference for this course. It covers a wide range of topics, including sorting, searching, graph algorithms, and dynamic programming.
The Art of Computer Programming comprehensive textbook on computer science. It covers a wide range of topics, including algorithms, data structures, and programming languages. It valuable reference for anyone interested in learning more about computer science.
Comprehensive textbook on data structures and algorithms. It valuable resource for anyone interested in learning more about these topics.
Comprehensive textbook on algorithms. It valuable resource for anyone interested in learning more about these topics.
Valuable resource for anyone interested in learning more about the theory of computation.
Valuable resource for anyone interested in learning more about compiler construction.
Provides 100 key concepts of computer science, each presented in a two-page layout with helpful diagrams, images, and examples.


Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Computer Science 101: Master the Theory Behind Programming.
Discrete Mathematics
Most relevant
Computer Science: Programming with a Purpose
Most relevant
JavaScript Algorithms and Data Structures Masterclass
Problem Solving, Python Programming, and Video Games
Introduction to Computer Science and Programming Using...
101: Introduction to Computer Science
Combinatorial Mathematics | 组合数学
Practical Data Structures & Algorithms in Java + HW
11 Essential Coding Interview Questions + Coding...
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser