Gas station without pumps

2011 June 30

LaTeX: essential skills for engineers

Filed under: Uncategorized — gasstationwithoutpumps @ 09:52
Tags: , , ,

I’ve been thinking that the School of Engineering ought to have a required freshman seminar, like the required 200 course for grad students, that teaches the basics of how to be a college student.  One thing I would require in such a course (as I have required in 200 for several years) is that students learn to use use $\LaTeX$.  I’ve long thought it an essential skill for math and computer science majors, but the more I see bioengineers and electrical engineers producing crappy documents in Word, the more I realize that all engineers would benefit from having a document system that can handle math and properly referenced figures.

One thing that prompted this observation was the post on Engineer Blogs, She’s got the look, in which a young engineer (a mechanical engineer, I believe) found out the hard way that $\LaTeX$ is much better for theses than Word.  Several other young engineers have commented on that blog, most agreeing that Word is totally unsuited for theses and other documents that need to be formatted properly and edited through many revisions.  A few have had trouble with the document-compiler nature of $\LaTeX$ and recommended front-ends like LyX.

There is a startup cost to learning $\LaTeX$, so the sooner we start students on it, the more that cost gets amortized.  We can’t count on high schools teaching it (though the Art of Problem Solving  online classes require it for their middle-school and high-school students—they even have a gentle tutorial for youngsters).  It seems like a freshman seminar (required also for new transfer students) would be the best place to put such instruction.

What else should be included in a how-to-be-an-engineering-student course?  A little Python with NumPy?  Some soldering? UNIX command line utility programs? Definitely some search skills from the librarians!

17 Comments »

1. I think the problem is that many faculty themselves don’t like LaTeX, so they’re not going to mandate it when their students will later question their judgement.

(BTW, I’m an EE.) :-)

Comment by Cherish — 2011 June 30 @ 10:01

• Yes, I would expect the greatest resistance to LaTeX to come from EEs, most of whom have not even bothered to learn Unix commands. I don’t know why the EEs are the most computer-phobic faculty around, but they seem to be.

Comment by gasstationwithoutpumps — 2011 June 30 @ 10:38

2. Lab and shop safety. I think learning production techniques is important generally for engineers (and scientists and artists), but there are too many areas to cover to have a single course for all fields. Better to offer frequent classes (not necessarily for credit) targeted to particular needs. Everyone needs to get the safety info though, & course could perhaps also acquaint students with the various standards organizations. I can think of a few times as a grad student when I should have just looked for an existing standard. Some knowledge of configuration control would also be good, at least that they exist and what they can/can’t do.

Comment by kcab — 2011 June 30 @ 10:48

• “Production techniques” is too broad for a course that should include bioengineers, computer scientists, electrical engineers, bioinformaticians, game designers, and robotics engineers (I’ve left out information systems management—I have a real hard time thinking of them as engineers even stretching the definition to the breaking point).

Same thing with standards organizations: good for a narrow field like EE at the junior or senior level, but not really appropriate for a freshman seminar (unless your goal is to bore them so much they leave the field).

I’m not sure what you mean by “configuration control”. What I see about it on Wikipedia sounds like it is more a management technique than an engineering one, suitable for people training to be IT staff, but not so essential for most engineers.

Comment by gasstationwithoutpumps — 2011 June 30 @ 13:39

• Somehow that last reply didn’t nest correctly, so we’ll see if this one does.

Yes, production techniques is too broad, that’s why I said it shouldn’t be in a single course for all fields. Soldering is a production technique, as is using a drill press (another thing that everyone should know how to do).

Standards and certification organizations – they should know that these exist. No point at going into detail.

Configuration control, source control, configuration management – these are broadly useful. I think of them all as different names for the same idea: keeping track of changes to work you’ve done. I’m sure you use source control. I even use it for my recipes. Having source control could have saved me some desperate time in courses, and group projects would benefit from use of some kind of configuration control.

Comment by kcab — 2011 June 30 @ 14:41

• Ah. I distinguish between source control and configuration control. One is an archive that allows retrieving old versions, the other is for maintaining uniformity across many instantiations. Source-code control (using GIT, SVN, or CVS) is probably worth teaching in a freshman course, as is the use of “make” for recording exactly how computational experiments are done in a repeatable way.

Comment by gasstationwithoutpumps — 2011 June 30 @ 16:42

• Lab and shop safety—definitely. One of the reasons I split off our how-to-be-a-grad-student course from the rest of the School of Engineering was to include wet-lab lab safety training. Undergrads should probably have at least one lab-safety training a year—certainly any time they start work in a new lab.

Our School of Engineering does not provide much shop training. There is no student shop, just occasional student use of the professional machine shop. I see this as a big hole, which probably needs to be remedied now that we have Robotics Engineering as a major.

Comment by gasstationwithoutpumps — 2011 June 30 @ 13:43

