<p>It’s a “right-tail” skill. I think that people who score below 90th percentile in math and other logic based courses could do it, but the lower you are, the more tedious it would be. I would guess that the average math SAT score for those receiving degrees must be about 750. Purely a guess, but I’d be very surprised if it were below 720 or so.</p>
<p>Perhaps the problem is the schools you are looking at. I would say if someone was serious about CS or any STEM they need to get themselves into one of the tops 30 STEM schools and not even consider a traditional LAC unless it is on that list. The fact that a good PhD in CS can go make a ton of money is going to be a driving force. So if you find a person with a PhD in computer science at a LAC known for its art, English and history majors you need to ask yourself why he/she is hiding there. There could be a perfectly good answer is like family considerations, but probably it is because that was the best he/she could do. That isn’t going to give you the learning environment you need. You just can’t look at the average school.</p>
<p>I’d say it’s a mix of lack of math/science preparation, lack of knowledge about what Computer Science is and finding out it isn’t their cup of tea, weedout intro courses, lack of separation of true programming/CS beginners from kids who have had much exposure/taken the equivalent course before, poor teaching, having issues fitting in/being part of a competitive Nerd/Geek subculture if there is one in the school/department, or a combination of the above. </p>
<p>
</p>
<p>I know several CS graduates with math SATs well below 720. All of them are gainfully employed in software development or computer technology firms…some which are household names(i.e. Apple, Microsoft, Google, etc). Common trait among all of them, being so passionate about computer programming/math that they enjoy solving perplexing problems and could hyperfocus on it for months on end. </p>
<p>
</p>
<p>Not necessarily and the comment about CS PhDs in LACs being there because they “settled” seems to derived from a mixture of ignorance and the idea that everyone has “making the most money” as the main/sole priority when it comes to jobs. </p>
<p>Not every CS PhD wants a career at a Top 30 university where the emphasis for tenure and promotion is overwhelmingly on academic/industry research publications/patents over undergrad teaching or has this as their goal. </p>
<p>The latter sounds really funny considering most PhDs…including those in STEM/tech fields tended to pursue PhDs for the love of research of the field and/or teaching…not making big bucks. Most who went to LACs did it because they preferred teaching undergrads to being on the publish/patent accumulation or perish rat race and/or quality of life…whether it’s family or campus environment. </p>
<p>If anything, if your goal is to make a lot of money, most PhD grad students and Profs would say picking a PhD…even in CS is not the best way to go about it. If one is dumb enough to even intimate that this is the main/sole goal of getting the PhD while in a CS/STEM PhD program, some Profs will engineer a way to get said student kicked out of the program for “misplaced priorities” or “lack of dedication/seriousness to the field”. </p>
<p>Most friends in the CS field…including those who are co-owners of successful tech startups would say BS with good skillsets or maybe an MS would be a better way to go.</p>
<p>The head of the Udub CS dept said they cannot add many more students because teaching CS is very faculty labor intensive and good profs are hard to find and expensive. They have about 50 faculty now and getting larger is not likely.</p>
<p>SAT Math is very irrelevant to what would be needed in CS (and most other areas, but that’s another topic…).</p>
<p>That test is all about being super careful and not making dumb mistakes. CS (and any higher math problems) are the opposite. Instead of many, quick problems with a single numerical answer you have to prove an often difficult-to-understand assertion. The types of mistakes SAT math is measuring don’t really have much of a chance of showing up.</p>
<p>Now, programming can easily open up to all types of silly, careless mistakes. But making it through finishing a program allows you to make all types of mistakes. That’s why they check their code, make sure they made sure the loop ran from 0-9, not 1-10. Programming is better for those that can spot and fix mistakes, not those that can manage to be careful enough to never make mistakes like that.</p>
<p>“So, keeping all of the above in mind, who’s filling all of the computer related jobs that are out there?”</p>
<p>The big tech companies are hiring people from all over the world. Walk by any large tech campuses and you’ll find yourself in an international cluster.</p>
<p>“The head of the Udub CS dept said they cannot add many more students because teaching CS is very faculty labor intensive and good profs are hard to find and expensive. They have about 50 faculty now and getting larger is not likely.”</p>
<p>Maybe that is true, but 50 sounds like an awfully large department to graduate such a miserly number of students. I’m convinced they must have their prof’s teaching one class a semester.</p>
<p>Cobrat, I agree that a BS in enough to get a nice job. Thus further cutting down on the overall number of PhD’s in the field and then the best are still going to go to top universities that have the geek/nerd subculture. Yes, of course there will be some who have a calling to teach. But the numbers just aren’t there to reach every LAC. Just as now days with women in engineering and medicine it is hard to find a really outstanding 7th grade math teacher espically in the states that don’t pay teachers well. Demand in one field causes shifts in availablity in another. Stick with the top STEM schools that have the geek/nerd culture or sub culture that attracts both professors and top students. There just aren’t enough really good people who understand the material and have the calling and talent to teach it that haven’t been pulled away by other opportunties.</p>
<p>Re: University of Washington being limited in CS major capacity by having only 50 CS faculty and having difficulty hiring more</p>
<p>Berkeley has only slightly more CS faculty (between 50 and 60 in CS, not including EE faculty, but including adjunct faculty), but graduated 117 CS majors in the College of Letters and Science and 260 EECS majors in the College of Engineering for 2011. Probably about half or more of the latter emphasize CS (based on upper division EE versus CS class sizes), so we are looking at at least 250 students per year in CS or EECS with CS emphasis. Note that the CS major in the College of Letters and Science at Berkeley is not currently impacted, although it was before the tech bubble crash.</p>
<p><a href=“https://career.berkeley.edu/Major/Major.stm[/url]”>https://career.berkeley.edu/Major/Major.stm</a></p>
<p>University of Washington says that it has about 160 students per year in CS.</p>
<p>[FAQ</a> for Prospective Students](<a href=“http://www.cs.washington.edu/education/ugrad/admit/FAQs.html]FAQ”>http://www.cs.washington.edu/education/ugrad/admit/FAQs.html)</p>
<p>A quick check of class schedules indicates that upper division CS courses at the University of Washington are considerably smaller than many of the upper division CS courses at Berkeley. Fans of small class sizes may prefer that (although the class sizes are still nowhere near the <20 that fans of small class sizes like), but that limits the overall capacity of the major for a given number of faculty.</p>
<p>
</p>
<p>Not everyone who are top Professors/students in STEM fields want the types of geek/nerd subculture that’s prevalent at the Engineering/Tech oriented or the large Top-30 research universities. A reason many of them go to LACs or universities where such subcultures are subdued or nonexistent. </p>
<p>Having such subcultures can be just as much of a turn-off as an attractive factor for top Profs/students in STEM fields.</p>
<p>Regarding where to study CS… look for a school with a reasonably complete set of core upper division CS courses that you can take. ABET accreditation can be helpful in that it says that the CS degree program falls in the range of ok to top notch; non-ABET accredited CS degree programs need more careful individual scrutiny, as they can range from useless to top notch.</p>
<p>Like engineering, math, and physics, good CS degree programs tend to be found at more selective schools; less selective schools (especially smaller ones) may not have enough student interest or ability to handle the subject to make it worthwhile for the school to maintain sufficient departmental resources (faculty) and offer a worthwhile major. However, not all selective schools have good CS degree programs.</p>
<p>My CS son (who actually majored in math) was advised by a number of profs in his college search to focus on the math departments. He is a theory/algorithms guy, and the consensus was that the theory depts of CS programs were stronger if they were also supported with strong math departments. He was in an unusual situation and started freshman year taking graduate theory courses.</p>
<p>He avoided the basic CS distrib courses whenever possible. :)</p>
<p>
I certainly wouldn’t blame them for that, but I think your assertion is a bit of a stretch. Other than some religious institutions where a certain type of student is self-selected, I doubt this could be predicted. The stereotypical CS subculture is not, in my experience, anything the department or school can control.</p>
<p>Do you have personal experience to the contrary? I’d be curious to hear more.</p>
<h1>Article in post 38 by davidthefat</h1>
<p>
</p>
<p>This is misleading. The difficulty of a CS program is not about the language. And there is nothing difficult about C or CC++. It’s just a matter when or where people need to use it.</p>
<p>I learned Pascal and FORTRAN first. Then I wrote C programs for data structure and compiler classes by just spending couple days to read K&R. Then I used C++ on the jobs and did not have to struggle.</p>
<p>CS program nowadays is different than 20, 30 years ago. Compiler class is no longer a requirement at MIT. There are many things to learn now than in the past. My MIT student son did not have to learn C/C++. But I am sure he can write C/C++ program when he needs it.</p>
<p>Continued:</p>
<p>[Wadler’s</a> Blog: 6.001 RIP](<a href=“http://wadler.blogspot.com/2009/05/6001-rip.html]Wadler’s”>Wadler's Blog: 6.001 RIP)</p>
<p>
</p>
<p>And the new 6.001 is</p>
<p>[6.01</a> Homepage / Spring 2012](<a href=“http://mit.edu/6.01/mercurial/spring12/www/index.html]6.01”>http://mit.edu/6.01/mercurial/spring12/www/index.html)</p>
<p>with Python as a the language.</p>
<br>
<br>
<p>I think that he’s just referring to compiled languages vs interpreted
languages. The problem with Java is that it’s a black box, that there
are an incredible number of methods out there to do what you want and
the availability of these may make it easier to get your homework
done without doing your homework - or it may abstract you away from
the hardware.</p>
<p>With C, C++ or Pascal, you can always take a look at the generated
code to see what’s happening at lower levels.</p>
<p>I think that Scheme is good for teaching; really teaching recursion.
Yes, you can learn it in other languages but you don’t live it quite
as much.</p>
<br>
<br>
<p>Well, there’s only so much you can try to cram in a short period
of time.</p>
<p>We had an MIT grad that was working for us and we work in C. Several
months after he was hired, one of the senior engineers called me into
his office and told me that he had spent a few days trying to figure
out how to do something fairly simple in C - someone that had taken
a C course wouldn’t even have to think about it. We were stunned that
MIT didn’t teach C/C++. Yes, you might be able to wing it or fake it
but it can catch up with you.</p>
<p>A long time ago, I was working for a consulting firm and it was Friday
and my manager told me that I was working a COBOL gig on Monday. Well,
I had seen some COBOL code when I was 13 at a Honeywell outing for a
computer club and that was about it. So I went to a college bookstore
in the Boston area and picked up a COBOL book and started reading.</p>
<p>So I knew some syntax and semantics and could write a program but it
took me a month to get comfortable to the points that I knew more
of the hints, tips, and tricks of the language.</p>
<p>These days a lot of employers want specific skills - they do not want
to train or allow you to get up to speed. They do specific language
tests - if the languages aren’t a problem, then they let you pick
the language.</p>
<p>
</p>
<p>With the same reasoning people can look at the assembly language code or the machine language code to know what’s happening at the lower level.</p>
<p>Today’s CS program teach students build complex structures on top of lower level layers.</p>
<p>When I started writing Java and C# applications and I did not like it because I favored C/C++ and Unix. But later I found that I missed the point.</p>
<p>Nowdays, software development practice is different. In the old time, to write an application a system programmer designed the algorithms and draw the flow charts then let the coders write the codes. Now, developers don’t work that way. It would be hard for some people to see 2 developers sit in front of one computer to write the same application. But that’s how it works in many places now. And there are lots more different practices…</p>
<p>Back to the nerd culture question… My very CS stereotype son spent a very enjoyable weekend with the nerd (AKA games and science fiction) club at Harvard and admitted to me, that it had not been entirely unreasonable of me to ask him to apply there. In the end he thought Carnegie Mellon had much more to offer him, but he could have been perfectly happy at Harvard.</p>
<p>I’m curious what you think of a CS program that includes functional programming (Haskell?) Essential? Important? Minimal?</p>
<p>From what I’ve read about functional programming is that it’s just a different mindset. Procedural and Object Oriented programming, as you would see with C, C++, Java, Python and similar languages, you have a set function, but you use different datasets on that function. But in functional programming, the data is set, but the functions are the one getting applied. </p>
<p>It’s highly recommended to learn functional programming.</p>
<p>Personally, I favor the low level over the high level. Perhaps that bias is from the fact that my first language was C++. But if I could, in order to make the fastest algorithm, I would start from the lowest level that I possibly can go. That means, if I have to revert to chemistry to find a better semi conductor, then I start there. If I had the resources and time, I would then engineer the microcontroller architecture and then write the OS myself. THEN write the algorithm on top of that. It’s just my mentality when writing code. I keep in mind every movement of data and every instruction I call. That explains my major too… I am an EE major, soon to declare a CS double major. I guess I get pleasure from the process of getting the solution than actually getting the solution.</p>
<p>You can’t do that with Java, but with C and C++, you can.</p>