13
$\begingroup$

I am a high school student and I am receiving a free one-year subscription for Wolfram Mathematica as a prize from USAMTS. How can I make the most of this one year with software that I have heard is very powerful but have never used before?

Here are some things I have thought of and would like feedback on:

  1. Exploring the software freestyle, doing whatever comes to mind after reading the documentation, online resources, etc. I have a few possible starting points for this—hypergeometric functions and advanced generating functions are my current candidates—but I'm afraid this approach won't be efficient or very productive.
  2. Project-based exploration, in which I take up a [possibly ambitious] project which would require Mathematica tools for me to make progress. However, I don't have anything in mind and I'm pretty sure whatever I do will not need the vast majority of Mathematica's capabilities.
  3. Find a professional mathematician who would be willing to take a rookie on as an apprentice, give me a research topic, and let me loose for one year. This is the least probable option but in my opinion likely to be the most useful one.

Possibly relevant context: My mathematical abilities can be guessed at from my Math.SE profile :P Apart from that, I am a fairly competent programmer, and I am also receiving a free one-year subscription to WolframAlpha Pro from USAMTS. I have not performed any research before.

$\endgroup$
  • 1
    $\begingroup$ It comes with its own programming language, which can be quite useful in college courses. If you learn it now, you won't have to waste time fumbling through it in college when time is more limited. You'll probably have access to a mathematica license provided by your college on your own personal computer. Even simple things, like generating ODE/PDE solutions or making it graph 3D surfaces for visualizing vector calc / differential geometry problems goes a long way (at least for me since my spatial intelligence is lacking). $\endgroup$ – Kaj Hansen Jun 3 '17 at 0:35
  • 6
    $\begingroup$ Project Euler is a good place for #2. $\endgroup$ – Trevor Gunn Jun 3 '17 at 0:41
  • $\begingroup$ @T.Gunn Thanks for reminding me about Project Euler! I'd done the first 30 or so challenges but not too seriously, maybe I can get back to it with Mathematica. $\endgroup$ – shardulc Jun 3 '17 at 0:56
  • 5
    $\begingroup$ I believe there is a Mathematica SE. You might want to look at some highly-voted questions/answers there, to see what cool things are possible, and hopefully find something that piques your interest (you can take this as a vote for free-form exploration, unless you have something you really want to learn that would be aided by access to the software, but even then the two are not mutually exclusive). $\endgroup$ – pjs36 Jun 3 '17 at 1:06
  • $\begingroup$ To add to pjs36, apart from Mathematica SE site, also might perhaps be useful for you. (I have mentioned your question there.) And I see that you have also started a chat room related to this question. Perhaps you will receive some advice there, too. (I'm mentioning it here in a comment mainly so that there is a bigger chance that other users notice the room.) $\endgroup$ – Martin Sleziak Jun 3 '17 at 7:25
13
$\begingroup$

I'm quite knowledgeable when it comes to Mathematica but I'm by no means a real mathematician. Here are some tips that might give you a start. First off, we do have a Mathematica Stack Exchange site, and we are (I'm proud to say this) very friendly and helpful to anyone with interest. Our chat is quite active, and you are welcomed to drive by if you hit any rocks on the road to learning the language.

As a long-time user of Mathematica I can tell you that one of its great strengths are the vast amount of possibilities you have to visualize abstract concepts. In the past, we have for instance created highly pleasing analytical surfaces

butt

We have used it to create perspective projections of QR codes to make them readable from impossible angles

qr

or we have simulated mirror cubes

mirror

and those are only a few examples where the core is applied mathematics.

One of the things you probably shouldn't start with is integrals or transformations on complicated or hard analytical expressions. Although Mathematica is really powerful with these, when you hit a dead end you often cannot gain insight, why Mathematica cannot solve it. We have many "Why can't Mathematica solve this integral" questions and more than once we could not tell why it did not work. On the other hand, if you are a mathematician chances are good that you can simplify your problem and can use Mathematica to explore the difficulties.

It is a completely different situation when it comes to numerical computations. Most of the algorithms for integrating, finding minimums or solving PDEs are well documented and they usually work out of the box. For linear algebra, both the numerical and the analytical algorithms work very well as far as I have used them.

Finally, Mathematica comes with support for many different areas like neuronal networks, image processing, graphs, statistics or modeling to name a few. Here, it really depends on what you are interested in.

My advice is the following: Get used to the basic language. You could for instance start here or maybe the fast introduction for programmers fits you better. After that, my advice is not to do a "freestyle exploration" but to take a topic that interests you and start working on a small problem. IMO working on real problems works better if you want to learn a language.

If you elaborate a bit on what you are doing (and I'm somewhat familiar with it), I might be able to give a more definite suggestion.

Appendix

During a chat with @shardulc it became clear that he is interested in various topics and in general very open minded.

Although he seems to have an interest in artificial intelligence, I did not point him to (deep) neuronal networks because this works out-of the box in Mathematica. I was afraid that it would probably be more an experience of using built-in functions instead of learning to program. Additionally, the algorithms of current trends in natural language processing didn't seem to be a good start for learning a programming language as many algorithms are quite involved.

Instead, we discussed several other topics that are both, mathematically quite involved and visually extremely pleasing. Here, I had several ideas basing on books I own and topics I already touched. One book instantly crossed my mind:

enter image description here

From Wikipedia:

Indra's Pearls is unusual because it aims to give the reader a sense of the development of a real-life mathematical investigation, rather than just a formal presentation of the final results. It covers a broad span of topics, showing interconnections among geometry, number theory, abstract algebra and computer graphics. It shows how computers are used by contemporary mathematicians. It uses computer graphics, diagrams and cartoons to enhance its written explanations.

In addition to that, I pointed him to the topic of rewriting systems that are used to create plant-like structures and fractals, and reaction-diffusion systems that can be used to re-create patterns of seashells:

enter image description here enter image description here enter image description here

Last but not least, I pointed him to the web-page of Paul Nylander that covers so many different areas that it can hardly be expressed in one paragraph. Paul has many high-quality images and for most of them he provides Mathematica code

enter image description here

$\endgroup$
  • 1
    $\begingroup$ Another numerical topic for which Mathematica may be interesting is linear algebra: matrix inversion, solving large sparse simultaneous equation sets, eigenvalue/eigenvector problems... $\endgroup$ – Semiclassical Jun 3 '17 at 2:18
  • $\begingroup$ @Semiclassical Yes, I forgot about this. Let me add this! $\endgroup$ – halirutan Jun 3 '17 at 2:20
  • $\begingroup$ Great answer (and appealing visuals)! I think I can pick up the language fairly quickly. After that, the problem is I don't know what sort of project to take up; one idea I just had after reading your third-last paragraph is to actually go through a statistics/machine learning textbook and supplement the exercises with Mathematica. (Maybe this discussion would be better suited to chat?) $\endgroup$ – shardulc Jun 3 '17 at 2:30
  • $\begingroup$ @shardulc Yes, if you like we can have a chat. My place or your place? $\endgroup$ – halirutan Jun 3 '17 at 2:33
  • $\begingroup$ @halirutan Thanks! Here is a temporary chat room. $\endgroup$ – shardulc Jun 3 '17 at 2:37
0
$\begingroup$

A brief answer here - I strongly recommend starting by purchasing Paul Wellin's book Programming with Mathematica®: An Introduction. It is a comprehensive introduction to Mathematica that teaches the fundamentals of the language. The book is highly example-based, which makes it very interesting as well as potentially broadening your knowledge of various maths and science topics. There are numerous exercises complete with solutions. Importantly, the book covers Mathematica's various different programming styles.

That last point - Mathematica's programming styles - is of some importance here. Mathematica is at heart a term rewriting system that encourages a functional and rule based approach to programming. It is quite different to the sort of programming many experienced programmers will be used to. Procedural programming is supported, but isn't usually the 'preferred' approach. I have a suspicion that programmers with a procedural background sometimes don't attempt to grasp Mathematica's very different style, which leads to frustration and complaints. Wellin's book is a good starting point to gain this understanding.

Programming with Mathematica was written for Mathematica version 9, but it is not at all obsolete, rather Mathematica's capabilities have continued to grow while maintaining backward compatibility. Once you understand the fundamentals, then the built-in documentation is very good at guiding you through newer and more advanced parts of the program.

Also have a look at the Common Pitfalls thread on mathematica.SE. It contains plenty of great tips for understanding the system, and avoiding common traps.

Good luck, and enjoy it!

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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