Following is an example of making and polishing contour lines from a LiDAR DEM. ESRI commands will be shown in boldface. You might guess that ARC/INFO Workstation is not case-sensitive. This site will soon be lavishly illustrated, unless I get distracted.

Why contours? Computers cannot do much with contours. They usually convert them to another structure such as a rectilinear DEM, a TIN or terrain, or flowtubes before doing any real work. Contours are primarily a means of visual display, and they are less common now that shaded-relief images, as well as 3D renderings, can be easily created. Computer-generated contours will not look as good as the contours on those topo maps that you grew up with, though I will show how to make them look pretty good.

Moving right along, download your tiles and import to ARC/INFO. e.g.
import auto q47123b11be.e00 q47123b11be
import auto q47123c13be.e00 q47123c13be
Now merge your tiles and smooth the DEM. The more you smooth the DEM, the better your contours will look. A three-cell radius is conservative.
grid
setwindow * Q47123C13BE
SM3 = focalmean(merge(Q47123C13BE,q47123b11be),circle,3)
Now create your contours. One-meter contours are pretty aggressive. (Note: if you are working from 10-meter DEMs created from 40-foot contours, you will get decent results only if you specify an interval of 40 feet = 12.192 meters.)
CONTN = contour(sm3,interval,1) /* 85679 KB
For our small area, the contour coverage is (in ARC/INFO format) 86 megabytes! So open the coverage in ARCEDIT, use the Douglas-Poiker algorithm to drop any vertex that bends a line more than half a meter, and eliminate pseudo-nodes (topological nodes that should be vertices because only two polylines meet there.)
ae; ec contn;ef arc;sel all;generalize 0.5;unsplit CONTOUR /* 14335 KB
This drops the file size to 14 megabytes. Now let's eliminate tiny closed contours. This is complicated, as we need to create polygon topology and establish a database relate between the table of arc (polyline) attributes and the table of polygon attributes. Here we conservatively discard only those polygons smaller than 25 square feet.
clean .01 6
relate add;left;contn.pat;INFO;LPOLY#;contn#;linear;ro
right;contn.pat;INFO;RPOLY#;contn#;linear;ro;;
sel left//area < 25. ; resel left//area > 0 ; delete
sel right//area < 25. ; resel right//area > 0 ; delete /* 14310 KB
sel all ; put contnsm
quit no
We put the lines into a fresh coverage because we do not need to preserve the polygon topology. There is a small improvement in file size. Washington state can be a difficult place to live. We are split between two UTM zones and there are different projections designed for the northern and southern parts of Washington. (And don't get me started on datums!) The Puget Sound Lowlands were griided in the stateplane northern zone (which officially covers most of Puget Sound) but we have a user who wants contours in the southern zone. The only good news is that lines can be reprojected without (except for long vertexless lines) any distortion. There are a couple alternatives to the full dialog, but one choice is: project cover contnsm conts
INPUT
Projection STATEPLANE
Zone 5601
Datum NAD83
Zunits FEET
Units FEET
Parameters
OUTPUT
Projection STATEPLANE
Zone 5626
Datum NAD83
Zunits FEET
Units FEET
Parameters
END
Oddly, export from ESRI coverages to DXF format for CAD no longer seems to preserve elevation values, so I have saved the data to dwg [R2000] format. So here is your dwg file, Mr. Severs. Z values are named "contour" and are the last attribute of "conts arc"