We may earn an affiliate commission when you visit our partners.
Course image
Alexander S. Kulikov, Michael Levin, and Владимир Подольский

Mathematical thinking is crucial in all areas of computer science: algorithms, bioinformatics, computer graphics, data science, machine learning, etc. In this course, we will learn the most important tools used in discrete mathematics: induction, recursion, logic, invariants, examples, optimality. We will use these tools to answer typical programming questions like: How can we be certain a solution exists? Am I sure my program computes the optimal answer? Do each of these objects meet the given requirements?

Read more

Mathematical thinking is crucial in all areas of computer science: algorithms, bioinformatics, computer graphics, data science, machine learning, etc. In this course, we will learn the most important tools used in discrete mathematics: induction, recursion, logic, invariants, examples, optimality. We will use these tools to answer typical programming questions like: How can we be certain a solution exists? Am I sure my program computes the optimal answer? Do each of these objects meet the given requirements?

In the online course, we use a try-this-before-we-explain-everything approach: you will be solving many interactive (and mobile friendly) puzzles that were carefully designed to allow you to invent many of the important ideas and concepts yourself.

Prerequisites:

1. We assume only basic math (e.g., we expect you to know what is a square or how to add fractions), common sense and curiosity.

2. Basic programming knowledge is necessary as some quizzes require programming in Python.

Enroll now

What's inside

Syllabus

Making Convincing Arguments
Why are some arguments convincing and some others are not? What makes an argument convincing? How can you establish your argument in such a way that there is no room for doubt left? How can mathematical thinking help with this? In this section, we start digging into these questions. Our goal is to learn by examples how to understand proofs, how to discover them on your own, how to explain them, and — last but not least — how to enjoy them: we will see how a small remark or a simple observation can turn a seemingly non-trivial question into an obvious one.
Read more
How to Find an Example?
How can we be certain that an object with certain requirements exist? One way to show this, is to go through all objects and check whether at least one of them meets the requirements. However, in many cases, the search space is enormous. A computer may help, but some reasoning that narrows the search space is important both for computer search and for "bare hands" work. In this module, we will learn various techniques for showing that an object exists and that an object is optimal among all other objects. As usual, we'll practice solving many interactive puzzles. We'll show also some computer programs that help us to construct an example.
Recursion and Induction
We'll discover two powerful methods of defining objects, proving concepts, and implementing programs — recursion and induction. These two methods are heavily used in discrete mathematics and computer science. In particular, you will see them frequently in algorithms — for analysing correctness and running time of algorithms as well as for implementing efficient solutions. For some computational problems (e.g., exploring networks), recursive solutions are the most natural ones. The main idea of recursion and induction is to decompose a given problem into smaller problems of the same type. Being able to see such decompositions is an important skill both in mathematics and in programming. We'll hone this skill by solving various problems together.
Logic
Mathematical logic plays a crucial and indispensable role in creating convincing arguments. We use the rules and language of mathematical logic while writing code, while reasoning and making decisions, and while using computer programs. This week we’ll learn the basics of mathematical logic, and we'll practice tricky and seemingly counterintuitive, but yet logical aspects of mathematical logic. This will help us to write readable and precise code, and to formulate our thoughts rigorously and concisely.
Invariants
"There are things that never change". Apart from being just a philosophical statement, this phrase turns out to be an important idea in discrete mathematics and computer science. A property that is preserved during a process is called an invariant. Invariants are used heavily in analyzing the behavior of algorithms, programs, and other processes. Being able to find the right invariant is an important skill that we will develop together in this module.
Solving a 15-Puzzle
In this module, we consider a well known 15-puzzle where one needs to restore order among 15 square pieces in a square box. It turns out that the behavior of this puzzle is determined by beautiful mathematics: it is solvable if and only if the corresponding permutation is even. To understand what it means and why it is true, we will learn the basic properties of even and odd permutations — an important notion in algebra and discrete mathematics. Together, we will implement a number of simple methods for working with permutations. You will then use them as building blocks to implement a program that solves any configuration of this game in blink of an eye!

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Builds a strong foundation for beginners in discrete mathematics and mathematical thinking
Taught by Alexander S. Kulikov, Michael Levin, and Vladimir Podolskiy, who are recognized for their work in discrete mathematics and computer science
Develops important tools and techniques used in computer science, including induction, recursion, logic, invariants, and optimality
Uses many interactive puzzles to allow learners to invent ideas and concepts themselves
Covers topics that are highly relevant to industry, academia, and personal growth and development
Requires basic math and curiosity as prerequisites, making it accessible to a wide range of learners

Save this course

Save Mathematical Thinking in Computer Science to your list so you can find it easily later:
Save

Reviews summary

Puzzles, proofs, and problem solving

