We may earn an affiliate commission when you visit our partners.
Kurt Anderson

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.

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.

Kurt

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

Syllabus

Introduction

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

Some notes on the Binary Number System in Computer Science.

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

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. 

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! 

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.

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 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. 

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! 

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. 

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. 

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. 

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. 

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 different from trees in computer science. 

Learn about some of the applications of heaps. 

Traffic lights

Read about what's good
what should give you pause
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

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Strong cs theory foundation for beginners

According to learners, this course provides a solid foundation in Computer Science theory. Many find the instructor's explanations of complex topics like Big O Notation and data structures (arrays, linked lists, trees) to be exceptionally clear and easy to understand, especially for absolute beginners. The course is praised for its theoretical depth over practical coding, which some found helpful for understanding *why* code works. While the code examples are mentioned, some reviewers felt more hands-on practice or deeper dives into specific implementations would improve the course. Overall, it's seen as a valuable starting point for anyone looking to build a strong CS theoretical base, particularly for future programming careers. Recent reviews confirm the content remains relevant.
Emphasizes theoretical concepts over practical coding.
"This course is purely theoretical; don't expect to write much code yourself. It's about understanding the concepts."
"Good for theory, but you'll definitely need another course for practical coding implementation of these data structures and algorithms."
"It explains the concepts well, but lacks practical coding exercises to reinforce the learning through doing."
"If you're looking for a coding boot camp, this isn't it. It's foundational theory."
Fundamental concepts remain highly relevant over time.
"Even years after its release, the core concepts covered in this course are timeless and essential for any programmer."
"Recent reviews confirm the content on Big O, data structures, and algorithms is still highly relevant in today's tech landscape."
"Theory doesn't change much; this course's focus on fundamentals makes it evergreen."
"Glad to see the course is still helping people grasp these crucial computer science principles."
Covers essential CS 101 data structures and algorithms well.
"The course covers all the fundamental data structures and sorting algorithms as promised in the syllabus."
"Good overview of arrays, linked lists, stacks, queues, and basic trees like BSTs."
"Solid explanations of various sorting algorithms like bubble, merge, quick sort, and their complexities."
"The syllabus topics are covered thoroughly for an introductory course."
Excellent starting point for beginners in Computer Science.
"As a total beginner with no prior CS knowledge, this course gave me the necessary theory background I was missing. Highly recommend for beginners."
"Perfect introduction to CS fundamentals, highly recommend for those starting out in programming and wanting the 'why' behind things."
"It really helped solidify my understanding of core CS concepts that are essential before diving deep into coding languages."
"Great first step into the world of computer science and algorithm analysis."
Instructor excels at making complex theory understandable.
"The instructor explained concepts like Big O and data structures very clearly, making them easy to understand for someone new to CS theory."
"I struggled with Big O notation before, but the way it was explained here just clicked perfectly. It finally makes sense!"
"His step-by-step approach to linked lists and trees was excellent, really breaking down potentially confusing topics."
"The instructor breaks down topics into bite-sized pieces that are easy to digest and follow along with."
Reviewers desired more hands-on coding practice.
"While the explanations are great, I wished there were more hands-on coding exercises or assignments to practice implementing the concepts."
"The code examples provided are helpful but very basic. More complex examples or labs would improve retention."
"Need to supplement this course with separate coding practice to really internalize the data structures and algorithms."
"Lack of practical coding exercises was a drawback for me; learning theory is one thing, implementing is another."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Computer Science 101: Master the Theory Behind Programming with these activities:
Review binary number system
Refresh your understanding of the binary number system, a fundamental concept in computer science.
Browse courses on Binary Number System
Show steps
  • Revisit the concepts of bits, bytes, and binary digits.
  • Practice converting between binary and decimal numbers.
Compile a list of online resources for computer science
Organize and share a collection of useful websites, articles, and videos related to computer science.
Browse courses on Computer Science
Show steps
  • Search for and identify high-quality resources on different aspects of computer science.
  • Organize the resources into a structured and accessible format.
  • Share your compilation with others to benefit the community.
Practice n-notation and complexity analysis
Strengthen your skills in analyzing algorithm complexity through n-notation exercises.
Browse courses on Complexity Analysis
Show steps
  • Solve problems involving time complexity analysis using n-notation.
  • Compare the complexity of different algorithms using Big O notation.
  • Analyze the efficiency of algorithms based on their complexity.
Six other activities
Expand to see all activities and additional details
Show all nine activities
Join a study group for sorting algorithms
Engage with peers to discuss and practice various sorting algorithms, deepening your understanding of their strengths and weaknesses.
Browse courses on Sorting Algorithms
Show steps
  • Find or create a study group focused on sorting algorithms.
  • Collaborate with group members to solve sorting problems.
  • Discuss the pros and cons of different sorting algorithms.
Attend a workshop on advanced algorithms and data structures
Expand your knowledge by attending a workshop focused on advanced algorithmic techniques and data structures.
Browse courses on Algorithms
Show steps
  • Identify and register for a relevant workshop.
  • Attend the workshop and actively participate in discussions.
  • Apply what you learn to your own projects or research.
Develop a visual representation of data structures
Create visual aids such as diagrams or flowcharts to enhance your understanding of different data structures.
Browse courses on Data Structures
Show steps
  • Choose a data structure to represent visually.
  • Design a visual representation that clearly illustrates its structure and operations.
  • Share your visual representation with others for feedback.
Read "Introduction to Algorithms" by Cormen, Leiserson, and Rivest
Supplement your learning with a comprehensive textbook that covers core algorithms and data structures.
Show steps
  • Read through the relevant chapters on algorithms and data structures.
  • Solve practice problems from the book to reinforce your understanding.
Mentor junior or beginner programmers
Share your knowledge and expertise by mentoring less experienced programmers, fostering their growth in the field.
Browse courses on Mentoring
Show steps
  • Identify opportunities to mentor others, such as through online forums or local meetups.
  • Provide guidance, support, and encouragement to your mentees.
  • Share your experiences and insights to help them overcome challenges.
Build a simple data structure library
Apply your knowledge of data structures by implementing a simple library that can be used in your own projects.
Browse courses on Data Structures
Show steps
  • Choose a programming language and framework to use.
  • Design and implement a library that includes basic data structures.
  • Test and debug your library to ensure its functionality.

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.
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.
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.
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.

Share

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

Similar courses

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser