Expression as Tree — 2. Logic

Expression as Tree is a sequence consisting of the following 5 notional machines:
1. Arithmetic
2. Logic
3. Objects
4. Arrays
5. Comparisons & Conditionals

Programming Language

imperative, OO / Java

Form

Representation

Attribution — Origin / Source

Collected by Matthias Hauswirth — Own practice

Conceptual Advantage

Makes explicit the fact that logic expressions have the same structural properties as the well known arithmetic expressions.

Mapping

PLNM
... (all aspects from 1-Arithmetic)
Boolean literal leaf tree node labeled with true or with false
variable leaf tree node labeled with name of variable of type boolean
unary negation operator (!) tree node with operator in front of a hole
binary logical operator (|, &, ||, &&) tree node with operator between two holes

Draws Attention To

The structure, typing, and evaluation of expressions involving logic operators and Boolean literals.

Use When

To reason about the structure and semantics of simple logic expressions.

Cost

Small, can be done on paper or with a tool like Expression Tutor.

Details

The following videos and activities come from ExpressionTutor.org, where you can find a much more comprehensive set of resources and tools. Expression Tutor supports many different programming languages, but the material discussed here is specific to Java.

The Crash Course: Expressions in Java provides a learning experience that corresponds to this notional machine sequence.

Explainer Video: Basic Logic Expressions

The following video comes from section Logic of the Crash Course.

Example expressiontutor.org Activity

Here is an example “Expression Tutor” activity. Can you solve it?

Explainer Video: Where to find expressions

Explainer Video: Determining the type of an expression

Explainer Video: Determining the value of an expression

Comments or Feedback?

Do you have feedback on this notional machine? Did you find a mistake, or do you have a request for improvement? You can create an Issue on GitHub, where the description is hosted. This way we can see your feedback and address it.

For this, you need a GitHub account. Then follow this link to see the source file of this page. In there, click the ... left of the highlighted line, then pick "Reference in a new issue".

Create an Issue on GitHub