As you may know from your own experience (or perhaps from the literature on education), passively receiving information does not lead to new knowledge in the same way that active participation in inquiry leads to new knowledge. Active learning describes instructional methods that engage students in the learning process. Student participation in the classroom typically leads to deeper knowledge, more developed critical thinking skills and increased motivation to continue learning. In this post, you will see example activities demonstrating how WolframAlpha Notebook Edition can support active learning methods in your classroom.
WolframAlpha Notebook Edition combines the natural language processing of WolframAlpha with the flexible format of Wolfram Notebooks. Combine text, graphics, natural language computations, interactive visualizations and more in a single place. Whether you’re an educator or a student, WolframAlpha Notebook Edition makes it easy to take an active role in the learning process.
Tangent lines (and their connection to derivatives) are a fundamental concept in calculus and one that students often have difficulty understanding by staring at a formula. However, with WolframAlpha Notebook Edition, students can examine patterns and then make predictions based on their experiences. By actively forming connections from experience, they gain a greater intuition for the concept.
You can ask your students to define a function, say f(x) = x^{2}:
✕

Now find the tangent line to this function at the point (1,1):
✕

Notice that the output contains a variety of information you will incorporate into lessons at some point during the instructional sequence. Any part of the output can be used for future exploration. Suppose you first want to have students explore the patterns that emerge as they consider tangent lines at different points. The last input can be easily modified to do just that:
✕

✕

With three computations performed, you could ask your students to make a prediction based on these examples. For example, what seems to be the relationship between the point chosen and the slope of the tangent line to this curve? By going back and considering patterns in their previous results, many students will pick up on the fact that the slope of the tangent line to this function has been twice the value of the x coordinate in the last three examples.
Since your students already defined f(x) = x^{2}, they don’t need to do so again in the same notebook:
✕

To introduce the important connection between tangent lines and derivatives, you can ask students to compare their previous results about tangent lines with new calculations about derivatives:
✕

✕

✕

By seeing concrete calculations and matching these patterns for themselves, students will be led to wonder if the patterns hold generally. Luckily, symbolic computations can also be done to help answer their questions:
✕

With concrete examples now grounding their understanding, you can help students learn why they have seen some sort of connection between tangent lines and derivatives. You can bring interactivity into your students’ math explorations by using Demonstrations from the Wolfram Demonstrations Project:
✕

Demonstrations can be browsed through or brought up using natural language inputs.
Using the penandpaper method, students must handdraw a host of individual plots to really gain an understanding of the role of various parameters in equations. Using interactive plots, students can focus on the biggerpicture learning goal. What does a symbol mean in context?
✕

By using sliders to dynamically update a plot, you can save valuable instructional time. Instead of students spending all their energy rehearsing the details of drawing a plot by hand, they can direct their attention to the bigger question. What do m and b actually do in the equation y = m x + b? Intuition is immediately gained through active engagement with a dynamic plot.
Of course, knowledge of how to plot functions might be a learning goal you want to emphasize too. This can also be explored in an interactive way. The points on the interactive quiz can be moved by clicking, and the results can be checked automatically:
✕

Studying the domain and range of functions is another common goal while learning how to create graphs. This is a topic where students can immediately make the connection between symbols and graphs:
✕

Even after finding the symbolic result, many students will still have questions about why results are true. Students can immediately visualize the meaning of constraints on domain and range in their own plots:
✕

In any algebra course, one would learn to solve systems of linear equations:
✕

Students can use inputs like the previous one to gain confidence in their problemsolving methods or to quickly find a result for use in an applied project. Students can also ask for the steps of calculations, building metacognitive skills as they selfassess whether or not they need that support:
✕

Of course, the symbolic steps that students learn do not necessarily illuminate the “why” of the solution. Even if students can follow an algorithm, it does not always mean they understand the algorithm. Your students can easily include a visualization showing the two lines intersecting to help them understand the “why” of a topic:
✕

