Answers.Body: <p>For this purpose I'd recommend the combinatorics chapters of <a href="https://courses.csail.mit.edu/6.042/spring18/mcs.pdf" rel="nofollow noreferrer">Lehman, Leighton, Meyers</a>. Yes, it's nominally a postgrad course, but it doesn't really show in the prerequisite knowledge assumed.</p>
  <p>As an aside: claiming that combinatorics don't matter in SE work is disingenuous.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2023-02-15T11:38:31.027Z
Answers.LastActivityDate: 2023-02-15T11:38:31.027Z
Answers.UserDisplayName: Kai
Answers.Body: <blockquote>
  <p>[From your comment] P.S need such combinatorics after which I can understand the course of data structures and algorithms.</p>
  </blockquote>
  <p>Combinatorics doesn't factor into data structures and algorithms in this way. If your goal is to understand data structures and algorithms, combinatorics is an irrelevant topic.</p>
  <p>Combinatorics is also quite vague, as this can effectively include the integer number sequence, which is effectively &quot;knowing how to count&quot;.<br />
  While software development will generally expect you to count numbers from time to time, there's a vast difference between counting and the subjects that a book on combinatorics will delve into. Again, the latter is irrelevant to get a basic understanding of data structures and algorithms.</p>
  <blockquote>
  <p>Is there a good book for combinatorics for programmers?</p>
  </blockquote>
  <p>As far as I'm aware and my research could uncover, there is no such book tailored to software engineers. The field of combinatorics is not part of the field of software engineering. Combinatorics is a part of maths, not CS, and therefore is explained in a mathematical context.</p>
  <p>Note that it is true that early examples in CS training courses often use simple maths. However, this is done purely because students will generally understand the simple maths and therefore are able to fully focus on the programming challenge without being distracted by the mathematical operations in the example.</p>
  <p>If you are able to count and perform elementary operations (+,-,*,/) then you have enough knowledge to learn to program. Additional mathematical operations may be a nice-to-have for more advanced examples, but they don't require in-depth mathematical skills. If you passed high school maths (based on my experience, you don't need anything above the math 14-year-olds are taught in school), then you are as prepared as you need to be.</p>
  <p><strong>Obvious caveat</strong>: Unless your intention is to delve into programming specifically to tackle more advanced mathematical calculations. But that's not what a learner should be focusing on.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-11-11T00:02:34.837Z
