<p>
</p>
<p>You’ll be surprised :).</p>
<p>
</p>
<p>You’ll be surprised :).</p>
<p>^^ Then I guess I’ve just been luckier than you! I’ve met people who were no good, but not people who only wanted to be handed specs and produce code. I guess I was going on intent rather than results! :p</p>
<p>Specs are like speed limit signs… Imagine a product that was designed by committee of people who don’t understand how users think (because they’re all manager types and not Human Factors Engineers (on the side) like grandpa Turbo here). So, on a regular basis, the spec is nonsense, non-workable, not cognizant of the hardware and operating conditions we are dealing with in real life, and the like. Likewise, the software architecture is often wrong because the software architect that came down from the mountain with the stone tablets and UML diagrams is wrong. So, grandpa Turbo to the rescue again :)</p>
<p>As for ‘electricity and math’… funny. A decade ago I was working on a product that had a software component that was developed in Russia. So the vendor sends us two engineers to spend a week or two with us. Both were young engineers in their 20’s. But, they never dealt with real products, only PC’s. So the first thing we are showing them is how to flash the product, i.e. transfer the code you just wrote to the product to test it. That’s done via serial or parallel port (back then, now it’s USB or Ethernet or WiFi) So one of the young ladies asks us with a straight face “do you need to power on zhe box to flash zhe zoftware”??? My partner and I looked at each other, thought of telling them “no, just press the ‘Download to Target’ button and wait a while” but we did not have the heart… Of course you need electricity to flash the unit :)</p>
<p>I’ve spent half my nearly 30 year career writing software for PC’s and workstations, and the other half on ‘product’ software (the kind of gadget you buy at Best Buy) You’ll be amazed to find out what levels of idiot-proofing and error checking need to be coded in (the spec never mentions anything other than the ‘happy path’ most of the time) to make sure you get past user acceptance testing. Add wireless of any kind (3G, WiFi, BlueTooth) and your problems all of a sudden multiply ten fold.</p>
<p>
</p>
<p>Ha! I remembered linking two laptops via serial port to transfer files via laplink or to play multi-player Doom with a friend. </p>
<p>Also, used the parallel port to print stuff, back up stuff to zip/Sparq/2x CD-RW<em>, and in the case of an older 486 laptop…to install Win 9x/Office 97 via parallel-port based CD-ROm</em> drive because it didn’t have one of its own. </p>
<ul>
<li>I don’t recommend the use of parallel-port based CD burners/drives if you place any value on your sanity…especially at work. :p</li>
</ul>
<p>
</p>
<p>It depends on where you go to college.</p>
<p>When I used to tell people that my son was a computer science major, they would say, “That’s a terrible choice. All the jobs are being outsourced to India.”</p>
<p>But it turned out that most of what’s being outsourced are relatively low-level jobs. Young people with really good qualifications still have job opportunities available to them. </p>
<p>My son was at a flagship state university with a highly ranked computer science department. His classmates had no difficulty finding jobs. He chose a different path – graduate school. He left after getting a master’s degree (from another state university with a well-respected computer science program) and also had no difficulty finding a job. In fact, he was able to find a job that enabled him to continue to develop his skills in a very specific area of software engineering that was of special interest to him. And the salary is enough to live on comfortably.</p>
<p>So while I wouldn’t suggest a computer science major to a student who’s headed for a directional state college or other low-ranked school, if you’re going to a top school or to a slightly-less-than-top school with a good computer science department, go for it.</p>
<p>Really, what major has a better job prospects these days? I don’t see engineering; we stop producing and that hurts. I know plenty of liberal art majors who struggle mightily to find a good paying job. In my good conscience I wouldn’t discourage anyone who want to major in CS ;)</p>
<p>
Most of my brother’s business is teaching programmers how to talk to users so that they understand what they really want. (Or at least that’s what we think he does!)</p>
<p>Some jobs of course are being outsourced, but our kid had an amazing job offer from his summer internship. No complaints about his choice of major from us!</p>
<p>Frankly, I do not see any link between math and CS. I have been writing software for over 30 years, never had to use any math. Math is important only for engineering IMO, which was my first profession, which I never liked, just choose it because of being good at math. CS requires lots of practice writing program until you get used to certain way of thinking, just pure logic and common sense, but kids will spend ton of time in CS classes until they get it, it is a learned skill, if one feel excited doing that, if it feels like a game, they will get it eventually. If it is just frustration, then you are in a wrong field of study.
In regard to engineering and IT. Nope, we did not stop producing and doing lots of it on international market, yes, for China, Russia…etc. Contrary to common belief, they are not up there in quality department, the jobs are coming back here…lots of car amnufacturers are building facilities here, but not in traditional “Motor” places if you know what I mean, they build them in southern states, AL, TX, TN. Indiana is growing, any state that has sufficient non-union labor is in good shape for manufacturing bits. I know many engineers and many IT, we are all working. But yes, these jobs are not as secure as MD’s. I am on my job #9, but as long as you are open to any offers, you will find something. However, I advised my D. to go to Med. School and I use myself as example of job insecurity.</p>
<p>
</p>
<p>Not necessarily. </p>
<p>Whether a CS graduate’s career path is viable or not also depends on the state of the computer technology/programming field at the time of graduation, demonstrated skillset beyond the curriculum, and attitude. I knew plenty of 4.0 type graduates from schools like CMU, Cornell, and MIT who ended up being unemployed or had problems finding jobs upon graduation because of the dotcom bust in 2002-3. A few of these ended up being unemployed in their field for 3+ years…though some of that has to do with poor attitude issues such as off-putting arrogance. </p>
<p>Conversely, a graduate from a low ranked school may end up doing quite well if said school has a reasonably decent CS department and/or the CS student has a strong passion, drive, and talent…even if their cumulative GPA is barely a 3.0…and he/she happens to graduate when there are jobs available. Knew a few colleagues/friends from this group who ended up excelling in many high-tech firms/corporations…including several household names in the computer technology world. </p>
<p>
</p>
<p>You may be feeling that way because you’ve had such a strong mathematical foundation from having been an engineer. Consequently, you may not realize how its absence may seriously hamper an aspiring CS major’s ability to avoid being weeded out in the intro courses* or more seriously…being shut out of several sub-fields where a strong mathematical foundation is required such as cryptography or graphics. </p>
<ul>
<li>Most of the students weeded out of the intro CS courses taken by myself, HS friends, and colleagues were those who had inadequate K-12 mathematical preparation and/or were unable/unwilling to put in the work/time required in those courses.</li>
</ul>
<p>My son got his CS degree from a liberal arts college last Spring not “known” for their CS program–Colgate. He had no idea he was going to be a CS major when he entered college.</p>
<p>In the fall of his senior year of college he had a job offer from a top software company, where he is now employed. You don’t necessarily have to apply to a CS program in a school. There is a lot of information around here about both large and small universities that offer computer science degrees.</p>
<p>My advice would be that he take the AP CS class, because he thinks he’ll like it, and apply both to schools that require that he declare CS at the outset, and those that don’t. Then, by Spring–hopefully having some acceptances from both kinds of schools and having the class a little further under his belt–he can choose a path.</p>
<p>As a former CS teaching assistant, I would say that the reasons people failed intro CS courses were:</p>
<ol>
<li><p>many people are not cut out to write code. They are too structured and think that because they memorize the basics and can derive the next steps, they can write the next super App. Not so.</p></li>
<li><p>many people do not possess the ability to (at the same time) see the forest and the trees. They can, one or the other. Not both.</p></li>
<li><p>many people do not pay attention to the very intricate detail of writing code. </p></li>
<li><p>lots of students are too afraid to experiment or redo their assignments 2 and 3 times till it’s right. Not quitting when it’s right. Computer programs are rarely done.</p></li>
<li><p>most people fail because when the programming gets serious, they do not possess enough general or domain knowledge to understand what the problem is. </p></li>
<li><p>people do not want to put in the extra hours. Self explanatory.</p></li>
<li><p>Most people are not super creative. A lot of times the obvious does not apply, so something quite off the wall is needed.
: : : : : </p></li>
</ol>
<p>I could write all day about what makes people bad coders, but if I could pick one factor that determines success, it would be the constant need for improvement and thirst for knowledge. If your student does the work and gets the A’s but without ever bothering to look deeper than the assignments or tests, that’s not a good sign.</p>