From the previous plot, students can easily see that the intersection of the two lines is the solution of the system of equations. Remember that you can also introduce parameters and dynamically explore their effect on the problem:
✕

With an example like this one, you can help students understand when parameters in a linear system will (or won’t) affect the number of solutions. You can then introduce a parameter in a new place and ask students to discuss any changes in patterns they see:
✕

With these interactive visualizations, students can link their symbolic knowledge with their geometric intuition about a problem. In the previous example, students can see why certain values of coefficients and constants lead to infinitely many solutions as the lines coincide.
Having students use graph paper to plot surfaces is possible in two dimensions. However, students using pen and paper lose the benefits of visualization as soon as their problems become interesting in three dimensions. Using WolframAlpha Notebook Edition, students can link symbolic knowledge with visual intuition in three dimensions:
✕

The previous linear system with two equations in three variables has infinitely many solutions on the line where the planes intersect. Using visualization, students can immediately understand why this is the case and then explore why introducing a third equation to this system does not always result in a unique solution:
✕

As an instructor, you can help students use the results of computation to lead them into the next “why” question. For example, the previous visualization shows how a system might have one or infinitely many solutions. It also gives them a strong hint as to why a linear system will never have exactly two solutions. Using the natural language inputs they have already interacted with, you can help students structure further queries to see if they can invent and visualize a linear system that has no solutions.
Interactive activities can be built in a variety of ways. As you saw, students and teachers can easily create interactive graphics with a single line of natural language input. You can also use a variety of starting points to help guide explorations. A snapshot of the menu to browse mathematics starting points is shown here:
In addition to starting points, you also saw an example of a Demonstration and an interactive plot quiz. These various ways to explore content can be used to build both lessons aligned with specific learning goals and student curiosity as they browse during unstructured time.
With WolframAlpha Notebook Edition, students can recognize patterns, visualize results, perform computations and blend all these modes of engagement with textual explanations. Using the technology stack behind WolframAlpha Notebook Edition, you can implement the classroom of tomorrow, where students actively generate questions about patterns and explore their questions through computation in real time.
Stay tuned for a future blog post with examples to implement group activities and capstone projects in WolframAlpha Notebook Edition.
Want to give it a try? Sign up for a trial of WolframAlpha Notebook Edition. 
Wolfram Language has a wealth of builtin functions that require little or no programming, but there are special cases that require additional skill and knowledge to get the code to do things that go beyond those builtin capabilities. Wolfram U is pleased to announce a new free interactive course by veteran Wolfram programmer and instructor Dave Withoff that offers a collection of useful tips and instruction for intermediatelevel programmers. This course will expand your understanding of Wolfram Language and help you to write more complex programs for custom results.
Let me start by saying that for beginners to the language, the free interactive course An Elementary Introduction to the Wolfram Language continues to be the best way to start learning how to write programs with Wolfram Language. A Guide to Programming with Wolfram Language is intended as a followon course for users who are ready to delve deeper into the language.
If you’re already familiar with the language and prepared to dive in to more advanced topics, you can explore the interactive course by clicking the following image before reading the rest of the blog post.
To introduce Wolfram Language and modern computational thinking to the world, Stephen Wolfram published An Elementary Introduction to the Wolfram Language in 2015. Functionality gains for the Wolfram Cloud soon made it possible to turn the book into a full interactive online course that includes videos, exercises and a scratch notebook in an easytouse interface, available to anyone with an internet connection. Indeed, lessons from the introductory course have been viewed over a million times on computers, tablets and smartphones around the globe since its launch.
The new intermediatelevel programming course grew out of user interest for more advanced lessons and a desire to address questions from experienced users related to topics such as assignments and evaluation rules, patterns, program interfaces and plotting. Dave Withoff has been using Wolfram Language since the release of Mathematica 1.2 in 1989. Dave was a developer of packages and internal code for early versions of Mathematica and is an experienced instructor in the world of academia and with Wolfram U. He has used his expertise with the language to create the new course lessons, sharing tips and techniques he has developed over the years.
Students should have some knowledge of Wolfram Language programming before they begin the course, which includes intermediatelevel topics, such as the structure of expressions, variable localization and other details about the basic design of the system. Later sections include lessons on speed and memory efficiency, construction of interactive user interfaces, data visualization and debugging.
Here is a quick look at some of the lessons included in the course (shown in the table of contents in the lefthand column):
Even though the content goes beyond the introductory level, it should not take very long to complete this course. You should be able to finish the 22 short videos and eight quizzes in about four hours. The course tracks your progress automatically and generates your personalized certificate of course completion when you finish.
The next few sections of the blog post describe the different interactive course components in detail.
The body of the course is a set of 22 lessons, starting with “Multiparadigm Programming.” This introductory lesson uses handson examples to illustrate different programming styles, followed by dedicated lessons on functional and rulebased programming that demonstrate different ways of writing programs in Wolfram Language.
Course sections include “Basic Language Structure,” “Values and Variables,” “Common Special Expressions,” “Program Interfaces,” “Plotting,” “Analyzing and Optimizing Programs” and “Selected Applications.” Each section has two or three lessons and an autograded quiz to test your understanding.
The videos range from 6 to 15 minutes in length, and each video is accompanied by a lesson notebook displayed on the righthand side of the screen. There is an embedded scratch notebook where you can copy and paste Wolfram Language input directly from the lesson so you can try the examples for yourself.
Each lesson comes with a set of exercises to practice the concepts. A detailed solution is provided for every exercise because the course is designed for independent study. The following shows an example from the lesson on knowledge representation, from the “Program Interfaces” section:
The notebooks with the exercises are interactive, so students can try variations of each problem in the Wolfram Cloud. In particular, they are encouraged to change the variables in examples and investigate the documentation and options available for builtin functions.
At the end of each section is a short, multiplechoice quiz with 10 problems. The quiz problems are at roughly the same level as those shown in the lessons, and a student who reviews the section thoroughly should have no difficulty in doing well on the quiz.
Students will receive instant feedback about their answers to the quiz questions, and they are encouraged to try hand and computer calculations to solve them.
Students are encouraged to watch all the lessons and attempt the quizzes in the recommended sequence because course topics may rely on earlier concepts and techniques. When you complete the course, you can download a personalized certificate of completion. You will earn a course certificate after watching all the lessons and passing all the quizzes. Your progress is tracked automatically for you within the course using your Wolfram ID, making it easy to just pick up where you left off if you exit and return to the course later. A course certificate adds value to your professional resume, school and job applications or social media profile. This course provides useful preparation for the Wolfram Language Level I certification exam, and students are encouraged to take the exam and earn a proficiency certification.
Wolfram U offered a sneak peek of the course lessons and quizzes to Daily Study Group participants this spring, and we received some valuable feedback. Here is what participants said:
I think you’ll find this new interactive course to be an enjoyable learning experience on your journey to become a more advanced and skilled user of Wolfram Language, just like our Daily Study Group cohort did. I hope you’ll reach out to let us know about the ways you find the course helpful and to share stories about your results. As always, we welcome any comments or suggestions for future courses and certifications.
I’m grateful to Andre Kuzniarek at Wolfram for suggesting the course concept; to the author, Dave Withoff, for answering the call to create this collection of programming topics; and to the Wolfram U staff who contributed to making it a reality. I would specifically like to acknowledge Cassidy Hinkle, Laura Crawford and Mariah Laugesen of the Wolfram U team.
Need a refresher on Wolfram Language? Sign up for the Wolfram Language Basics Daily Study Group. 
In 2020 it was Versions 12.1 and 12.2; in 2021 Versions 12.3 and 13.0. In late June this year it was Version 13.1. And now we’re releasing Version 13.2. We continue to have a huge pipeline of R&D, some short term, some medium term, some long term (like decadeplus). Our goal is to deliver timely snapshots of where we’re at—so people can start using what we’ve built as quickly as possible.
]]>Algebra is an essential course for understanding nearly all mathematics at the highschool level and beyond. Whether you plan to calculate profits at a business, balance a chemical equation, write efficient computer code or even just figure out which weights to put on the bar at the gym, algebra is completely indispensable. It’s no wonder that elementary algebra is a required field of study regardless of your eventual career or academic goals.
I am pleased to announce that we are launching a free interactive course, Introduction to Elementary Algebra, which aims to help students learn algebra entirely from the ground up. Whether you are a beginner wanting to learn algebra for the first time, someone looking for a refresher or are curious about how to use Wolfram Language to learn and visualize algebraic concepts, this course is made for you. This course introduces students to basic algebraic terminology and rules, then uses these ideas to explore everything from linear equations to systems of inequalities to quadratic equations. Along the way, powerful Wolfram Language functions are used to verify, simplify and visualize all subjects of discussion.
Clicking the following will take you directly to the course, where you can immediately begin to explore the world of algebra.
The roots of algebra can be traced all the way back to the ancient Babylonians, who had developed a comparatively advanced arithmetical system with which they were able to do calculations using algorithms, or steps, for problem solving. In fact, we get the English word algorithm from a corruption of “alKhwārizmī,” a Persian mathematician who lived roughly 12 hundred years ago and who is widely credited as being one of the fathers of algebra as a whole. Algebra even comes from alJabr, an abbreviation of the title of a book alKhwārizmī wrote about how to balance and solve equations systematically. Many of the methods he discussed—updated with the notation introduced by the ancient Greek mathematician Diophantus—are still in use today.
Despite its ancient origins, algebra remains a relevant foundation to nearly every part of society. There are many questions in the real world that you might want to answer without knowing every single detail, and algebra equips you with the power to find those answers yourself.
The course begins with a full introduction to the basic terminology, notation and ideas of elementary algebra. Students will then learn how to write, solve and graph linear equations before moving on to linear inequalities and systems of linear equations. The lessons conclude with an introduction to polynomials, which are then used to introduce and understand quadratic functions and equations.
Here is a bit of a sneak peak of the lessons that comprise this course:
This course has 28 primary lessons and one bonus lesson. I have made sure to pace the early lessons in particular very comfortably so as to ensure that the ideas have time to breathe and settle appropriately for even the newest student of algebra. My expectation is that you can finish watching all of the videos and complete the six short quizzes in roughly 10 hours.
Students taking this course need to know nothing other than the basics of arithmetic—addition, subtraction, multiplication and division—in order to dive in.
The rest of this blog post will discuss the different pieces of this course in more detail.
This course is built around a collection of 28 lessons that aim to build the student’s problemsolving abilities and give them a solid sense of mathematical intuition. The first lesson of this collection asks the question “What is algebra?” and explains how algebra is distinct from arithmetic and why that distinction matters. The lesson continues by giving a brief history of the origins of algebra and a quick but indepth look at where algebra is useful in the modern world, then outlines and summarizes the course as a whole.
The lessons in this course all contain examples that are worked out in real time in the corresponding videos. A full lesson notebook with detailed solutions is also included for each lesson. Wolfram Language usage is explained in careful detail, and students can use the code contained in the notebooks as a template for finding their own solutions, performing their own simplifications and generating their own graphs. Any code in these notebooks can be copied with a simple click, and that code can be pasted into (and edited within) the scratch notebook area at the bottom of the screen.
Videos for each lesson are roughly 16 minutes in length, but may be shorter or longer depending on the requirements of the material—the video on simplification, for example, is by far the longest video given the prime importance of that skill in the study of elementary algebra.
Each lesson includes many worked examples to demonstrate the solution processes for all of the subject matter in the course, and additionally includes a separate set of exercises that are not featured in the accompanying video. Because this course is intended to facilitate independent study, these exercises also have solutions included.
Each of this course’s six sections ends with a 10question multiplechoice quiz. The questions in these quizzes are intended to be of comparable difficulty to the exercises and general material from the relevant sections, and I expect that anybody who reviews the material beforehand will be able to pass the quizzes without difficulty.
Students receive instant feedback upon submitting their responses to the quiz questions, and can use any method they think is reasonable to arrive at the correct answer.
Students who wish to take advantage of everything this course has to offer will, by the time they complete it, have watched all 28 lessons and passed the six quizzes. At this point, students can—and should!—request a certificate of completion showing that they have achieved proficiency in the field of elementary algebra. This certificate can easily be added to your resume or social media profile too!
This course also has an optional final exam that you can take after completing all of the material. This final exam has more questions and a slightly higher difficulty than the quizzes, and passing it will net you a more advanced Level 1 Certification.
I’ve said it many times, but it bears repeating: elementary algebra is absolutely fundamental to society, and no matter what your academic or career path might look like, learning algebra will help you along that path. Scientists of all stripes, businesspeople, programmers and developers, and just people who do things like watch sports or go grocery shopping or lift weights all benefit from having a working knowledge of algebra and some of the mathematical intuition that comes with that. It is my hope that this Introduction to Elementary Algebra course will provide you with that knowledge and intuition and set you up for success in whatever field you choose to pursue.
This course is the result of the work of many people. I would like to thank Alejandra Ortiz Duran, Devendra Kapadia, Amruta Behera, Cassidy Hinkle, Joyce Tracewell, Veronica Mullen, Bob Owens, Matt Coleman, Mariah Laugesen, Laura Crawford and Anisha Basil for all the work they put into getting this course up and running.
Want more help? Register for one of Wolfram U’s Daily Study Groups. 
In Version 12.3 we introduced Tree as a new fundamental construct in the Wolfram Language. In Version 13.0 we added a variety of styling options for trees, and in Version 13.1 we’re adding more styling as well as a variety of new fundamental features.
An important update to the fundamental Tree construct in Version 13.1 is the ability to name branches at each node, by giving them in an association:
✕

