Re: Mathematica skill level snippet(s)

*To*: mathgroup at smc.vnet.net*Subject*: [mg104681] Re: [mg104666] Mathematica skill level snippet(s)*From*: Leonid Shifrin <lshifr at gmail.com>*Date*: Sat, 7 Nov 2009 06:44:32 -0500 (EST)*References*: <200911061017.FAA08128@smc.vnet.net>

Hi Virgil, For general programming, I would pick some of the simpler problems from sources like the following: http://projecteuler.net/ http://langref.org/ and ask the students to solve them in Mathematica. For Mathematica specifically, in "Introduction to programming with Mathematica" by Paul Wellin et al, there is a number of good and relatively simple problems in the exercise sections. Perhaps other introductory Mathematica books which I am not familiar with may also have some good exercises. Some problems from the exercise sections of Michael Trott's programming guidebook (or examples in the main text) may also do. >From what comes straight to my mind, some recursive or rule-based (or plain procedural) implementations of things like factorial, Fibonacci numbers, GCD, sorting, merge sort, select according to some criteria, binary search, or some problems like computing primes (sieve of eratosthenes etc), frequencies of say characters in a string, testing a string for a palindrome, and the like should give a good idea of students' ability. I only mentioned programming problems since they are field - independent to a large degree. For computational ones I would guess that any good multi-step calculus problem done (say both analytically and numerically) entirely in Mathematica will do what you need. One thing I would definitely do is to separate programming and computational assignments and test these skills as independently as possible. But I have a strong feeling that most of the students will ordinarily have the biggest difficulty simply with getting the syntax right and being able to explain/correct the unusual output (I certainly had this difficulty for quite a long time myself). I am not even sure that this has so much to do with the programming proper - rather with the (relatively complex for a newbie) evaluation process and symbolic nature of Mathematica. Perhaps, tests like "predict the output" or "what is broken in this example", or "get this to work" will be at least as useful as programming assigments proper (in Michael Trott's programming guidebook there are a number of such examples, although perhaps many of them are too advanced for the average student). It also depends on how much of the core Mathematica programming language you would like the students to use. If the projects are such that the procedural subset of Mathematica is enough, and its value in this context is mostly in a large number of ready-to-use built-in functions, it is one thing. If patterns, rules and functional programming will be needed, it is another story. If performance can be important / critical, this is yet another one. I know that some people end up creating a simplified framework of some kind on top of Mathematica (sort of an API) to "isolate" their students from the core Mathematica language, since mastering it may take a course on its own, and may not be directly relevant to the domain they are learning through Mathematica (I personally don't like this option. If students are eager to learn and are good in some other programming language, I would rather give them a brief introduction to Mathematica at the beginning, and let them use as much of the power of the language as they can. But I acknowledge that often the "framework" way may be the right choice). Hope this helps. Regards, Leonid On Fri, Nov 6, 2009 at 1:17 PM, Virgil Stokes <vs at it.uu.se> wrote: > I am a teacher and am often faced with the problem of how to determine > the programming skill level for some of my students (3rd year > undergraduates in Engineering and Physics). Knowledge of their skills in > Mathematica can be very important for the design of student projects > that require Mathematica. > > I would appreciate suggestions for small segments of Mathematica code > (or perhaps a single segment of increasing complexity) that could be > used to at least get an idea of their skills in Mathematica. You can > assume they would be using Mathematica 7. > > All suggestions, examples, comments, etc. will be welcomed :-) > > --V. Stokes >

**References**:**Mathematica skill level snippet(s)***From:*Virgil Stokes <vs@it.uu.se>