Answers.Body: <p><strike>If your students were a bit older, I'd be more comfortable with the following, but suggest it anyway.</strike></p>
  
  <p>There is an advantage for a student to know that the concepts exist independent of any notation and that historically  notations have differed based on use and context. </p>
  
  <p>I would, myself, provide them with a handout giving names to the concepts and various notations used for each. Then, I'd use the various symbols as naturally as possible, responding to the inevitable questions. </p>
  
  <p>The only caveat would be that you don't mix the different systems in any given lecture/conversation. You should also suggest that the students be consistent as well. </p>
  
  <p>The rationale here is that students will likely see different symbols sooner rather than later if they do any reading or research outside your instruction. It is better that they have some preparation and at least a hint that the terminology isn't entirely consistent or standardized. </p>
  
  <p>Some of the terminology, by the way, such as + for "or" is actually tied to the concepts in interesting ways. For example, the similar shape of ∧ and ∩ help students understand the relationship between logic and set theory. Some of the symbols, on the other hand, were chosen for no better reason than that they exist on common input devices such as keyboards. </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-11T21:37:47.840Z
Answers.Text: Middle school was when I was introduced to multiple notations for things like multiplication and division.  I don't recall anyone in my class having trouble with the concept.
Answers.UserDisplayName: Mark
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-12T13:36:37.660Z
Answers.Text: I've never taught that age level, nor was I a particularly good student then. Hence my hesitation. Thanks for clarifying.
Answers.UserDisplayName: Buffy
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-11T16:28:13.457Z
Answers.LastActivityDate: 2018-02-12T14:25:49.427Z
Answers.LastEditDate: 2018-02-12T14:25:49.427Z
Answers.UserDisplayName: Buffy
Answers.Body: <p>The two systems have different value.</p>
  <h1>For <span class="math-container">$\land$</span>, <span class="math-container">$\lor$</span>, <span class="math-container">$\lnot$</span></h1>
  <ul>
  <li><p>It is good in that you can see its relationship with set theory.
  ∧, ∨,&lt;,&gt; vs ∩, ∪, ⊂, ⊃</p>
  </li>
  <li><p>The not symbol is easier to type that the bar from the other system.</p>
  </li>
  </ul>
  <h1>For <span class="math-container">$\cdot$</span>, <span class="math-container">$+$</span>, <span class="math-container">$\bar{}$</span></h1>
  <p>It is easier to learn. Boolean algebra is algebra (Bidmas and all that).</p>
  <p>For the most part you can manipulate the algebra using rules that you learnt in maths class. Except that <span class="math-container">$2=1$</span>, that therefore <span class="math-container">$2+1=1+1=2=1$</span> etc.</p>
  <p>Therefore</p>
  <ul>
  <li><span class="math-container">$1+1=1$</span></li>
  <li><span class="math-container">$a·a = a² = a¹ = a$</span></li>
  </ul>
  <p>Most of the rules can be worked out from <span class="math-container">$1=2$</span>, though it is worth also learning DeMorgan theorem, and learning to derive all of the rules from this one basic rule and regular algebra.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-11T19:46:10.250Z