All tree functions now include support for associations:
✕

In many uses of trees the labels of nodes are crucial. But particularly in more abstract applications one often wants to deal with unlabeled trees. In Version 13.1 the function UnlabeledTree (roughly analogously to UndirectedGraph) takes a labeled tree, and basically removes all visible labels. Here is a standard labeled tree
✕

and here’s the unlabeled analog:
✕

In Version 12.3 we introduced ExpressionTree for deriving trees from general symbolic expressions. Our plan is to have a wide range of “special trees” appropriate for representing different specific kinds of symbolic expressions. We’re beginning this process in Version 13.1 by, for example, having the concept of “Dataset trees”. Here’s ExpressionTree converting a dataset to a tree:
✕

And now here’s TreeExpression “inverting” that, and producing a dataset:
✕

(Remember the convention that *Tree functions return a tree; while Tree* functions take a tree and return something else.)
Here’s a “graph rendering” of a more complicated dataset tree:
✕

The new function TreeLeafCount lets you count the total number of leaf nodes on a tree (basically the analog of LeafCount for a general symbolic expression):
✕

Another new function in Version 13.1 that’s often useful in getting a sense of the structure of a tree without inspecting every node is RootTree. Here’s a random tree:
✕

RootTree can get a subtree that’s “close to the root”:
✕

