We may earn an affiliate commission when you visit our partners.
Course image
Matthew Fried

This course is a full course in understanding all the mathematics and structures required to successfully do computing. It is a course in discrete structures, data structures, and algorithms. That means that we go through logic and proofs alongside the structures such as trees and graphs. This is the basis for understanding algorithms, recursion and much more.   This course aims to give a clear and cogent understanding of the major parts to discrete structures.  Anyone interested in computers should be learning this material well.

Read more

This course is a full course in understanding all the mathematics and structures required to successfully do computing. It is a course in discrete structures, data structures, and algorithms. That means that we go through logic and proofs alongside the structures such as trees and graphs. This is the basis for understanding algorithms, recursion and much more.   This course aims to give a clear and cogent understanding of the major parts to discrete structures.  Anyone interested in computers should be learning this material well.

Data structures requires the understanding of certain mathematical concepts that are built here. It is imperative to understand computing from first principles.  As such, we build and analyze different data structures with our firm mathematical foundation.

This course also discusses an introduction to algorithms. It develops many ideas related to speed and efficiency in algorithms.  It has many deep ideas and approaches to be an effective, algorithmic computerista.

Enroll now

What's inside

Learning objectives

  • Discrete structures, data structures, and algorithms. the mathematics required for computing and the structures behind it all.
  • Students will learn the fundamentals of logic, proof, graph theory, number theory, data structures, and much more - all with application!

Syllabus

Sets
Quantifiers
Relations and Functions
Logic
Read more
Introduction to Logic
Practice Problems with Logic
Conditional Statements
Practice and Validity of Arguments
Testing Validity
Application to Digital Logic Circuits
Review of Some Problems related to Section 1 and 2
Quantified Statements and Mathematical Symbols
Quantifiers 1
Quantifiers 2
Elementary Proofs
Introduction to Proofs
Even and Odd Numbers
Rational Numbers
Divisibility and Breaking into Cases
Proof by Contradiction and Contraposition
Indirect Proofs: Sqrt(2) and the Infinitude of Primes
Euclidean Algorithm
Review of Sections 1-4
Practice Problems 1
Practice Problems 2
Practice Problems 3
Practice Test with Answers
Sequences and Series
Sequences: Summation and Product Notation
Practice for Sequences
Induction
Induction 1
Induction 2
Induction 3
Induction 4
Strong Induction
Recurrence Relations
Introduction to Recursion
Recursion by Iteration
Set Theory
Introduction to Set Theory
Review: Recurrence Relations and Set Theory
Review 1 of Recurrence Relations and Set Theory
Review 2 of Recurrence Relations
Functions
Functions 1
Functions 2
Functions 3
Review of Functions
Relations
Relations 1
Modular Exponentiation and Modular Inverse Review
Review of Relations
Probability
Introduction to Probability
Intuition and Counting in Probability
Multiplication Rule and Tree Design
Permutations
Addition and Difference Rules
Inclusion/Exclusion Principle
Pigeon Hole Principle
Combinations
R-Combinations with Repetition Allowed
Pascal's Triangle and Binomial Theorem
Combinatorial Proof
Expectation
Math of Graphs
Graph Theory and Big-O Intro Review
C++ Review
Arrays and Pointers
Pointers to Pointers and Matrices
Explanation of Arrays (1d and 2d)
Using 2d Arrays - Magic Squares (and growth rates)
Arrays and Pointers Practice / Vectors
Classes
Copy Constructor and Assignment Operator Design and Logic
Move Semantics
Templates
Practice: Combinations, Palindrome, C-String
Linked Lists
Introduction to Linked Lists
Linked List as an ADT
Practice Questions for Linked Lists and some general C++
Big-O Notation
General Introduction to Growth of Functions
Introduction to Algorithm Concepts and Approaches
Big-O Definition
Big-Omega and Big-Theta Definitions
Big-O Rules and Reasoning
Simple Case Studies in Big-O: Pattern Matching and Matrix Multiplication
Big-O Practice Problems
Subset Sum Algorithm Comparison with Big-O
Permutation Algorithm and Big-O Comparison
Exponentiation Algorithm Big-O Investigation
Master Theorem
Iteration and Recursion Tree Methods
Introduction to Master Theorem
Stacks and Queues
Introduction to Stacks and Postfix Notation

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Helps learners with a background in logic and proofs, development of discrete structures, and understanding of algorithms and data structures
Features a structured outline with topics ranging from logic and proofs to data structures and algorithms
Covers essential topics in discrete mathematics, including sets, relations, functions, and graph theory
Suitable for learners with prior experience in computer science and programming who wish to enhance their foundation in theoretical computer science
Designed for intermediate to advanced learners who seek a comprehensive understanding of algorithms and data structures
Taught by an experienced instructor with a strong reputation in computer science education

Save this course

