Opinion on Computer Sci. and computer majors

<p>My son's HS will start a brand new AP Computer Science class this coming fall. A math teacher, with a minor in C.S. at least a decade ago, will teach this class. Honestly, I am very doubtful how the class will turn out especially in its first year.</p>

<p>S, a current sophomore, is considering a computer related major, C.S., software engineering.... He has no knowledge of any programming language. His only experience would be the few computers he had built from scratch.</p>

<p>Would it be too late for S to take this AP C.S. in his senior year (year two for this class) to decide his major? Most college applications are due around Nov., meaning he is only 3 months into the C.S. class. But, if he enrolls this coming Jr year, I am not sure if he will be able to learn much. Or, the teacher might be so inexperienced, making S give up on c.s.</p>

<p>This is no other computer class in his HS. I always wonder how did the past students from his HS major in computer without ever taking a computer class? Is basic computer knowledge not required in order to major in it?</p>

<p>I myself is computer illiterate. Any opinion will be appreciated.</p>

<p>CS degree programs include introductory courses designed for people without previous CS or programming experience, although students who have had that will find it easier.</p>

<p>Here is a classic introductory CS textbook; the examples and exercises can be done on a free Scheme language interpreter that can be installed on a home computer:</p>

<p>[Welcome</a> to the SICP Web Site](<a href=“http://mitpress.mit.edu/sicp/]Welcome”>http://mitpress.mit.edu/sicp/)</p>

<p>A version of the book using the Python programming language is here:</p>

<p>[CS61A</a>, Spring 2012 Online Textbook](<a href=“http://www-inst.eecs.berkeley.edu/~cs61a/sp12/book/index.html]CS61A”>CS61A, Spring 2012 Online Textbook)</p>

<p>Worldmom,</p>

<p>for what it is worth, in my experience (around 2 decades ago :)), I instantly knew that I liked Computer Science. </p>

<p>Also, usually Computer Science classes in High School involve learning structured programming - something that existed more than a decade ago, so a motivated teacher should do fine in that area even with not keeping with latest advances.</p>

<p>In addition, does your son have to declare a major when he applies to the school of his choice?</p>

<p>He might well be better off just teaching himself to program. My older son got some initial guidance from his Dad who taught him a little BASIC when he was seven. He took off from there on his own. He learned Java (which is what is taught in AP Comp Sci) in summer camp in 7th grade. My son took AP Comp Sci as a freshman and said it was basically a waste of his time, but it did demonstrate for the official record what he knew. </p>

<p>I’m sure the teacher can teach him the AP curriculum.</p>

<p>He went to Carnegie Mellon for college - the School of Computer Science does try to accept a handful of strong math students that haven’t been exposed to computer programming, but more typical are kids like my son who have lived and breathed computers for years and years.</p>

<p>You certainly don’t have to declare yourself as a computer science major at every school - but at Carnegie Mellon you actually have to apply to the School of Computer Science. It’s easy to transfer out though if it turns out to be a mistake.</p>

<p>Is there somewhere where he could get a summer experience in computer programming?</p>

<p>When people try programming, they usually know pretty quickly whether they love it or hate it. That’s the most important thing your son needs to know right now. </p>

<p>If he does like it, then he may want to get some more extensive experience – such as AP computer science if it’s decently taught at your high school.</p>

<p>To OP - Does your high school have a computer club? Many schools have these, and students teach themselves and each other before entering competitions, even if they do not take the formal classes.</p>

<p>lerkin:</p>

<p>“a motivated teacher should do fine in that area even with not keeping with latest advances.”</p>

<p>Good to know that. I always thought computer tech. is advancing so fast, without constant updating oneself or working in the field, one becomes a dinosaur (just like me).</p>

<p>S is actually thinking either computer field or healthcare/med. I want him to know which path to go before applying for colleges. But, I thought on college applications, the student has to declare a major?</p>

<p>ucbalumnus:
Thanks for the links. My S mentioned a while ago he will search for some free sites to learn basic programming this coming summer.</p>

<p>Worldmom,</p>

<p>I said what I said because most likely she will be teaching structured programming which did not change since the time I was in learning it (around 2 decades ago).</p>

<p>RE: declaring majors. It depends on the University. Some require, some don’t.</p>

<p>He doesn’t need any prior computer experience to major in CS. Colleges have courses at the appropriate level for him to learn it. It’s nice to have the prior experience but he doesn’t need it.</p>

<p>He should also realize that this one HS course experience with this one teacher teaching it isn’t the end-all of CS so it’s actually possible for him to have a bad experience with this HS course and still go on to CS and enjoy it and do well.</p>

<p>CS majors typically have to decide quite quickly that they’ll be a CS major and many colleges require that the person apply with declaring the major or at least declaring they want the school of engineering where the CS might be. </p>

<p>If he ends up thinking he probably wants CS he could enter as that major and then if he doesn’t like it he can switch out to another major. Many of the classes he takes in the first semester/year will apply to lots of other majors (but the converse isn’t as true).</p>

<p>He might take a look at the free online Udacity courses. CS101 would be the one to try; they’ll be offering it again starting in April.</p>

<p>Heck, back in the old days, there were no courses in CS at any high school and we all managed. Even now, since cs in high school is far from universal, experience is not required. That having been said, some exposure to programming would be a good idea. There are lots of folks who think they are interested in CS who change their minds pretty quickly when exposed to the reality of what is required. The AP course is not difficult to teach so I would expect a reasonable teacher to do just fine. He could also try some do-it-yourself programming or an online course or a summer course.</p>

<p>Software engineer with bachelor’s and master’s CS degrees chiming in here.</p>

<p>If AP CS is Java, that sounds like a decent reasonably modern starting point, and I agree with other members that the teacher may be fine to teach it.</p>

<p>I got my BSc (Hons) in the 70s - the keypunch era when many universities didn’t even have this major yet. I took time out from my career in the 90s to be a full time grad student, and promptly found myself TAing undergraduates. It was amusing how my undergrads all assumed that they were learning new and much more advanced concepts than I had learned in the 70s. Not really. Some things were updated, they got to use much nicer equipment of course, but as others have commented above, the fundamentals of the field are not as dynamic as people imagine. In the same way that everyone still has to learn algebra, even though it’s been around for hundreds of years, so computer science students have to learn control structures, sorting, searching, separation of concerns, computational complexity, etc. etc.</p>

<p>Agree also that it’s helpful to get some exposure in high school, but even today, you can start at a CS major in college.</p>

<p>In case you’re concerned about the teaching level of any comp sci class… there’s no teacher that can teach **Average **Joe or Jill how to write **good **software… Good software people are born as much as they’re taught. </p>

<p>Having said this, there’s TONS more to computer science than writing code, and that does not come at the AP level or even 1st or 2nd year undergrad. Good computer science is taught such that one discovers a lot of the concepts via assignments, co-op work, teams, Google, and the like.</p>

<p>As mentioned above, the tools change, and sure as heck the tools we have today are mind boggling compared to the stuff we had in the early 80’s but good coders are good coders regardless.</p>

<p>I’m also a (nearly 30 year) practicing software engineer (bleh, coder) with undergrad and grad comp sci degrees…</p>

<p>Very helpful, thank you all!</p>

<p>Computer + Medicine: perhaps consider bioinformatics.</p>

<p>Your S should understand that there is a fair bit of math in a CS degree, too. Not impossibly difficult stuff, but a couple of courses beyond calculus. </p>

<p>AP CS is in Java these days; it changed 5-6 years ago. The language is less important than the concepts. </p>

<p>Other good thing about CS majors: they get JOBS. S1’s fiancee didn’t program til she got to university and has done well getting interviews and offers. There are some CS folks who were born programming (I have one of those kids), but others come to it later.</p>

<p>A couple of comments:</p>

<p>About the JOBS - I’d caution that there’s been a lot of outsourcing of programming in recent years. I love my job but I’m not sure I could in good conscience recommend a computer science degree as a path to good job opportunities, for a young person today.</p>

<p>About software engineer versus coder - my master’s degree was actually in software engineering, the area of computer science concerned with systematic, quantifiable approaches to software development. So I wasn’t calling myself a software engineer simply because it’s more pretentious :-). Not surprising, it’s the more straightforward coder or programmer jobs that have been particularly prone to move offshore, too.</p>