Students say learners say that this course on Mathematical Thinking in Computer Science focuses on problem solving through interactive puzzles. It begins with basic mathematical concepts and builds up to advanced topics. The course is largely positive, with many students finding it engaging and fun. However, some students found the course to be difficult and wished for more in-depth explanations and practical examples.
This course features a variety of engaging assignments, including puzzles and programming challenges. Many students found these assignments to be fun and rewarding, while others found them to be difficult and frustrating.
"Great course with some challenging assignments to complete."
"The course was great i just faced some difficulty in writting python codes"
"This course is good for beginner.rather than being complicated it will change the way you think."
The course instructors do a good job of explaining the mathematical concepts in a clear and concise manner. Students generally found the explanations to be helpful and easy to follow.
"Excellent explanation by professors. The problems were worth solving and I have enjoyed a lot in the process."
"This course was really interesting , i enjoyed it a lot."
"This course has made me appreciate discrete mathematics than ever before."
One of the most unique aspects of this course is its use of interactive puzzles to teach mathematical concepts. Students generally found these puzzles to be engaging and an effective way to learn.
"This is an outstanding and engaging course. I don't get the bad reviews."
"The use of interactive puzzle was really helpful and the course was pretty interesting."
"Really liked the course, the Puzzles are very intriguing and fun! Thank you"
Some students felt that the course lacked practical examples of how the mathematical concepts could be applied to computer science. This made it difficult for some students to see the relevance of the material.
"Despite this new area to explore, the course does not introduce ways of applying these algorithms."
"lacks Mathematical proofs and less examples in real world."
"I wish it went a bit more in-depth. I also wish there were more examples to practice. Overall, however, it was a good course, I have learned a lot."
Some students found the course to be difficult, especially in the later weeks. This is likely due to the fact that the course covers a wide range of advanced mathematical topics. Students who are not comfortable with math or programming may find the course to be challenging.
"Hard Some interesting ideas, but course delivery and content needs a lot of work. "
"A lot of sections were not explained really well. I had a hard time following the concepts."
"Overall the course was great! But, last section on permutations could've been explained better."

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 Mathematical Thinking in Computer Science with these activities:
Review basic programming concepts
Refreshing basic programming concepts ensures a strong foundation for understanding algorithms and implementing mathematical solutions.
Browse courses on Programming
Show steps
  • Review basic programming syntax and data types.
  • Practice writing simple programs to implement mathematical concepts.
  • Complete online coding challenges or exercises.
  • Seek clarification if needed through discussion forums or Q&A platforms.
Review fundamental mathematical concepts
Refreshing fundamental mathematical concepts ensures a solid foundation for understanding the course material and applying it to real-world problems.
Browse courses on Logic
Show steps
  • Review basic concepts in logic, set theory, and number theory.
  • Complete practice problems and exercises to reinforce understanding.
  • Seek clarification if needed through discussion forums or Q&A platforms.
  • Identify areas where further clarification or practice is needed.
Organize and review course materials
Regularly reviewing and organizing your materials helps reinforce learning, identify gaps, and prepare for assessments.
Show steps
  • Gather all course materials, including notes, assignments, and readings.
  • Organize materials logically, e.g., by topic or week.
  • Review materials regularly, focusing on understanding rather than memorization.
  • Identify areas where further clarification or practice is needed.
  • Seek support from the instructor or peers if needed.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Participate in online discussion forums
Engaging in discussions fosters critical thinking, improves communication skills, and exposes you to diverse perspectives on mathematical concepts.
Browse courses on Logic
Show steps
  • Read and understand the course materials related to the topic.
  • Join the discussion forum and introduce yourself.
  • Participate in discussions by asking questions, sharing insights, and providing constructive feedback.
  • Synthesize your learnings from the discussions.
Follow online tutorials on mathematical logic
Following tutorials provides structured guidance and additional practice to strengthen your understanding of mathematical logic.
Browse courses on Logic
Show steps
  • Search for reputable online tutorials on mathematical logic.
  • Select a tutorial that aligns with your level and interests.
  • Follow the tutorial step-by-step and take notes.
  • Complete the exercises and quizzes provided in the tutorial.
  • Seek clarification if needed through discussion forums or Q&A platforms.
Solve recursion puzzles
Solving puzzles helps develop an intuitive understanding of when and how to apply recursion and induction.
Browse courses on Recursion
Show steps
  • Identify the recursive or inductive structure of the problem.
  • Break the problem down into smaller subproblems.
  • Define the base case(s).
  • Write the recursive or inductive solution.
  • Test your solution on various inputs.
Create a visual representation of an algorithm
Visualizing algorithms helps you understand their structure and flow, and can make complex concepts more accessible.
Browse courses on Algorithms
Show steps
  • Choose an algorithm to represent.
  • Design a visual representation, e.g., a flowchart, diagram, or animation.
  • Implement the algorithm in your chosen visual representation.
  • Test and refine your visual representation.
  • Share your visual representation with others.