It can also get a subtree that’s “far from the leaves”, in this case going down to elements that are at level –2 in the tree:
✕

In some ways the styling of trees is like the styling of graphs—though there are some significant differences as a result of the hierarchical nature of trees. By default, options inserted into a particular tree element affect only that tree element:
✕

But you can give rules that specify how elements in the subtree below that element are affected:
✕

In Version 13.1 there is now detailed control available for styling both nodes and edges in the tree. Here’s an example that gives styling for parent edges of nodes:
✕

Options like TreeElementStyle determine styling from the positions of elements. TreeElementStyleFunction, on the other hand, determines styling by applying a function to the data at each node:
✕

This uses both data and position information for each node:
✕

In analogy with VertexShapeFunction for graphs, TreeElementShapeFunction provides a general mechanism to specify how nodes of a tree should be rendered. This named setting for TreeElementShapeFunction makes every node be displayed as a circle:
✕

Uninvited guests like foodborne bacteria can ruin an otherwise perfect Thanksgiving dinner. Here are two tools that can help ensure your turkey is thawed and cooked properly. You can access these via natural language input or by using FormulaData.
Remember, never thaw a turkey by leaving it out on the counter. A safe way to thaw a frozen turkey is by putting it in cold water (change the water every 30 minutes to ensure it stays cold):
✕

