RailsConf 2023 - The Math Every Programmer Needs by Joël Quenneville

Learn how to tame complex programming challenges with discrete math concepts, from simplifying Boolean expressions to visualizing code dependencies, and improve your confidence and effectiveness in your work.

Key takeaways
  • The author suggests that programming is not solely a matter of writing code, but also understanding and communicating calculations.
  • De Morgan’s laws can help simplify complex Boolean expressions by converting them into more readable combinations of true and false.
  • Truth tables can be used to visualize and understand the behavior of complex conditional code.
  • Invertible operators can be used to simplify complex conditions.
  • Discrete math can help improve communication by providing a common language and tools for understanding complex code.
  • Dependency graphs can be used to visualize and understand the relationships between different parts of code.
  • Many subtasks can form cycles, making it difficult to work on them incrementally. Breaking down complex tasks into smaller, manageable parts and using dependency graphs can help.
  • Change is a constant in programming, and discrete math can help developers adapt to change and communicate more effectively.
  • Combinatorics can help developers understand how to combine different options and choices in their code.
  • Predicate logic can help developers understand and communicate complex conditions and rules.
  • Set theory can help developers understand the relationships between different parts of code and improve communication.
  • Using De Morgan’s laws, a complex conditional expression can be simplified into a more readable combination of true and false.
  • Discrete math is a grab bag of mathematical disciplines that can be applied to programming to improve understanding and communication.
  • The author suggests that understanding and applying discrete math concepts can help developers become more confident and effective in their work.
  • The field of graph theory provides a helpful tool for evaluating and understanding code, as well as for breaking down complex tasks into manageable parts.
  • The author acknowledges that some developers may not initially recognize discrete math concepts in their work, but encourages them to explore and apply these concepts to improve their work.
  • Predicate theory can help developers understand and communicate complex conditions and rules.
  • The author suggests that using discrete math concepts and tools can help developers improve their workflow and make their work more efficient.
  • The author also mentions that using discrete math concepts can help developers become more confident and effective in their work.
  • The field of combinatorics provides tools for understanding and communicating complex combinations of options and choices.