Answers.Text: Be a bit careful with the second concept, though, if the students ever get near the C programming language, where "true" - "true"  and "true" + "true" can be true or false. i.e. both 1 and -1 are "true", as is 2. Only 0 is false.
Answers.UserDisplayName: Buffy
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-12T04:42:10.313Z
Answers.Text: @Buffy I don't think even a first-year student would try to add boolean values in C instead of using || (or even cascaded if statements).
Answers.UserDisplayName: Criticize SE actions means ban
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-12T11:04:47.400Z
Answers.Text: @Buffy you can do it in C, but I would not recommend it. You have to normalize after every operation. Same as when doing it by hand. `int booleanNormalise( int a ) {return !!a; }`. Works on most Cs, not sure if guaranteed to work. It is a long time since I was a C language lawyer.
Answers.UserDisplayName: ctrl-alt-delor
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-19T05:54:50.407Z
Answers.Text: @immibis You would be surprised what people will do. First year students and veteran programmers alike. I have traced many bugs to that very concept: using the addition operator in Boolean logic because they learned Boolean algebra so well. I've even seen it done with `tinyint` in MySQL.
Answers.UserDisplayName: Gypsy Spellweaver
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-19T05:58:45.427Z
Answers.Text: @ctrl-alt-delor Rather than create a function to make it look legitimate, why not not not inline, and admit that it's a gludge? Shows exactly what's being done, without having to make a function, (probably will be optimized out during compilation anyway) and having to remember what `booleanNormalize` does every time it's encountered. Save several _bytes_ of file space as well.
Answers.UserDisplayName: Gypsy Spellweaver
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-19T10:51:14.837Z
Answers.Text: @GypsySpellweaver same reason as always. Because it documents what the code does. Consider the alternative: You have to normalize after every operation. Same as when doing it by hand. To normalize you can do `!!a` where `a` is an integer, that represents a boolean value.
Answers.UserDisplayName: ctrl-alt-delor
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-11T17:03:01.563Z
Answers.LastActivityDate: 2018-02-11T17:03:01.563Z
Answers.LastEditDate: 2020-06-18T08:36:57.023Z
Answers.UserDisplayName: ctrl-alt-delor
Answers.Body: <p>As per <a href="https://cseducators.stackexchange.com/a/4326/27">ctrl-alt-delor</a>'s response, I use different systems with different groups. It has been my experience that most of my students use <em>no</em> formal system of Boolean Algebra prior to beginning studies in CS, so I will typically start with whatever programming language they have the most experience with.  </p>
  
  <p>In my program they traditionally use Java.  (Here's a hint from the trenches: while Java does indeed use <code>^</code> for $\oplus$, most students are unaware of this operator or its function.  You may find that there are fewer translation issues for the students if you use <code>!=</code>, which accomplishes the same thing in a purely Boolean world.  This gives you the side benefit of being able to describe $\overline{A \oplus B}$ as <code>A == B</code>, which is instantly and intuitively understandable.)</p>
  
  <p>No matter which system you use, it is worth it to give all of the symbols once when doing the truth tables. (I also include the gates when I do this). This way, they will at least see the systems once, and if you accidentally write a symbol from the wrong system on the board while you are talking, they will not become nearly as confused. </p>
  
  <p>You may still have to correct what you wrote for the sake of consistency, but at least they will know that there are additional notational systems in the first place, so they'll see your correction as a notational translation instead of something more perplexing.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-17T10:29:38.067Z
Answers.Text: `^` is not same as `"=`. The first is bitwise, and works on `int`s. The second works on `bool`s (and is only true/false).
Answers.UserDisplayName: ctrl-alt-delor
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-17T14:39:17.697Z
Answers.Text: @ctrl-alt-delor you missed the "in a purely boolean world" part, which is the context in which the statement holds true.  It's a way of helping them to intuitively understand the operation. When we start doing this with logic gates, the difficult transition becomes understanding that the signals are themselves bits, not the action of the XOR gate. That part remains intuitive.
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-17T17:23:30.690Z
Answers.Text: Oh I get it. For `bool` type, that is single bit, `!=` and `^` are the same. (Oh and I just noticed my typo in the comment above.)
Answers.UserDisplayName: ctrl-alt-delor
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-19T06:13:10.453Z
Answers.Text: @ctrl-alt-delor Your Dvorak keyboard does make for interesting typos. :) Always a joy to translate the puzzle to see what you _meant_ to type.
Answers.UserDisplayName: Gypsy Spellweaver
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-11T18:14:03.203Z
Answers.LastActivityDate: 2018-02-17T10:26:38.033Z
Answers.LastEditDate: 2018-02-17T10:26:38.033Z
Answers.UserDisplayName: Ben I.
Answers.Body: <p>On a very personal note, I prefer</p>
  
  <blockquote>
    <p>($\cdot$), ($+$), ($\bar{}$)</p>
  </blockquote>
  
  <p>as per  <a href="https://cseducators.stackexchange.com/a/4326/27/">ctrl-alt-delor</a>'s <strong>second point</strong>. </p>
  
  <p>It's easier to understand because the notations which they represent are also used in Trigonometry. So the students can easily relate the function of the symbols.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-11-26T06:34:16.627Z
Answers.Text: I like these too but they are harder to work with on the modern web/computer based learning systems.
Answers.UserDisplayName: markshancock
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2018-02-12T09:29:45.527Z
Answers.LastActivityDate: 2018-02-13T01:47:44.360Z
Answers.LastEditDate: 2018-02-13T01:47:44.360Z
Answers.UserDisplayName: K-devlife10
Answers.Body: <p>I am a University EE Instructor and this year is my first year to teach DIGITAL I (which include Boolean Algebra).  In the course I primarily use ⋅, +, ¯ but the challenge with these is that they require special characters that some systems (like Canvas) do not support.  Also, for my slides and exams I have to use the equation editor and teaching that to the students as well is an extra barrier.  Using symbols that are on a keyboard make things a lot easier for me and the students.  For that reason I have started to prefer + for OR, ' for NOT and adjacency for AND.
  Ex: DeMorgan's First Theorem is (A+B)'=A'B'</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-11-22T13:07:40.780Z
