We start classes this week, a bit later than most other folks thanks to our January term. That means the long-awaited MATLAB course will be formally kicking off. I’ve had a few people ask me about what we’re doing in this course, so here’s an update.
This has been a tricky course to plan, because the audience is definitely not the usual one for an introductory MATLAB course. Almost all the introductory textbooks and materials I reviewed for the course, and all the introductory MATLAB courses I looked at from other schools, have a particular student demographic in mind: they are all engineering majors; they are all freshmen or sophomores with either a semester of programming under their belts or at least a very high level of comfort with computers and the “guts” of programming; and they are all attending large universities in which the particular academic makeup of the institution plays little to no role in how the class is designed.
By contrast, of the 15 students enrolled right now in my course:
- 9 are freshmen; 5 are sophomores. (At least that demographic fits the profile.)
- 5 are Education majors; 3 of those are secondary education majors, the other 2 elementary education majors. There is one lone Pure Mathematics major. 9 have no declared major at all.
- Of the 9 undeclareds, two of those are students who are pursuing our dual-degree program in Engineering and just haven’t gotten around to filling out the paperwork yet.
- But that’s it: Two undocumented engineering majors; NO science majors. The plurality are Education majors, and once the undeclareds get around to declaring, this may become the majority.
- I don’t have data for this, but I am pretty sure less than half of the students have ever had any exposure to programming whatsoever. I wouldn’t be surprised to find out it’s more like 1/5 of the class with no programming experience.
- Again, no data, but I think a good portion of the students would not consider themselves comfortable around computers once we start talking about something besides basic office apps and web pages. For example, anything having to do with typing stuff into a command line. (Like much of MATLAB.)
So this is not the audience that is “supposed” to be taking a MATLAB course. They are not (for the most part) scientists and engineers, and if you start throwing the details of fprintf, memory addressing, floating point arithmetic, and so forth to them you will likely lose them.
And yet — and this has been the frustrating thing — almost all introductory MATLAB materials assume students are engineers and scientists who have no problem being thrown directly into learning about fprintf, memory addressing, and floating point arithmetic. I won’t name names or authors, and these are not bad books, but they are written with a particular assumption in mind about who is using them. And that assumption does not work for my class.
Therefore I have had to do a lot of remixing and retrofitting of existing materials in order to deliver what I think is a solid intro MATLAB course, one that I honestly think satisfies the same learning objectives as the course at our partner university (which uses one of those books I mentioned above, and it works for them because they have the “right” audience for those books), but also one that really works for the decidedly non-MATLAB-like group of students I will have.
I’ve tried to adhere to a few basic design principles when drawing up this course:
- Get students comfortable with the software and how it works before throwing them into programming. But: Don’t wait too long to begin programming.
- Connect use of the software back to the mathematics courses they know: namely Calculus I and Calculus II. (The course is a prerequisite for Calculus III and is usually taken alongside Calc II.) And take it very easy on any other kind of math in the course.
- Get them doing plots and working with data from Excel files early and often. Pictures and data: Students dig these.
- Make heavy use of the Symbolic Toolbox and get them using it early as well. And by “Symbolic Toolbox” I really mean MuPad, not the nearly-indecipherable symbolic manipulation done inside the MATLAB command line by calling the Symbolic Toolbox. This is actually quite different than how most intro MATLAB materials do it; if you see the Symbolic Toolbox at all, it’s the last chapter of the book and MuPad is never mentioned.
- Take it easy on the science content of the course and instead emphasize use of MATLAB on topics with which the majority of the class is familiar and comfortable. In the canonical audience, that would mean precisely that a lot of science ought to show up. For us, not so much.
- Have fun first, foremost, and throughout. Remember that many of the students in the course are not only unfamiliar with computers (aside from using them to check Facebook or use a word processor) but are actually scared of them — probably a greater portion of the class than will let on to it. Keep it light. If something looks more confusing than useful, it probably is; and unless there’s some compelling reason to hack through it, just drop it and cover something else.
I think that with these principles in mind, a lot of MATLAB purists would look at my course and sniff at it, thinking it’s not a “real” MATLAB course. It certainly will not walk or talk like the MATLAB course you’ll find at the typical Big Engineering School. But we’re not a big engineering school; we’re a liberal arts college, and the Liberal Arts informs what we do in every course, including a MATLAB course. I guess I am not trying to create a course that in turn creates more MATLAB purists. I am trying to create a course that shows students that programming is a great application and instantiation of critical thinking and problem solving. If they don’t know all the command line options to fprintf, but later on when confronted with a problem they first thing they think is to try out some MATLAB code to solve it, I think we’ve had a successful experience.
That’s an overview of the philosophy and design of the course. In another post, I’ll talk about the course schedule, assessments, and plans for what we’ll do in the class. This gets interesting because, as mentioned above, we’re not really using a book but rather just McGyvering a bunch of pre-existing resources to fit our particular needs.