The upcoming academic year will contain a number of new projects for me that are going to be quite exciting. I’ve twittered about one of these projects recently, and each time I do so, I get replies from folks wanting to know more, so I’m now shifting discussion of this to the blog. The project: Designing and teaching a one-hour course on the computer software MATLAB for a general mathematical audience. This course, titled “Computer Tools for Problem Solving”, is going to begin in Spring 2010. It will be a one-hour lab-oriented course to be taken corequisite with Calculus II. Every student who takes Calculus II will be expected also to take the MATLAB course.

Why are we doing this? Three reasons.

**To speed up our 3:2 engineering program.**Under this program, students go to my college for 3 years to take foundational math and science courses along with liberal arts courses; then transfer to our partner university to take in-depth engineering courses for 2 years. Then they graduate with a BA from us in chemistry or applied math, and with a BS from the university in engineering. One of the foundation courses in the engineering program at the university is a one-hour MATLAB course; this course was designed from the start to be one which would replace the course at the university. By taking it at our college instead of at the university, the students’ five-year schedule is lightened considerably.**To get students using computers to solve problems early and often, especially using programming.**Our alumni and industry contacts are constantly telling us that technological skill, especially programming skill, is essential for the jobs they are doing, even if they aren’t employed as programmers. Our department has always been pretty good at introducing and using computer algebra systems such as Maple in our classes, and lately we’ve been pretty taken with spreadsheets. What’s been lacking is a coherent use of programming to solve problems. Our majors have to take a semester of C++, but we have not required any programming in our math courses, and so there’s no requirement or incentive for students to use what they learn in C++. Actually it’s possible to put off that C++ class until the last year, and many students do so. To be honest, we can’t blame them, because C++ is much too complicated for what we intend. We don’t expect students to develop a complete, bug-free end-user application when asked to solve a mathematical problem with programming; we just want them to be able to take a programming environment and come up with a quick, dirty, but usable tool to answer a question or make an observation. We think having MATLAB around and training students on it will provide the right kind of programming environment for the sorts of programming we want them to do.**To develop a platform for “programming across the curriculum”.**Tying in to the reason above, we envision changing our post-calculus courses over time to include significant programming assignments that involve MATLAB. Further down the road, we will be retooling many of our post-freshman courses — Calculus III, Linear Algebra (especially), Differential Equations, and so on — to involve significant amounts of scientific computing and programming in them, and MATLAB will be the primary platform for all programming and non-symbolic work. And therefore the MATLAB course will be a centralized gateway for training in the software.

The course is approved and on the books for Spring 2010. One of the things that’s a little scary is that I myself am a MATLAB neophyte. I attended a Mathworks-sponsored MATLAB Fundamentals workshop this past March, and I’ve been working on teaching myself the software this summer. But part of the process of teaching the course is learning the software myself, which is fun and hard at the same time. I hope the students in the course have the same viewpoint once they are learning MATLAB as well.

I’ll be continuing to blog about the development of this course and MATLAB-related thoughts as we approach the “launch” of the course in February. As always, leave questions and reactions in the comments and I’ll get to them in future posts.

I agree that teaching students to use a system like MATLAB rather than a lower level programming language like C/C++/Fortran/Java/… is a good choice.

It’s worth pointing out that a major problem with MATLAB is that the software is quite expensive- your students may not like having to pay for the student edition of MATLAB if they want to run the software on their personal machines.

There are a number of free/open source alternatives to MATLAB that are worth considering. Of these, the strongest is probably R, which focuses more on statistics than traditional numerical computing, but which can be used to do most things that can be done with MATLAB. Other contendors include Octave (which is a MATLAB “work-a-like” system- it runs most MATLAB programs), and Scilab.

Brian, we received a donation from a trustee (matched by her employer) that paid for the cost of five individual licenses (for the faculty) and a 50-user network license of both MATLAB and the Symbolic Toolbox. So as long as students are on campus and not trying to use the software the same time a class is using it, they will get free access to it. But I’m going to strongly encourage students to purchase the student version of MATLAB especially if they live off campus and/or plan on getting a math major or minor. At $100, that’s still quite a deal. (I’m also looking in to free or very-low-cost textbooks that would free up the money to spend on the student version.)

Also, when I brought this idea up with the university with whom we partner on the engineering program, their precise words were: “We don’t care how you run the course as long as you are using MATLAB.” So I might mention some cheap/free/open source alternatives for MATLAB (Sage is another good one) but for the course we pretty much have to use name-brand MATLAB in order to satisfy the requirements of the university course.

Hi Robert

Will you be posting any of the example MATLAB programs that you use? It might be interesting to recode them in something like Python/Sage to see how the free offerings stack up.

If you send me MATLAB code I am happy to give it a try.

Cheers,

Mike

I’ll probably be blogging about our experiences in the class generally, and I think MATLAB code will be part of all that. So yes, I think you can expect to see some actual MATLAB stuff showing up here.

Pingback: Some updates « Casting Out Nines