Answers.LastActivityDate: 2021-05-25T08:35:36.600Z
Answers.LastEditDate: 2021-05-25T08:35:36.600Z
Answers.UserDisplayName: Flater
Body: <p>The book should be easy to read, or at least average. The level for reading such a book is the MATH and CS school curriculum. It should also be expanded on topics related to CS, and also be narrated in a light manner. It should be kind of in a intro tutorial before starting a middle combinatorics.</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-04-04T21:05:18.453Z
Comments.Text: Secondary school means students up to about 17 years old. College and University in the US are the same thing at the undergraduate level. And there are a few top research universities called colleges: e.g. Dartmouth College. In secondary school there is no specialization, generally, and students study pretty much everything. In "college" there is about a 30-40 percent specialization, but many subjects studied. Only in graduate school do you see real specialization in one field.
Comments.UserDisplayName: Buffy
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-08-04T10:38:24.717Z
Comments.Text: Of interest:  [The Stony Brook Algorithm Repository](https://algorist.com/algorist.html) Combinatorial Problems [Recommended Books](https://algorist.com/sections/Combinatorial_Problems.html)
Comments.UserDisplayName: Guy Coder
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-21T22:25:16.523Z
Comments.Text: Considering the range of material included in the term "combinatorics" perhaps you could reduce the target to something which does not include the entire field of mathematics. Otherwise it just a fancy word for "counting".
Comments.UserDisplayName: Gypsy Spellweaver
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-22T00:00:26.200Z
Comments.Text: Also look at books named "Finite Mathematics". And do you mean secondary school or university?
Comments.UserDisplayName: Buffy
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-22T03:52:35.187Z
Comments.Text: P.S need such combinatorics after which I can understand the course of data structures and algorithms. Also understand the course of computing algorithms.
Comments.UserDisplayName: Boujozo
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-22T03:58:01.687Z
Comments.Text: Can I tell you what the differences between the first college graduate and the last grade of school? I live in Russia, and here the education system is arranged differently. I heard that in the USA after school most go to college, and some go to university. But in fact, your college is our university, and even then our quality will be lower. This is if we compared.
Comments.UserDisplayName: Boujozo
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-22T10:30:15.767Z
Comments.Text: If you want to make a permanent addition to the site (that would also help many of us to answer this question and future questions like it), any contributions [here](https://cseducators.meta.stackexchange.com/questions/204/what-are-common-terms-used-in-education-in-different-countries) would be most welcome.
Comments.UserDisplayName: Ben I.
Tags: <self-learning><resource-request><discrete-math>
Title: Is there a good book for combinatorics for programmers?
ThreadText: # Is there a good book for combinatorics for programmers?
  
  (Asked by: username_0 on 2019-10-21)
  
  The book should be easy to read, or at least average. The level for reading such a book is the MATH and CS school curriculum. It should also be expanded on topics related to CS, and also be narrated in a light manner. It should be kind of in a intro tutorial before starting a middle combinatorics.
  
  **Tags:** self-learning, resource-request, discrete-math
  
  > **Comments:**
  > **username_3**: Considering the range of material included in the term "combinatorics" perhaps you could reduce the target to something which does not include the entire field of mathematics. Otherwise it just a fancy word for "counting".  
  > **username_1**: Also look at books named "Finite Mathematics". And do you mean secondary school or university?  
  > **username_0**: P.S need such combinatorics after which I can understand the course of data structures and algorithms. Also understand the course of computing algorithms.  
  > **username_0**: Can I tell you what the differences between the first college graduate and the last grade of school? I live in Russia, and here the education system is arranged differently. I heard that in the USA after school most go to college, and some go to university. But in fact, your college is our university, and even then our quality will be lower. This is if we compared.  
  > **username_4**: If you want to make a permanent addition to the site (that would also help many of us to answer this question and future questions like it), any contributions [here](https://cseducators.meta.stackexchange.com/questions/204/what-are-common-terms-used-in-education-in-different-countries) would be most welcome.  
  > **username_1**: Secondary school means students up to about 17 years old. College and University in the US are the same thing at the undergraduate level. And there are a few top research universities called colleges: e.g. Dartmouth College. In secondary school there is no specialization, generally, and students study pretty much everything. In "college" there is about a 30-40 percent specialization, but many subjects studied. Only in graduate school do you see real specialization in one field.  
  > **username_2**: Of interest:  [The Stony Brook Algorithm Repository](https://algorist.com/algorist.html) Combinatorial Problems [Recommended Books](https://algorist.com/sections/Combinatorial_Problems.html)  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_6 on 2019-11-11. Score: 2
  
  > [From your comment] P.S need such combinatorics after which I can understand the course of data structures and algorithms.
  
  Combinatorics doesn't factor into data structures and algorithms in this way. If your goal is to understand data structures and algorithms, combinatorics is an irrelevant topic.
  
  Combinatorics is also quite vague, as this can effectively include the integer number sequence, which is effectively "knowing how to count".  
  While software development will generally expect you to count numbers from time to time, there's a vast difference between counting and the subjects that a book on combinatorics will delve into. Again, the latter is irrelevant to get a basic understanding of data structures and algorithms.
  
  > Is there a good book for combinatorics for programmers?
  
  As far as I'm aware and my research could uncover, there is no such book tailored to software engineers. The field of combinatorics is not part of the field of software engineering. Combinatorics is a part of maths, not CS, and therefore is explained in a mathematical context.
  
  Note that it is true that early examples in CS training courses often use simple maths. However, this is done purely because students will generally understand the simple maths and therefore are able to fully focus on the programming challenge without being distracted by the mathematical operations in the example.
  
  If you are able to count and perform elementary operations (+,-,\*,/) then you have enough knowledge to learn to program. Additional mathematical operations may be a nice-to-have for more advanced examples, but they don't require in-depth mathematical skills. If you passed high school maths (based on my experience, you don't need anything above the math 14-year-olds are taught in school), then you are as prepared as you need to be.
  
  **Obvious caveat**: Unless your intention is to delve into programming specifically to tackle more advanced mathematical calculations. But that's not what a learner should be focusing on.
  
  
  ---
  
  ### Answer by username_5 on 2023-02-15. Score: 0
  
  For this purpose I'd recommend the combinatorics chapters of [Lehman, Leighton, Meyers](https://courses.csail.mit.edu/6.042/spring18/mcs.pdf). Yes, it's nominally a postgrad course, but it doesn't really show in the prerequisite knowledge assumed.
  
  As an aside: claiming that combinatorics don't matter in SE work is disingenuous.
  
  
  ---
  
  