Succeeding in most engineering courses is a matter of memorizing material and passing an exam. Some courses will have lab exercises, but most of these boil down to following a predefined list of instructions as closely as possible, and collecting the highly predictable results.
To me, engineering is about applying knowledge to solve problems. Memorizing equations wont help you much with this, nor will repeating a list of steps. To get experience solving problems, you need real problems to solve.
This is where engineering student teams come in. These teams usually operate as extracurriculars, with only a handful of students participating.
These teams tackle problems that range from building a race car to designing nano-robotics. They need support with everything from software development to business and fundraising. My experience with student teams has been the most valuable part of my undergraduate education.
I joined the University of Waterloo Alternative Fuels Team in my first year. At the time, the team was working on developing a hydrogen-electric plug in hybrid vehicle. A real challenge to solve a real problem.
I learned about embedded development, power electronics, powertrain modelling, automotive repair, and much more. I had access to costly hardware and software, including a prototype General Motors fuel cell stack. Not through a course that I was paying for, but through a small, dedicated group of students.
Aside from the hands on experience, I have had the opportunity to travel, meet people, and work with a team. I found that employers value this experience, which leads to internships and job offers.
You can go through an undergraduate degree by jumping through the usual hoops. You’ll still get the same piece of paper. But the only way to get real experience is to actually do work in your field. If you’re in university or headed there, find a team with a project you like and get the full value out of your tuition.