✕

✕

Unstuffed turkey:
✕

Stuffed turkey:
✕

After cooking your turkey, use a food thermometer to make sure it has reached a minimum internal temperature of 165° F/74° C. To check, insert a food thermometer into the thickest part of the breast, thigh and wing. If you cooked stuffing inside the turkey, check the temperature at the center of the stuffing to ensure it also has reached the safe minimum temperature.
For more information about how to prepare your turkey safely, you can visit the National Turkey Federation or www.foodsafety.gov.
Brine is a solution of water and salt. The salt in brine dissolves some of the protein in the turkey’s muscle fibers, which can reduce moisture loss during cooking. If you plan to brine your turkey, Wolfram Language can calculate the mixture for you.
Based on www.simplyrecipes.com, the basic turkey brine recipe is four quarts of water to 250g of salt. Let’s define a function to calculate how much salt is needed to create any volume of brine:
✕

Test that it gives what we expect:
✕

Then use it for any volume:
✕

Remember, do not brine any longer than two days, and always keep the turkey and brine refrigerated at 40° F or lower. Discard the brine mixture afterward. Do not reuse it.
Visit the USDA to learn more about how to brine turkey.
Did you receive short notice about cousins or inlaws coming for Thanksgiving dinner? Scale up your recipe and ensure there are enough mashed potatoes for all of your guests.
The recipe I’m using is Martha Stewart’s classic mashed potatoes.
Copy and paste the ingredient text straight from the webpage:
✕