Save Discrete Structures, Data Structures, and Algorithms to your list so you can find it easily later:
Save

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 Discrete Structures, Data Structures, and Algorithms with these activities:
Review Set Theory Basics
Refreshing your understanding of set theory will strengthen your foundation for the course's mathematical concepts.
Browse courses on Set Theory
Show steps
  • Review the concepts of sets, subsets, and operations on sets.
  • Practice solving problems involving set theory.
Organize Course Notes and Materials
Organizing your notes and course materials will enhance your ability to review and retain key concepts.
Show steps
  • Gather all course notes, assignments, and materials.
  • Sort and categorize the materials based on topic or lecture.
  • Create a system for easy retrieval and review.
Join a Study Group
Participating in a study group will provide opportunities to discuss concepts, share perspectives, and reinforce your understanding.
Show steps
  • Find or create a study group with classmates.
  • Establish regular meeting times and a study schedule.
  • Collaborate to review course materials, solve problems, and prepare for assessments.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Build a Graph Data Structure
Implementing a Graph data structure in your preferred programming language will solidify your understanding of graph theory and its applications.
Browse courses on Graph Theory
Show steps
  • Choose a programming language and development environment.
  • Research different Graph data structures and their properties.
  • Implement the Graph data structure using the chosen programming language.
  • Test and debug your implementation using various test cases.
Solve Recurrence Relations Problems
Practice solving recurrence relations problems will strengthen your understanding of recursion and its applications in solving mathematical problems.
Show steps
  • Review the concept of recurrence relations.
  • Practice solving simple recurrence relations problems.
  • Learn techniques for solving more complex recurrence relations.
  • Attempt solving challenging recurrence relations problems.
Explore Graph Algorithms Using NetworkX
Working through tutorials on NetworkX will provide practical experience in applying graph algorithms to real-world problems.
Browse courses on Graph Algorithms
Show steps
  • Familiarize yourself with the NetworkX library.
  • Follow tutorials on implementing graph algorithms using NetworkX.
  • Experiment with different graph algorithms on various datasets.
Explore Data Structures Visualizations
Visualizations can enhance your understanding of how data structures work and their performance characteristics.
Browse courses on Data Structures
Show steps
  • Find resources that provide interactive visualizations of data structures.
  • Explore visualizations for different types of data structures.
  • Experiment with different operations on the data structures using the visualizations.
Develop a Decision Tree Algorithm
Creating a Decision Tree algorithm from scratch will enhance your understanding of supervised learning techniques and their practical implementation.
Browse courses on Decision Trees
Show steps
  • Study the theory behind Decision Trees and their algorithms.
  • Choose a programming language and development environment.
  • Implement the Decision Tree algorithm using the chosen programming language.
  • Evaluate the performance of your implementation using various datasets.
  • Optionally, create visualizations to illustrate the decision-making process.

Career center

