Friday, May 22, 2015

The Computer Science major

Computer Science as a major has good employment odds.  Plenty of entry level jobs are open to grads with no experience, but hold a computer science degree.  There is plenty of room for career growth.  You can work for big companies or little startups.  There can be travel involved, there are always customers having trouble with the product, and someone has to go out to the customer's site and get things working. With some experience you can set up as a consultant and make a good deal of money.  Consultants have to buy their own health insurance, but the rates they command make that easy. 
   To be employable, you need to learn to program in the C language, and it's follow on, C++.  You also need Java, and Python.  Check the college course catalog and make sure they offer all four languages.  If they don't, think about another college.  Plan to take two semesters of each programming language.
   Back in the day, Computer Science used to offer courses in compiler design.  Don't bother, all the compilers ever needed have been coded by now.  Assembler language is also obsolete, the current compilers create code nearly as fast as the tightest assembler code, and  the compiler language is faster to write, easier to debug, and easier to maintain.  But, assembler is fun, I  did a lot of projects in assembler over the years and enjoyed them.  But I would not allow a project to use assembler today, I'd insist that it be done in C.
   You don't need all that much math to program.  Beyond algebra, a course in statistics is useful, integral calculus is useful, a lotta computer programs just do numerical integration.  But you don't have to be a math wizz to be successful in programming. 
   Courses in the "domain" are good.  Computer science treats the computer and the languages, it doesn't do much about the problems that computers are used to solve (the domain).  I'd get in a course in economics, and a course in physics.
  Computer Science will offer courses in software project management, but one is probably enough.  They have been pontificating about project management for 50 years, and we still have projects come in late, over budget and inoperative.  Look at the Obamacare exchanges.   
  

2 comments:

DCE said...

About the only time I use assembler these days is if I need really compact code for a microcontroller. Something I can fit into less than 1K of code space in assembler can take up to 4K in C.

I rarely have to do that these days as the code space on many micros is huge compared to the past.

Dstarr said...

The power and memory size of even the humblest microcontroller is incredible, compared to say the old 8048. Do you remember "Thru the Sieve" in Byte many years ago? The author coded up a simple benchmark program for every compiler he could find. He used to type the code in, standing in the aisle at computer shows, not owning every compiler in the land. He gave the best compiler (a PL-1 job as I recall) a rating of 1.0. He found the best assembler realization of the benchmark to be only 0.45. The worst compiler (a Cobol job) received a rating of 700 and some change. In other words the worst compiler generated code 700 times slower than the best one.