To get Interpreter to understand what entities we’re talking about, we can clean up the text and separate out the ingredients with a little string processing. We can ignore any ingredient lines with no amounts in them, since these are probably ingredients that are added in small amounts or to taste, and they won’t affect the overall nutrition of the meal:
✕

Now that we have clean strings, we can use Interpreter to give us a semantic representation of them in Wolfram Language:
✕

Use the "AbsoluteTotalCaloriesContent" property to get caloric information about the recipe as a whole:
✕

The recipe states that this serves 10 people, so we can calculate the calories per serving:
✕

By making this recipe computable using Wolfram Language’s food data, we can also calculate the quantity of each ingredient needed to make this recipe for any number of people.
Here’s what we would need for one portion:
✕

And here are the amounts of each ingredient needed for a party of 25:
✕

You can safely store those Thanksgiving Day leftovers using information in Wolfram Language. A sidebyside comparison helps you decide whether to refrigerate or freeze that extra food:
✕

To our Wolfram community, we are thankful yearround for your creativity and passion for innovation. We wish you a Thanksgiving season filled with joy, good food and great computations!
Create your own festive Thanksgiving dinner collage with one line of code:
✕

At first it seemed like a minor feature. But once we’d implemented it, we realized it was much more useful than we’d expected. Just as you can style a graphics object with its color (and, as of Version 13.0, its filling pattern), now in Version 13.1 you can style it with its drop shadowing:
✕

Drop shadowing turns out to be a nice way to “bring graphics to life”
✕

or to emphasize one element over others:
✕

It works well in geo graphics as well:
✕

