Don't miss the excellent discussion and collection of resources as answers to the question, "Where can I find examples of good Mathematica programming practice?""Where can I find examples of good Mathematica programming practice?"
The students were on average more intrinsically motivated to explore a given subject.
I've found Mathematica to be a good tool to force a deeper understanding of engineering content and details in a way that passive, playing with knobs and sliders does not, and in a way that is in some respects quicker than paper.
If incorporated in a certain way, Mathematica can enhance knowledge rather than being an advanced calculator. Before I did the course the first time, I was concerned about the course devolving into a cookbook-style calculator approach; I am pleased to have discovered that one can effectively avoid such a pitfall.
Encouraging the students to produce their own answers and solutions to homework problems which they first worked on paper. Of course there is the risk that the students just type a problem in Mathematica and quickly declare the work done. However, posing the questions and designing homework and projects carefully in advance, I am now confident I can continue and actually force a student to be confronted with salient points and conquer the limits of his or her own knowledge.
More quickly bridging the gap between theory and application. Once a student grasps a basic linear system of first-order differential equations, it's a great motivation to quickly show how they can model aircraft dynamics if they're equipped with the appropriate system matrix.
The Mathematica documentation is excellent for getting students up to speed quickly so that students can stay more focused on the mathematical/engineering content.
Creating a mini-project in which each student works on a similar problem but each student has completely different input variables (which sometimes resulted in different characteristics of a system) ...
... and then writing a program with which I semi-automatically grade all (250+) student projects and provide them with their own graded notebook including some feedback per question.
Working on similar problems/projects but with different variables allows them to work together and learn from each other, which I encourage, while forcing them to do their own work to some extent. This balance works quite nicely.
Check out this discussion on the most common pitfalls awaiting new usersmost common pitfalls awaiting new users.
Be prepared for the unexpected in Mathematica. When I started I was completely new to Mathematica and so sometimes bumped into the limitations of my own Mathematica knowledge. I'm not a complete novice anymore, and yet I'm tripped up every now and again during a live lecture. I don't view this as a bad thing because the students can then follow my problem solving process live, seeing a (hopefully) structured thought-process in progress.
Preparing for the unexpected is doubly true for students. Often students reached an impasse that could not be circumnavigated without more Mathematica experience. For example, they could solve a particular differential equation but got a different answer than the one in the book or one they expected. Mathematica's answer was correct but looked totally different, and only with knowledge of other functions (e.g.
TrigToExp
,Im
, ...) could they transform their answer into the expected one.Issues with syntax often dogged the students who need more time to get used to seeing matrices as lists which were delineated by curly braces.
The difference between the form in which an expression is shown on the screen and the
FullForm
which exists under the hood. For example, students would often want to copy a previous result and paste it elsewhere, being unaware that they were copying and pasting theMatrixForm
.Mathematica seems to exhibit slightly different behavior on different computing platforms and seemingly sometimes on different processors for the same OS (32 vs. 64 bit).