It's pretty tightly focused on getting the exact type of job that you've done recently. The work experience is a little jargon-heavy for a first-pass reader (e.g. HR) and a little achievement-light (with the caveat that a lot of what you're doing now, I understand that you have to be careful about how you reveal that on a resume.)

If you're looking for the same type of employment, it's probably fairly close to the right level of targeting (I'd "dumb" it down ever so slightly in case it gets passed around by HR, recruiters or non-technical managers.) If you're looking to broaden your search, that's where you might want to back up a step and think about how your projects addressed specific client/sponsor or organizational needs. It's the "solving of the problem" that counts more than the type of effort you put into it.

Education should move into last place. I'd remove both of the bullet points under your undergrad degree, just because they're not really pertinent to your resume so far beyond college. You *could* address that in a cover letter or interview if you think it could be useful.

If you want to retain a skills section, move it above education. That can arguably help some recruiters/HR types (and software that parses resumes) but you've already covered most of the technical skills in work experience. If you retain it, keep it short and sweet like you have it now.

I would personally recommend removing any section that talks about your personal interests or hobbies. It's not likely to help you in any way and it's possible that it could leave a negative impression with whomever reads the resume.

The cover letter is basically the e-mail to which you'd attach the resume. In most cases, you'll have better luck with targeted submissions, but even if you submit the resume blindly to a job site you'll usually get a 2nd chance. If you get contacted through a job site, then whomever makes the contact is your submission point for a cover letter.

Anything much more than "I see you have a job posing for $foo and I want that job" is pretty likely to be read by at least the recruiter if not the hiring manager, so it's a chance to explain how your work history relates to the job you want to do.

Skills sometimes used by people who don't have strong work history to show every skill they think they've ever used since they can't show specific activity in work history. I don't think you're lacking in terms of showing skills during work experience. It's sometimes useful to show buzzwords or round out a resume when you don't want to name drop *every* technology you've worked with. A smaller section is usually better--targeting skills that you can use but don't necessarily relate exactly to your work history.

Honestly, that can be helpful for recruiters and HR types as they may not understand *exactly* what you're saying, but they do usually have a list of specific things things they're looking for and a basic understanding of what they do. Explicitly saying "LabView" may be more helpful than saying that you "worked with various National Instruments software and hardware to build prototype that does xyz." The latter may be more accurate, but it fails the test for what the recruiter might be searching on.