<p>

</p>

<p>The job market is subject to wild industry cycles, though.</p>

<p>Those who went to college to major in CS during the dot-com bubble of 1998-1999 graduated into the dot-com bust of 2002-2003. Some probably had their careers ended even before they began, because when the job market recovered, employers were less likely to hire those who had long term unemployment. (Civil engineering had the same thing happen in 2009.)</p>

<p>Best would be to try to keep the door to graduate school open (good grades, undergraduate research) as well as the door to industry open (good grades, industry internships and co-ops). In senior year, apply to both jobs and graduate school – if the job market collapses, try to go to a funded graduate program, as spending a few years getting master’s degree is better than being unemployed for a few years.</p>

<p>My son’s in a top STEM college and most freshmen have had no computer science prior to college.</p>

<p>And there’s still plenty of room for more software engineers in the US. Yes, it can be outsourced to some degree, but many companies are deciding it isn’t worth the trouble for one reason or another. And yes, jobs are cyclical - I had to take a lot of less-desirable programming jobs after 2002, but I never had to drive an hour or take something truly awful. A new coworker of mine was laid off from another job and had a new one in less than two months, and he was being picky. My titles have been programmer, software engineer, programmer/analyst, developer… My job’s always been about the same, and the title has always been irrelevant on my resume. I’ve never met someone who was a “coder” except for newbies.</p>

<p>

True, but that doesn’t apply to an entry level class (probably in most majors) - the basics don’t change that rapidly.</p>

<p>The math major/CS minor teacher who graduated 10+ years ago shouldn’t be an issue…barring being a poor teacher for reasons having little/nothing to do with subject knowledge/background. </p>

<p>As for preparing for CS…one thing that is IME more critical than taking AP CS is the extent of his mathematical foundation and whether he loves/ok with math. </p>

<p>From having taken 2 CS courses for majors and having dozens of CS major friends/colleagues…the major issues with students struggling/being weeded out are inadequate mathematical preparation in K-12 and inability to adopt a strong work ethic* required to succeed in the courses/field at a reasonable level. </p>

<p>One CS graduate friend who works for one of the major computer technology companies summed it up when he said “Computer Science is basically math with electricity.” </p>

<ul>
<li>Compared to many classmates’ high school experiences where they can coast to graduation with high GPAs/class rankings.</li>
</ul>