Answers.Text: How do such systems indicate xor, implies, and iff?
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-11-26T06:30:53.460Z
Answers.Text: @BenI. Boolean algebra is really only three operations: or, and, and not.  The other operations are beyond that.  If you want a comprehensive text-based language you can use VHDL but it is pretty verbose.
Answers.UserDisplayName: markshancock
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-11-26T06:58:53.163Z
Answers.Text: I guess I want to gently push back on your statement about what boolean algebra is, since that is neither the historical origins, the mathematical basis, nor the minimal number of required operations for boolean algebra, so the statement seems arbitrary at best.  After all, why draw the line there in particular?  You could as well say that boolean algebra is just one operation (NAND or NOR, pick your poison).  While XOR is surely not strictly required, the translation to actual digital logic feels like it would be laborious without it.
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-12-01T17:21:51.867Z
Answers.Text: @BenI. I agree my statement was a bit stronger than it should have been but or, and, and not are pretty core to Boolean Algebra as they are the most common operational basis set (a single closed set of operations which can used to create all possible Boolean operations).  Per Wikipedia "the main operations of Boolean algebra are the conjunction (and) denoted as ∧, the disjunction (or) denoted as ∨, and the negation (not) denoted as ¬".  I agree the the singe operations of nand and nor also can suffice as an operational basis but they are rarely used notationally.
Answers.UserDisplayName: markshancock
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-12-01T17:32:53.187Z
Answers.Text: @BenI. Regarding XOR, it does have a common graphical symbol but no textural one that I am aware of (other than using VHDL).  Also, it does not belong to any traditional operational basis set (mostly because it is not orthogonal to any other operation) and it does not play well with Boolean minimization rules (you have to convert it to ands and ors first).
Answers.UserDisplayName: markshancock
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-11-21T08:04:57.123Z
Answers.LastActivityDate: 2021-11-21T08:04:57.123Z
Answers.UserDisplayName: markshancock
Body: <p>I'm a retired college teacher now teaching things like Boolean logic to students in several middle schools (ages: 11-14).  I taught that module for the first time last week and discovered to my chagrin that I had mixed two different notations.  I'm teaching specifically logic expressions, with very little manipulation using the identities of Boolean algebra.</p>
  
  <p>I started out with the standard notation of logic: ∧, ∨, and ¬ but used center-dot, plus, and overbar by accident in a table of identities.  I worry that using + for inclusive disjunction will confuse students, and I know that implicit multiplication, <em>i.e.</em> AB for A∧B is confusing.</p>
  
  <p>I hesitate to use the notation of programming because it seems Java and Python are equally popular, but with very different notations.  Java's use of ^ for exclusive disjunction further muddles things.</p>
  
  <p>Does anyone know of research or have practical advice on what notation I should use to teach these concepts?</p>
  
  <p><strong>Edit:</strong> OK, I've accepted an answer, and decided to use the engineering notation, but to present a table comparing notations near the end of the module.  I chose end rather than beginning because I want the students familiar with one notation before I present the others. I'm going to start <a href="https://cseducators.stackexchange.com/q/4346/3524">another question</a> about how to explain + as OR.  </p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2018-02-12T06:02:52.923Z