DropShadowing allows detailed control over the shadows: what direction they’re in, how blurred they are and what color they are:
✕

Drop shadowing is more complicated “under the hood” than one might imagine. And when possible it actually works using hardware GPU pixel shaders—the same technology that we’ve used since Version 12.3 to implement materialbased surface textures for 3D graphics. In Version 13.1 we’ve explicitly exposed some wellknown underlying types of 3D shading. Here’s a geodesic polyhedron (yes, that’s another new function in Version 13.1), with its surface normals added (using the again new function EstimatedPointNormals):
✕

Here’s the most basic form of shading: flat shading of each facet (and the specularity in this case doesn’t “catch” any facets):
✕

Here now is Gouraud shading, with a somewhatfaceted glint:
✕

And then there’s Phong shading, looking somewhat more natural for a sphere:
✕

Ever since Version 1.0, we’ve had an interactive way to rotate—and zoom into—3D graphics. (Yes, the mechanism was a bit primitive 34 years ago, but it rapidly got to more or less its modern form.) But in Version 13.1 we’re adding something new: the ability to “dolly” into a 3D graphic, imitating what would happen if you actually walked into a physical version of the graphic, as opposed to just zooming your camera:
✕

And, yes, things can get a bit surreal (or “treky”)—here dollying in and then zooming out:
]]>
From the very beginning of Mathematica and the Wolfram Language we’ve had the concept of listability: if you add two lists, for example, their corresponding elements will be added:
✕

It’s a very convenient mechanism, that typically does exactly what you’d want. And for 35 years we haven’t really considered extending it. But if we look at code that gets written, it often happens that there are parts that basically implement something very much like listability, but slightly more general. And in Version 13.1 we have a new symbolic construct, Threaded, that effectively allows you to easily generalize listability.
Consider:
✕

This uses ordinary listability, effectively computing:
✕

But what if you want instead to “go down a level” and thread {x,y} into the lowest parts of the first list? Well, now you can use Threaded to do that:
✕

On its own, Threaded is just a symbolic wrapper:
✕

But as soon as it appears in a function—like Plus—that has attribute Listable, it specifies that the listability should be applied after what’s specified inside Threaded is “threaded” at the lowest level.
Here’s another example. Create a list:
✕

How should we then multiply each element by {1,–1}? We could do this with:
✕

But now we’ve got Threaded, and so instead we can just say:
✕

You can give Threaded as an argument to any listable function, not just Plus and Times:
✕

You can use Threaded and ordinary listability together:
✕

You can have several Threadeds together as well:
✕

Threaded, by the way, gets its name from the function Thread, which explicitly does “threading”, as in:
✕

By default, Threaded will always thread into the lowest level of a list:
✕

✕

Here’s a “reallife” example of using Threaded like this. The data in a 3D color image consists of a rank3 array of triples of RGB values:
✕

This multiplies every RGB triple by {0,1,2}:
✕

Most of the time you either want to use ordinary listability that operates at the top level of a list, or you want to use the default form of Threaded, that operates at the lowest level of a list. But Threaded has a more general form, in which you can explicitly say what level you want it to operate at.
Here’s the default case:
✕

Here’s level 1, which is just like ordinary listability:
✕

And here’s threading into level 2:
✕

Threaded provides a very convenient way to do all sorts of arraycombining operations. There’s additional complexity when the object being “threaded in” itself has multiple levels. The default in this case is to align the lowest level in the thing being threaded in with the lowest level of the thing into which it’s being threaded:
✕

Here now is “ordinary listability” behavior:
✕

For the arrays we’re looking at here, the default behavior is equivalent to:
✕

Sometimes it’s clearer to write this out in a form like
✕

which says that the first level of the array inside the Threaded is to be aligned with the second level of the outside array. In general, the default case is equivalent to –1 → –1, specifying that the bottom level of the array inside the Threaded should be aligned with the bottom level of the array outside.
]]>