8
$\begingroup$

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 about how to explain + as OR.

$\endgroup$
2
  • 2
    $\begingroup$ 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 $\endgroup$
    – copper.hat
    Commented Feb 12, 2018 at 6:02
  • $\begingroup$ Good grief teach them that names are arbitrary. $\endgroup$
    – philipxy
    Commented Feb 24, 2018 at 1:52

5 Answers 5

4
$\begingroup$

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.

$\endgroup$
2
  • 3
    $\begingroup$ 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. $\endgroup$
    – Mark
    Commented Feb 11, 2018 at 21:37
  • 1
    $\begingroup$ I've never taught that age level, nor was I a particularly good student then. Hence my hesitation. Thanks for clarifying. $\endgroup$
    – Buffy
    Commented Feb 12, 2018 at 13:36
4
$\begingroup$

As per ctrl-alt-delor'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.

$\endgroup$
4
  • $\begingroup$ ^ is not same as "=. The first is bitwise, and works on ints. The second works on bools (and is only true/false). $\endgroup$ Commented Feb 17, 2018 at 10:29
  • $\begingroup$ @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. $\endgroup$
    – Ben I.
    Commented Feb 17, 2018 at 14:39
  • $\begingroup$ 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.) $\endgroup$ Commented Feb 17, 2018 at 17:23
  • $\begingroup$ @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. $\endgroup$ Commented Feb 19, 2018 at 6:13
3
$\begingroup$

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.

$\endgroup$
6
  • 2
    $\begingroup$ 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. $\endgroup$
    – Buffy
    Commented Feb 11, 2018 at 19:46
  • $\begingroup$ @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). $\endgroup$ Commented Feb 12, 2018 at 4:42
  • $\begingroup$ @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. $\endgroup$ Commented Feb 12, 2018 at 11:04
  • 1
    $\begingroup$ @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. $\endgroup$ Commented Feb 19, 2018 at 5:54
  • $\begingroup$ @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. $\endgroup$ Commented Feb 19, 2018 at 5:58
1
$\begingroup$

On a very personal note, I prefer

($\cdot$), ($+$), ($\bar{}$)

as per ctrl-alt-delor'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.

$\endgroup$
1
  • $\begingroup$ I like these too but they are harder to work with on the modern web/computer based learning systems. $\endgroup$ Commented Nov 26, 2021 at 6:34
1
$\begingroup$

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'

$\endgroup$
5
  • $\begingroup$ How do such systems indicate xor, implies, and iff? $\endgroup$
    – Ben I.
    Commented Nov 22, 2021 at 13:07
  • $\begingroup$ @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. $\endgroup$ Commented Nov 26, 2021 at 6:30
  • $\begingroup$ 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. $\endgroup$
    – Ben I.
    Commented Nov 26, 2021 at 6:58
  • $\begingroup$ @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. $\endgroup$ Commented Dec 1, 2021 at 17:21
  • $\begingroup$ @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). $\endgroup$ Commented Dec 1, 2021 at 17:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.