Hi all,<p>This is a question for anyone here who started programming at a late age, after coming to it from a different field.<p>My girlfriend (who's 25 +-) has finished her doctorat in medicine and is now starting her PHD. As part of her research she needs to learn how to program in Matlab as well as quite extensive mathematics (as she needs to perform a lot of analytics on research she conducts).<p>She doesn't have any experience in programming, and little mathematics background.<p>What would be the best way to learn matlab and other mathematical concepts?
MATLAB isn't too hard to get started on. It is, after all, a high-level language; and I rank it as providing a higher level of abstraction than Ruby and Python. To get started, ask her to read a MATLAB primer[1][2]. That's all she'll need to get started.<p>Her time is better spent learning to make the most of whichever MATLAB toolboxes she needs for her research. A course on basic linear algebra, and/or other math topics, is also more relevant than learning how to program.<p>1. <a href="http://www.stanford.edu/class/ee278b/matlab_primer.pdf" rel="nofollow">http://www.stanford.edu/class/ee278b/matlab_primer.pdf</a><p>2. <a href="http://faculty.olin.edu/bstorey/Notes/matlab.pdf" rel="nofollow">http://faculty.olin.edu/bstorey/Notes/matlab.pdf</a><p>Edit: I just want to reiterate that one can use MATLAB without knowing how to program. I see other comments suggesting a full on programming course but she doesn't need this at all. In many engineering courses, first year undergrads can be expected to learn all they need to start "programming" with MATLAB over the course of a weekend.
Because for her, programming will be a means to an end, and that end is data analysis and statistics, I recommend that she learn Python and its scientific and analytical libraries like numpy and scipy.<p>Python is relatively easy to learn, it's free, and it can produce useful results with little effort.<p>Python: <a href="http://www.python.org/" rel="nofollow">http://www.python.org/</a><p>Scipy: <a href="http://scipy.org/" rel="nofollow">http://scipy.org/</a><p>Examples of scipy's output: <a href="https://www.google.com/search?q=scipy&hl=en&tbo=d&source=lnms&tbm=isch&sa=X&ei=wKsUUZ_lO-WUjALzt4GABw&sqi=2&ved=0CAcQ_AUoAA&biw=1213&bih=906" rel="nofollow">https://www.google.com/search?q=scipy&hl=en&tbo=d...</a>
She needs to check out <a href="http://codehs.com" rel="nofollow">http://codehs.com</a> (disclosure: I'm a cofounder).<p>We make it really easy and accessible for people to get started even without having a background.<p>We've had students aged 9 (<a href="http://blog.codehs.com/post/39684965497/9-years-old-and-coding-with-codehs" rel="nofollow">http://blog.codehs.com/post/39684965497/9-years-old-and-codi...</a>)<p>to 85 (<a href="http://blog.codehs.com/post/37288742720/im-85-and-i-learned-to-code-you-should-too" rel="nofollow">http://blog.codehs.com/post/37288742720/im-85-and-i-learned-...</a>)<p>We focus on teaching the fundamentals of thinking like a programmer, so even though the site is based in JavaScript, she'll be able to apply her knowledge towards matlab.<p>Also, it's really fun, and if she continues, she will learn to make a mobile game or two along the way.<p>You can email me at zach@codehs.com if you or she have any questions. Or just sign up for the free trial to check it out.<p>We give personal feedback to all of our students on all the code they submit, so they're sure to improve and not only write functional code, but code with good style.
Cleve Moler, one of the founders of MathWorks, has written two free books. The first, Experiments with MATLAB, might be a good starting point: <a href="http://www.mathworks.com/moler/exm/index.html" rel="nofollow">http://www.mathworks.com/moler/exm/index.html</a>. It teaches some maths as well as Matlab.<p>The official Getting Started Guide is good, and focuses on Matlab itself: <a href="http://www.mathworks.com/help/matlab/getting-started-with-matlab.html" rel="nofollow">http://www.mathworks.com/help/matlab/getting-started-with-ma...</a><p>MathWorks also has a relatively new set of online problems that she can work through: <a href="http://www.mathworks.co.uk/matlabcentral/cody/problems" rel="nofollow">http://www.mathworks.co.uk/matlabcentral/cody/problems</a>. In particular, the Cody Challenge problems start out very easy, but cover a range of language features. After doing some problems, she can see other people's solutions, and hence pick up on more idiomatic ways to do things in Matlab.
You might want to start with some lecture notes from universities. A quick google search led me to these:<p>Stanford: <a href="http://white.stanford.edu/~knk/Psych216A/" rel="nofollow">http://white.stanford.edu/~knk/Psych216A/</a>
MIT: <a href="http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-094-introduction-to-matlab-january-iap-2010/index.htm" rel="nofollow">http://ocw.mit.edu/courses/electrical-engineering-and-comput...</a><p>If she needs both stats and matlab help, your best bet is probably to search something like "statistics and matlab tutorial" on google:
<a href="https://www.google.com/search?q=statistics+and+matlab+tutorial&oq=statistics+and+matlab+tutorial&aqs=chrome.0.57j0l2.4315&sourceid=chrome&ie=UTF-8" rel="nofollow">https://www.google.com/search?q=statistics+and+matlab+tutori...</a>
I never used Matlab, but I am very familiar with R which I think is quite similar. So I'd advise your girlfriend to just play with the Matlab repl (enter 1+1 and see that it returns 2, plot a function, assign a variable, etc.), and then write some function on a text editor and load them into Matlab.<p>You can also help her to load some data (from a text file, a csv file, or maybe a database connection, depending on what's used at her lab), and then do some basic operations on them (calculate some basic statistics and do some easy plots).<p>When she can do all of that (and I don't think it should take her much time to learn), she'll be able to work with Matlab autonomously.
She should start by learning the mathematics and statistics that she will need to do the theory and the analytics necessary for her research. Then she can learn how the mathematical and statistical ideas can be applied using tools such as Matlab. Programming is seductive, because of the instant feedback it provides, but it does not provide much insight; math and statistics provides insight but connections may be obscured by a sea of data. What's needed is the combination of the two.
Doing statistical analysis in MATLAB won't require your girlfriend to learn how to program. She'll most likely use a MATLAB toolbox that provides a graphical interface. The most she'll probably need to know is how to create data structures the toolboxes can use.
I don't know Matlab myself so I don't know of any Matlab-specific tutorials but check out Project Euler: <a href="http://projecteuler.net/problems" rel="nofollow">http://projecteuler.net/problems</a>
codecademy! codecademy! codecademy! codecademy!<p><a href="http://www.codecademy.com/" rel="nofollow">http://www.codecademy.com/</a><p>Start with web fundamentals