Develop a proof by induction
Creating your own proof by induction demonstrates a deep understanding of the concept and strengthens your ability to construct rigorous arguments.
Browse courses on Induction
Show steps
  • State the proposition you want to prove.
  • Prove the base case.
  • Write the inductive step.
  • Prove the inductive step.
  • Conclude the proof.

Career center

Learners who complete Mathematical Thinking in Computer Science will develop knowledge and skills that may be useful to these careers:
Data Scientist
Data Scientists use mathematical and statistical methods to extract insights from data. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying data science techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in data science.
Software Engineer
Software Engineers develop, maintain, and improve computer software. Mathematical thinking is critical in software engineering, as it allows engineers to design and implement efficient and effective solutions to complex problems. This course provides a solid foundation in mathematical thinking, which can be applied to a wide range of software engineering tasks, such as algorithm design, data analysis, and software testing.
Computer Scientist
Computer Scientists research and develop new computer technologies. Mathematical thinking is essential in computer science, as it allows scientists to design and implement new algorithms and data structures. This course provides a strong foundation in mathematical thinking, which can be applied to a wide range of computer science research topics, such as artificial intelligence, machine learning, and computer graphics.
Operations Research Analyst
Operations Research Analysts use mathematical and statistical methods to improve the efficiency of organizations. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying operations research techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in operations research.
Quantitative Analyst
Quantitative Analysts use mathematical and statistical methods to analyze financial data. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying quantitative analysis techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in quantitative analysis.
Actuary
Actuaries use mathematical and statistical methods to assess and manage risk. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying actuarial techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in actuarial science.
Biostatistician
Biostatisticians use mathematical and statistical methods to analyze biological data. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying biostatistical techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in biostatistics.
Statistician
Statisticians use mathematical and statistical methods to analyze data. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying statistical techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in statistics.
Market Research Analyst
Market Research Analysts use mathematical and statistical methods to analyze market data. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying market research techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in market research.
Economist
Economists use mathematical and statistical methods to analyze economic data. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying economic techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in economics.
Financial Analyst
Financial Analysts use mathematical and statistical methods to analyze financial data. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying financial analysis techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in financial analysis.
Consultant
Consultants use mathematical and statistical methods to solve problems for clients. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying consulting techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in consulting.
Product Manager
Product Managers use mathematical and statistical methods to analyze product data. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying product management techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in product management.
Operations Manager
Operations Managers use mathematical and statistical methods to improve the efficiency of organizations. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying operations management techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in operations management.
Teacher
Teachers use mathematical and statistical methods to teach students. This course provides a strong foundation in mathematical thinking, which is essential for understanding and applying teaching techniques. The course covers topics such as induction, recursion, logic, invariants, examples, and optimality, which are all essential for success in teaching.

Reading list

We've selected 13 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 Mathematical Thinking in Computer Science.
Provides a comprehensive introduction to discrete mathematics, covering topics such as logic, set theory, combinatorics, and graph theory. It classic textbook that is widely used in undergraduate mathematics and computer science courses.
Provides a rigorous and accessible introduction to discrete mathematics, with a focus on applications in computer science. It covers topics such as logic, set theory, combinatorics, and graph theory.
Provides a Pulitzer Prize-winning exploration of the relationship between mathematics, logic, music, and art. It classic work that is widely read by students, scholars, and general readers.
Provides a personal and philosophical exploration of the nature of mathematics. It classic work that is widely read by students, scholars, and general readers.
Provides a collection of essays on the beauty and power of mathematics. It classic work that is widely read by students, scholars, and general readers.
Provides a clear and concise introduction to mathematical thinking, covering topics such as problem solving, logic, and proof. It popular textbook that is used in undergraduate courses in mathematics, computer science, and other disciplines.
Provides a step-by-step guide to proving mathematical theorems, covering topics such as logic, set theory, and proof techniques. It popular textbook that is used in undergraduate courses in mathematics, computer science, and other disciplines.
Provides a collection of entertaining and thought-provoking mathematical puzzles and curiosities. It popular resource that is used by students, teachers, and mathematicians.
Provides a lucid and engaging introduction to mathematics for non-mathematicians, covering topics such as number theory, algebra, and calculus. It popular resource that is used by students, teachers, and general readers.
Provides a clear and concise introduction to mathematical logic, covering topics such as propositional logic, predicate logic, and first-order logic. It popular textbook that is used in undergraduate and graduate courses in mathematics, computer science, and philosophy.
Provides a concise and engaging introduction to logic and discrete mathematics, covering topics such as propositional logic, predicate logic, set theory, and combinatorics. It popular textbook that is used in undergraduate courses in mathematics, computer science, and philosophy.
Provides a comprehensive introduction to discrete and combinatorial mathematics, covering topics such as logic, set theory, combinatorics, and graph theory. It popular textbook that is used in undergraduate courses in mathematics, computer science, and engineering.

Share

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

Similar courses

Here are nine courses similar to Mathematical Thinking in Computer Science.
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