Exploring Mathematica as a High School Student 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:


*

*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.

*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.

*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.
 A: 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

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

or we have simulated mirror cubes

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:

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:



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

A: 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!
