This is a lab course. What you learn is heavily dependent on doing exercises in MATLAB (or its free software near-equivalent Octave). There are several reasons for this:
MATLAB is widely used in signal-processing research, and so learning MATLAB will also give you access to an enormous amount of relevant software written by researchers in many subdisciplines (here is one list). For example, in one of our course exercises, we'll feature a simple application of Independent Component Analysis, for which a free MATLAB package is available from its authors. The course's lecture notes (here is the old edition) are based entirely on MATLAB examples.
Octave is a free software (GPL) language that "mostly compatible with Matlab" (see this link for a further discussion of (in)compatibilities). There is a good manual in html and print form. You can download Octave binaries for Linux and Windows here. A large proportion of the course material will work in Octave -- I'll try to make that proportion as high as possible, and will try to flag any problem areas with suggested work-arounds where available -- and so Octave is a good option if you want to do work for this course on your own computer.
The reason to consider that option is that MATLAB is expensive: a single standard license for the basic program and a selection of "toolboxes" such as those used in this course can cost several thousand dollars. A individual student license is substantially cheaper but still will cost $99 for the basic system, and more for the various relevant toolboxes. You can order student licenses at the Computer Connection -- be sure to get "release 13" if you are running Windows XP. Buying a license is probably worthwhile if you plan to do significant amounts of signal processing yourself, but many of you will probably not choose to install MATLAB on your own machines, and instead will use it on one of various Penn-owned computers.
MATLAB (and the toolboxes we'll use) is available on the computers in the various CETS computer labs (map of lab locations), and in some other labs on campus. In addition, I've bought four "floating" licenses for PCs and linux boxes in Williams 623. Some of these licenses may be allowed to "float" to machines at IRCS if there is demand.
Everything that we do in MATLAB in this course could of course also be done in other computer languages/systems. In particular, any interpreted language that can easily do arithmetic on vectors and matrices, and gives access to a reasonable library of mathematical functions, would work. A reasonable choice, for example, would be the free software statistics language R. For example, someone has re-implemented the FastICA code (referenced in the first paragraph above) in R. However, this is far from being the norm: R is not widely used for signal processing at present, and the level of support for such things in R is therefore poor compared to MATLAB. If you are already familiar with R, you are welcome to use it for any of the exercises in the course where you can find or provide the necessary capabilities. But in any case you should learn something about MATLAB, just so as to be able to understand available programs written in it.