Picking up CS really late.....Advice

BCEagle91
Sun, 20 Dec 2009 22:27:49 +0000

To answer (a) it seems to me in my job hunt, I may be able to get a
phone interview for a developer job, but whether I have the actual
programming knowledge to comfortably perform the job let alone get
the job, remains to be seen.



Some CS programs will provide you with a core set of programming
skills in C++, Java, Scheme and Python while others will will provide
you with programming skills in products (as in your reference to
VB.NET). The idea of the former is to provide generalized skills for
your career while the latter will give you an edge in getting a job
with a specific skill.

There are lots of jobs out there for CS or CIS grads that have a
laundry list of skills. Your typical grad won’t have those skills
unless they are the generic skills that grads have. Employers have to
take what’s available so you might have a shot if you have some of the
things on their lists.

I would suggest doing the interviews; if you are offered a job for the
spring, then it might change your direction.



To reply to (b) The B.A. simply requires I take Discrete Math, above
and beyond the calculus I already have for my business degree.



Most CS programs that I’ve seen require at least calculus 2; my son’s
program requires calculus 3 and mathematical statistics. Some programs
require linear algebra and differential equations. Some students have
trouble with Discrete Math because they haven’t seen proofs before.



I do realize that the theoretical classes I must take for CS like
Automata and organization of programming languages, etc…, will
require math I am uncertain as to whether I have done that sort of
math or how hard it is to learn that type of math.



You can go to the MIT OCW (Open CourseWare) site to look at materials
and problem sets of the types of math needed for computer science.
Much of it may be unintelligible to you at this stage.

The way to determine if you can do the math is to try to do it. You
could try Discrete Math or Calc 2/3 to get an idea as to your math
abilities. You should run into proofs in Discrete Math or Calc 3. You
should run into some abstract algebra in Discrete Math. If you feel
comfortable with those subjects, then you have a good shot at
succeeding in Computer Science.



The reply to (c) is in short I have good enough grades to get in to
a grad CS program but I would need to take at least 4-6 undergrad CS
classes before I could start actual grad school. So essentially I
could get in to a program provisionally. I am not sure if grad
school is for me though.



The graduate program will move faster than the undergraduate program
and should provide you with a broader range of computer science topic
areas. It will provide a more marketable degree. You could just take
the 4-6 undergrad CS classes to see how you would fare in the CS world
and then continue with the graduate degree if you liked it.



The CS program at my school explains the theory classes as classes
necessary to make you a better and more efficient programmer. This
is not out of my mouth, its straight from my professors mouth.



These courses can make you a better and more efficient programmer but
they aren’t necessary for most real-world programming work. There are
very useful if you’re working on engineering software systems where
performance is very important but there are vast amounts of programming
where performance isn’t that big of an issue.

Facebook presents a good example of this where they use PHP for a lot
of their programming. The Facebook Slashdot entry for today talks about
the environmental impact of Facebook running PHP instead of C++ at
49,000 tons of CO2 per year.

[Presentation Summary “High Performance at Massive Scale: Lessons Learned at Facebook” Idle Process](Presentation Summary “High Performance at Massive Scale: Lessons Learned at Facebook” | Idle Process)



The question is (A)Will this hurt my career,



I don’t think that taking additional CS courses will hurt your career
but an interviewer might consider it a bit odd to do a combination
CS/CIS degree. I think that CS majors tend to be math people and I
generally see CS degrees combined with math, physics, and electrical
engineering.



and (B)Is an average math student/decent programmer with a lot of
passion and dedication, good enough to complete this degree.



I think that you need to be a better than average math student to
complete the CS degree. At my son’s school, the CS completion rate is
under fifty percent. I can’t compute it exactly due to transfers in
from community colleges but a lot of students find that it is
tough. My son has a friend that dropped from CS to CIS because he just
couldn’t pass the mathematical statistics course (I think that he
tried it twice). The stats course required for CIS was a lot easier.

I’m presenting a devil’s advocate case here. I hope that I’m not
coming across to negatively but I do think that you should know what
you’re looking at doing. You can probably gauge how well you will do
overall by taking a few of the math courses required for the CS
degree.

BTW, I have a CIS undergrad degree and an MSCS so I went through this
process via undergrad/grad. I did a lot of consulting early on and it
was a lot of fun working at a variety of companies doing a variety of
things. You generally don’t get those opportunities working in
software engineering (there was a long discussion on that a few months
ago here). I switched over to engineering many years later and that’s
provided for much more stability - something that’s nice to have when
you’re raising a family.