Learners who complete Discrete Structures, Data Structures, and Algorithms will develop knowledge and skills that may be useful to these careers:
Computer Scientist
A Computer Scientist conducts research in the field of computer science, including the development of new programming languages, algorithms, and software systems. Discrete Structures, Data Structures, and Algorithms can be very useful for a Computer Scientist as it provides a comprehensive understanding of the logic and structures used in computer science.
Data Scientist
A Data Scientist uses scientific methods, processes, algorithms, and systems to extract knowledge and insights from data in various forms, both structured and unstructured. Discrete Structures, Data Structures, and Algorithms can be very useful for a Data Scientist as it provides a strong foundation in the mathematical and logical principles used in data analysis.
Software Engineer
A Software Engineer applies the principles of computer science and software design to the creation of computer software and applications. Common responsibilities include developing, maintaining, and improving software, as well as designing and implementing new features or systems. Discrete Structures, Data Structures, and Algorithms can be very useful for a Software Engineer as it teaches the fundamentals of logic, proof, graph theory, and data structures.
Computer Programmer
A Computer Programmer designs, develops, tests, and maintains software applications and systems. Discrete Structures, Data Structures, and Algorithms can be very useful for a Computer Programmer as it teaches the fundamentals of logic, proof, graph theory, and data structures, all of which are essential for software development.
Operations Research Analyst
An Operations Research Analyst uses mathematical and analytical techniques to solve complex problems in business and industry. Discrete Structures, Data Structures, and Algorithms can be very useful for an Operations Research Analyst as it provides a strong foundation in the mathematical and logical principles used in operations research.
Information Security Analyst
An Information Security Analyst designs and implements security measures to protect an organization's computer systems and networks from unauthorized access, use, disclosure, disruption, modification, or destruction. Discrete Structures, Data Structures, and Algorithms can be very useful for an Information Security Analyst as it provides a good foundation in the mathematical and logical principles commonly used to secure computer systems and networks.
Data Analyst
A Data Analyst collects, processes, and analyzes data to identify trends and patterns, and to make recommendations for改进ments. Discrete Structures, Data Structures, and Algorithms can be useful for a Data Analyst as it provides a good foundation in the mathematical and logical principles frequently used in data analysis.
Database Administrator
A Database Administrator manages and maintains database systems, ensuring the efficient and reliable operation of the database. Discrete Structures, Data Structures, and Algorithms can be useful for a Database Administrator as it provides a comprehensive understanding of the logic and structures used in database systems.
Actuary
An Actuary uses mathematical and statistical techniques to assess risk and uncertainty. Discrete Structures, Data Structures, and Algorithms can be useful for an Actuary as it provides a good foundation in the mathematical and logical principles frequently used in actuarial science.
Risk Analyst
A Risk Analyst uses mathematical and analytical techniques to assess and manage risk. Discrete Structures, Data Structures, and Algorithms can be useful for a Risk Analyst as it provides a good foundation in the mathematical and logical principles frequently used in risk analysis.
Financial Analyst
A Financial Analyst provides advice to businesses and individuals on financial matters. Discrete Structures, Data Structures, and Algorithms may be useful for a Financial Analyst as it provides a good foundation in the mathematical and logical principles frequently used in financial analysis.
Investment Analyst
An Investment Analyst provides advice to businesses and individuals on investment opportunities. Discrete Structures, Data Structures, and Algorithms may be useful for an Investment Analyst as it provides a good foundation in the mathematical and logical principles frequently used in investment analysis.
Web Developer
A Web Developer designs, develops, and maintains websites and web applications. Discrete Structures, Data Structures, and Algorithms can be useful for a Web Developer as it provides a good foundation in the mathematical and logical principles frequently used in web development.
Computer Systems Analyst
A Computer Systems Analyst examines how computer systems are used and apply their understanding to address business problems. The work of a Computer Systems Analyst is to bridge the gap between business and IT, they identify opportunities to improve systems and processes, and then design and implement those improvements. Discrete Structures, Data Structures, and Algorithms may be useful for a Computer Systems Analyst as it provides a comprehensive understanding of the logic and structures used in computer systems.
Systems Administrator
A Systems Administrator installs, configures, and maintains computer systems, networks, and applications. Discrete Structures, Data Structures, and Algorithms may be useful for a Systems Administrator as it provides a comprehensive understanding of the logic and structures used in computer systems.

Reading list

We've selected 12 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 Discrete Structures, Data Structures, and Algorithms.
“Concrete Mathematics” classic textbook on discrete mathematics that is written in a clear and engaging style. It covers a wide range of topics, including set theory, logic, combinatorics, graph theory, and number theory.
“Discrete Structures, Logic, and Computability” textbook on discrete structures, logic, and computability that is written in a clear and concise style. It covers a wide range of topics, including set theory, logic, combinatorics, and graph theory.
“Discrete Mathematics and Its Applications” standard textbook for undergraduate courses on discrete mathematics. It covers a wide range of topics that are essential for understanding the mathematical foundations of computer science, including set theory, logic, combinatorics, graph theory, and number theory.
“Mathematical Structures for Computer Science” textbook on mathematical structures that is written in a clear and concise style. It covers a wide range of topics, including set theory, logic, combinatorics, and graph theory.
“Introduction to Algorithms” classic textbook on algorithms. It provides a comprehensive introduction to the design and analysis of efficient algorithms, covering topics such as sorting, searching, graph algorithms, and dynamic programming.
“Set Theory and Logic” textbook on set theory and logic that is written in a clear and concise style. It covers a wide range of topics, including set theory, predicate logic, and model theory.
“Proofs and Algorithms” textbook on mathematical thinking that is written in a clear and concise style. It covers a wide range of topics, including logic, proofs, and algorithms.
“Algorithms” textbook on algorithms that is written in a clear and concise style. It covers a wide range of topics, including sorting, searching, graph algorithms, and dynamic programming.
“Graph Algorithms” textbook on graph algorithms that is written in a clear and concise style. It covers a wide range of topics, including graph traversal, shortest paths, and maximum flows.
“Number Theory and Cryptography” textbook on number theory and cryptography that is written in a clear and concise style. It covers a wide range of topics, including prime numbers, modular arithmetic, and elliptic curves.
“Data Structures and Algorithms in C++” textbook on data structures and algorithms that is specifically designed for students who are learning C++. It covers a wide range of topics, including arrays, linked lists, stacks, queues, trees, and graphs.
“Data Structures and Algorithms in Java” textbook on data structures and algorithms that is specifically designed for students who are learning Java. It covers a wide range of topics, including arrays, linked lists, stacks, queues, trees, and graphs.

Share

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

Similar courses

Here are nine courses similar to Discrete Structures, Data Structures, and Algorithms.
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