Comments.Text: As an engineer, I like $\cdot, +, \oplus, \overline{A}$, but this is because it what I learned first. Also, the associative, distributive laws from multiplication and addition hold, so that intuition carries over. Using programming notation (C, Java, Verilog, for example) you need to distinguish between bitwise and logical operators, which adds unnecessary confusion
Comments.UserDisplayName: copper.hat
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2018-02-24T01:52:36.023Z
Comments.Text: Good grief teach them that names are arbitrary.
Comments.UserDisplayName: philipxy
Tags: <boolean-algebra>
Title: What Notation for Teaching Boolean Logic?
ThreadText: # What Notation for Teaching Boolean Logic?
  
  (Asked by: username_0 on 2018-02-11)
  
  I'm a retired college teacher now teaching things like Boolean logic to students in several middle schools (ages: 11-14). I taught that module for the first time last week and discovered to my chagrin that I had mixed two different notations. I'm teaching specifically logic expressions, with very little manipulation using the identities of Boolean algebra.
  
  I started out with the standard notation of logic: ∧, ∨, and ¬ but used center-dot, plus, and overbar by accident in a table of identities. I worry that using + for inclusive disjunction will confuse students, and I know that implicit multiplication, *i.e.* AB for A∧B is confusing.
  
  I hesitate to use the notation of programming because it seems Java and Python are equally popular, but with very different notations. Java's use of ^ for exclusive disjunction further muddles things.
  
  Does anyone know of research or have practical advice on what notation I should use to teach these concepts?
  
  **Edit:** OK, I've accepted an answer, and decided to use the engineering notation, but to present a table comparing notations near the end of the module. I chose end rather than beginning because I want the students familiar with one notation before I present the others. I'm going to start [another question](https://cseducators.stackexchange.com/q/4346/3524) about how to explain + as OR.
  
  **Tags:** boolean-algebra
  
  > **Comments:**
  > **username_1**: As an engineer, I like $\cdot, +, \oplus, \overline{A}$, but this is because it what I learned first. Also, the associative, distributive laws from multiplication and addition hold, so that intuition carries over. Using programming notation (C, Java, Verilog, for example) you need to distinguish between bitwise and logical operators, which adds unnecessary confusion  
  > **username_2**: Good grief teach them that names are arbitrary.  
  
  ---
  
  ## 5 answers
  
  ### Answer by username_3 on 2018-02-11. Score: 4 | Accepted answer
  
  If your students were a bit older, I'd be more comfortable with the following, but suggest it anyway.
  
  There is an advantage for a student to know that the concepts exist independent of any notation and that historically notations have differed based on use and context.
  
  I would, myself, provide them with a handout giving names to the concepts and various notations used for each. Then, I'd use the various symbols as naturally as possible, responding to the inevitable questions.
  
  The only caveat would be that you don't mix the different systems in any given lecture/conversation. You should also suggest that the students be consistent as well.
  
  The rationale here is that students will likely see different symbols sooner rather than later if they do any reading or research outside your instruction. It is better that they have some preparation and at least a hint that the terminology isn't entirely consistent or standardized.
  
  Some of the terminology, by the way, such as + for "or" is actually tied to the concepts in interesting ways. For example, the similar shape of ∧ and ∩ help students understand the relationship between logic and set theory. Some of the symbols, on the other hand, were chosen for no better reason than that they exist on common input devices such as keyboards.
  
  > **Comments:**
  > **username_4**: Middle school was when I was introduced to multiple notations for things like multiplication and division.  I don't recall anyone in my class having trouble with the concept.  
  > **username_3**: I've never taught that age level, nor was I a particularly good student then. Hence my hesitation. Thanks for clarifying.  
  
  ---
  
  ### Answer by username_8 on 2018-02-11. Score: 4
  
  As per [username_5](https://cseducators.stackexchange.com/a/4326/27)'s response, I use different systems with different groups. It has been my experience that most of my students use *no* formal system of Boolean Algebra prior to beginning studies in CS, so I will typically start with whatever programming language they have the most experience with.
  
  In my program they traditionally use Java. (Here's a hint from the trenches: while Java does indeed use `^` for $\oplus$, most students are unaware of this operator or its function. You may find that there are fewer translation issues for the students if you use `!=`, which accomplishes the same thing in a purely Boolean world. This gives you the side benefit of being able to describe $\overline{A \oplus B}$ as `A == B`, which is instantly and intuitively understandable.)
  
  No matter which system you use, it is worth it to give all of the symbols once when doing the truth tables. (I also include the gates when I do this). This way, they will at least see the systems once, and if you accidentally write a symbol from the wrong system on the board while you are talking, they will not become nearly as confused.
  
  You may still have to correct what you wrote for the sake of consistency, but at least they will know that there are additional notational systems in the first place, so they'll see your correction as a notational translation instead of something more perplexing.
  
  > **Comments:**
  > **username_5**: `^` is not same as `"=`. The first is bitwise, and works on `int`s. The second works on `bool`s (and is only true/false).  
  > **username_8**: @username_5 you missed the "in a purely boolean world" part, which is the context in which the statement holds true.  It's a way of helping them to intuitively understand the operation. When we start doing this with logic gates, the difficult transition becomes understanding that the signals are themselves bits, not the action of the XOR gate. That part remains intuitive.  
  > **username_5**: Oh I get it. For `bool` type, that is single bit, `!=` and `^` are the same. (Oh and I just noticed my typo in the comment above.)  
  > **username_7**: @username_5 Your Dvorak keyboard does make for interesting typos. :) Always a joy to translate the puzzle to see what you _meant_ to type.  
  
  ---
  
  ### Answer by username_5 on 2018-02-11. Score: 3
  
  The two systems have different value.
  
  # For $\land$, $\lor$, $\lnot$
  
  * It is good in that you can see its relationship with set theory.
    ∧, ∨,<,> vs ∩, ∪, ⊂, ⊃
  * The not symbol is easier to type that the bar from the other system.
  
  # For $\cdot$, $+$, $\bar{}$
  
  It is easier to learn. Boolean algebra is algebra (Bidmas and all that).
  
  For the most part you can manipulate the algebra using rules that you learnt in maths class. Except that $2=1$, that therefore $2+1=1+1=2=1$ etc.
  
  Therefore
  
  * $1+1=1$
  * $a·a = a² = a¹ = a$
  
  Most of the rules can be worked out from $1=2$, though it is worth also learning DeMorgan theorem, and learning to derive all of the rules from this one basic rule and regular algebra.
  
  > **Comments:**
  > **username_3**: Be a bit careful with the second concept, though, if the students ever get near the C programming language, where "true" - "true"  and "true" + "true" can be true or false. i.e. both 1 and -1 are "true", as is 2. Only 0 is false.  
  > **username_6**: @username_3 I don't think even a first-year student would try to add boolean values in C instead of using || (or even cascaded if statements).  
  > **username_5**: @username_3 you can do it in C, but I would not recommend it. You have to normalize after every operation. Same as when doing it by hand. `int booleanNormalise( int a ) {return !!a; }`. Works on most Cs, not sure if guaranteed to work. It is a long time since I was a C language lawyer.  
  > **username_7**: @immibis You would be surprised what people will do. First year students and veteran programmers alike. I have traced many bugs to that very concept: using the addition operator in Boolean logic because they learned Boolean algebra so well. I've even seen it done with `tinyint` in MySQL.  
  > **username_7**: @username_5 Rather than create a function to make it look legitimate, why not not not inline, and admit that it's a gludge? Shows exactly what's being done, without having to make a function, (probably will be optimized out during compilation anyway) and having to remember what `booleanNormalize` does every time it's encountered. Save several _bytes_ of file space as well.  
  > **username_5**: @username_7 same reason as always. Because it documents what the code does. Consider the alternative: You have to normalize after every operation. Same as when doing it by hand. To normalize you can do `!!a` where `a` is an integer, that represents a boolean value.  
  
  ---
  
  ### Answer by username_9 on 2018-02-12. Score: 1
  
  On a very personal note, I prefer
  
  > ($\cdot$), ($+$), ($\bar{}$)
  
  as per [username_5](https://cseducators.stackexchange.com/a/4326/27/)'s **second point**.
  
  It's easier to understand because the notations which they represent are also used in Trigonometry. So the students can easily relate the function of the symbols.
  
  > **Comments:**
  > **username_10**: I like these too but they are harder to work with on the modern web/computer based learning systems.  
  
  ---
  
  ### Answer by username_10 on 2021-11-21. Score: 1
  
  I am a University EE Instructor and this year is my first year to teach DIGITAL I (which include Boolean Algebra). In the course I primarily use ⋅, +, ¯ but the challenge with these is that they require special characters that some systems (like Canvas) do not support. Also, for my slides and exams I have to use the equation editor and teaching that to the students as well is an extra barrier. Using symbols that are on a keyboard make things a lot easier for me and the students. For that reason I have started to prefer + for OR, ' for NOT and adjacency for AND.
  Ex: DeMorgan's First Theorem is (A+B)'=A'B'
  
  > **Comments:**
  > **username_8**: How do such systems indicate xor, implies, and iff?  
  > **username_10**: @BenI. Boolean algebra is really only three operations: or, and, and not.  The other operations are beyond that.  If you want a comprehensive text-based language you can use VHDL but it is pretty verbose.  
  > **username_8**: I guess I want to gently push back on your statement about what boolean algebra is, since that is neither the historical origins, the mathematical basis, nor the minimal number of required operations for boolean algebra, so the statement seems arbitrary at best.  After all, why draw the line there in particular?  You could as well say that boolean algebra is just one operation (NAND or NOR, pick your poison).  While XOR is surely not strictly required, the translation to actual digital logic feels like it would be laborious without it.  
  > **username_10**: @BenI. I agree my statement was a bit stronger than it should have been but or, and, and not are pretty core to Boolean Algebra as they are the most common operational basis set (a single closed set of operations which can used to create all possible Boolean operations).  Per Wikipedia "the main operations of Boolean algebra are the conjunction (and) denoted as ∧, the disjunction (or) denoted as ∨, and the negation (not) denoted as ¬".  I agree the the singe operations of nand and nor also can suffice as an operational basis but they are rarely used notationally.  
  > **username_10**: @BenI. Regarding XOR, it does have a common graphical symbol but no textural one that I am aware of (other than using VHDL).  Also, it does not belong to any traditional operational basis set (mostly because it is not orthogonal to any other operation) and it does not play well with Boolean minimization rules (you have to convert it to ands and ors first).  
  
  ---
  
  