• While I agree that lab and shop safety is important for many fields of engineering, computer scientists don’t have much need for it (and CS is a big part of engineering). We work with maximum voltages of 5-12V at relatively low current – certainly less than a ringing phone line, which is highly unlikely to kill you (from personal experience…). Laser (pointer) safety and common-sense electrical safety are important, but they should be required for *everyone*, not just engineers.

Comment by elm — 2011 July 1 @ 12:34

• Although the voltages and currents used in computer circuitry are unlikely to do much harm, there are other aspects to lab safety that are worth mentioning to CS students, such are ergonomics for computer workstations and burns from high-temperature parts (including some laptops!). Many freshman don’t know yet whether they want to be in computer science, robotics, or computer engineering (as most freshman have no idea what any of these fields entail). So a good freshman seminar would prepare a student for any of these, which could include some slightly hazardous shop work (soldering, cutting wires, using the laser cutter, …).

I can think of several people who need training in using a laser pointer safely. There have been several presentations when I wanted to go to the front of the room and rip the pointer out of their hands before they blinded someone in the audience.

Comment by gasstationwithoutpumps — 2011 July 1 @ 14:09

• Have you seen the maximum currents in modern processors? It is hundreds of Amperes! An Intel i7, for example, has a max current draw of 145A. The average is much less (~1.1A), but this is why they also decrease supply voltages (to reduce power P=IV). It only takes a few mA across the heart to kill you.

I do agree, however, that most CS majors won’t be attaching conductors to their i7 processor. :)

Comment by Matt — 2011 July 1 @ 14:14

• No, my electronics play is limited to old processors (like the ATMega328 in the Arduino). When I’m dealing with larger currents, it is for motor drivers using H-bridge chips. I did look up the i7 datasheet, and you’re right that they spec the max current at 145A. The “Thermal Design Power” (which is not the maximum power the chip can consume, but the most it is likely to sustain) is 130W, at which point the case has to be kept down to 67°C. No wonder the chips have built-in thermal control to keep from melting themselves!

Comment by gasstationwithoutpumps — 2011 July 1 @ 14:36

3. Shop safety absolutely should be taught to everyone, at some point they’ll all probably end up *in* a shop, if nothing else. Chemical & biological hazards safety applies to far more than just the obvious engineering majors too, at some level. Most importantly though, if nothing is ever said about safety then it does not appear important to the faculty, which is not a desirable message.

Comment by kcab — 2011 June 30 @ 14:21

4. I will second learning ANY scripting language and Unix skills. However, it is hard to teach these in a class, because students won’t grasp the importance or get sufficient practice. In fact, it is possible to alienate them if it is too boring. They will just think “oh, that boring unix stuff — everyone uses windows!” Most of my skills were learned while working in the computer department writing web scripts and the like. That skill, however, has been the single most worthwhile thing that I learned in college. It helps me get any job done about 10x faster than the average person.

To combat this, I keep a wiki page of some common Unix utilities (find, cut/paste, grep, diff/patch, gdb, etags, gprof, etc.) for my group and encourage students to review this frequently. Or if they have a task to which one of these applies, I point them to the wiki!

Comment by Matt — 2011 July 1 @ 08:32

• I think that learning a scripting language (more specifically, Python) is a very useful skill for any engineer, but requires more time than a freshman seminar that should cover many different things. Learning LaTeX and some HTML can be done in a couple of assignments (at least to the point where students are no longer afraid to try it), but a programming language like Python takes more time.

Which unix utilities to teach is a bit of a puzzle, because everyone I know has a different subset that they use routinely. I tend to end up using grep, sort, find, awk, and sed both directly, and (more commonly) from inside make files. I also used find and grep indirectly through the emacs commands that invoke them.

Comment by gasstationwithoutpumps — 2011 July 1 @ 09:51

5. I used to be a big fan of LaTeX, but fell out of the habit when I moved from academia to industry. I have never met anyone in the software industry who has even HEARD of LaTeX. Skills in Word and Excel (blech) are critical in that world. It was a problem for me because my skills in both were really lacking. Now I am back in academia, but still no one seems to use LaTeX. I thought maybe it had died. I am glad to hear people are still using it.

Comment by BKM — 2011 July 5 @ 05:24

• LaTeX is still going strong, but not everywhere. People rarely find it on their own—they need to be taught it and pushed a little in the beginning to get over the initial learning cost. It pays off afterwards, which is why I think that it should be part of a freshman seminar.

Comment by gasstationwithoutpumps — 2011 July 5 @ 09:11

6. Windows has a command line, although many people never use it. I think engineers and scientists who use Windows –and often they will be forced to — should learn basic commands such as dir, findstr, cd, mkdir etc. In homes with Macs and Linux machines, youngsters can learn Unix first, but in homes with Windows PCs, familiarity with using a Windows command line may make it easier learn the Unix command line later on.

Comment by V.R. — 2011 July 6 @ 13:33

This site uses Akismet to reduce spam. Learn how your comment data is processed.