Software for Teaching and Learning

See links below for demonstration packages along with some suggested projects for students. Pages linked below include learning objectives and discussion of some background material. Topics covered are in the Signals & Systems area of Electrical Engineering. Also included below is a discussion of pedagogy for teaching in the Signals & Systems area. Specifically, programming assignments are encouraged to help students better understand the mathematics of signal processing and how to implement such systems.

- Contrast Enhancement: Demo and Project
- Median Filtering for Image Enhancement: Demo
- Median Filtering and Orientation Measurement via Least-Squares: Demo and Project
- 2-D FFT & Fourier Optics: Demo
- 2-D FFT for Object Recognition: Demo and Project
- 2-D DCT & JPEG for Image Compression: Demo
- Hough Transform: Demo

## Teaching & Learning Tools

Two types of teaching & learning tools are provided through this site: - Demonstration tools, for lecture & for students' independent use, and
- Programming projects for students.
In the Signals & Systems area of EE, engineers face a career-long need to translate mathematical operations into system realizations. The demonstration tools available at this site help introduce important mathematical concepts for Signal & Systems. The programming assignments provide an opportunity for hands-on implementation, and are highly recommended for student learning, to promote in-depth understanding and design skills. A variety of learning objectives are addressed in the demonstration suite and in the associated student programming projects. Some overarching themes are: - Visualizing relationships between time and frequency domains, including a variety of transforms and representations (Fourier, Laplace, Z, Bode, Root Locus, Nyquist).
- Predicting conditions in one domain, given information in another.
- Predicting the effect of mathematical operations on signals, images and systems.
- Predicting the effect of parameter changes in signal processing.
- Translating mathematical operations into software-based implementations.
The demonstration tools have proven useful to encourage students to ask "What If..." questions, promoting active classroom exchanges. Some of the demonstrations incorporate live signals from microphones or video cameras. To facilitate classroom demonstrations, these tools were designed to be relatively simple to use and each is relatively narrow in focus. Links to the various tools appear below. This is an on-going development effort and learning objectives with supporting input files & signals are provided in general. These learning tools were development using the CalPoly SIPTool environment which was created by Dr. Fred DePiero. Programming assignments are recommended for student assignments in order to fully appreciate the learning objectives promoted by this site. |

## Programming Projects Important for Student Learning

The demonstrations available from this site assist both in lecture and with students' independent learning outside of class. While the demos are helpful to illustrate concepts, software implementation in a language such as C is considered essential for student learning. This provides an opportunity for students to translate mathematical operations into system realizations. Tools such as MatLab and DaDISP facilitate rapid analysis, testing, and implementation. Some educators might ask, - "Why bother with C programming for DSP?", "Why not just use MatLab?"
These are appropriate questions. To respond, consider similar questions in the context of a typical EE curriculum... - "Why bother building or analyzing circuits?", "Why not just use PSpice?"
- (
*And why not ask?*) "Since we have calculators, why teach arithmetic?"
There are simple answers to these questions! There are real
implementation issues, not captured in a simulation: A chip explodes!
A program crashes! Divide zero/zero! And, more importantly, analysis and
hands-on experience with implementation provide a learning opportunity
that promotes a higher level of understanding (in Bloom's sense). This
helps a student abstract from particular experiences. Computational tools such as MatLab already implement exactly what a student needs to learn! It is these very steps that students need to master via a hands-on implementation experience. Hence some opportunities to build future design skills are not fully exploited without a more detailed implementation experience, such as with programming. Hardware designs at the level of a block diagram, with adders, multipliers and delay units are a nice compliment to programming assignments. A good environment for student learning starts with interactive demonstrations, run both in-class and independently outside lecture. These are beneficial first steps to a student's own implementation of a project via a detailed programming assignment in a language such as C/C++. Some learning objectives described on this site can not be met without the programming experience. The use of standardized tools such as MatLab is also recommended to test and verification - but not to replace the detailed implementation of a C program. Free software is available for student programming assignments. This package allows students read and write WAV files and BMP images. It also provides some numerical routines for FFT, finding eigenvalues and vectors, matrix math and to generate random signals. Tools are included to display short-time Fourier transforms and to display the frequency response of a system, which may be helpful for debugging DSP programs. |