Forgot your password?

typodupeerror
Education Programming IT Technology

Which Language Approach For a Computer Science Degree? 537

Posted by timothy
from the do-both-and-compare dept.
wikid_one writes "I recently went back to college to finish my CS degree, however this time I moved to a new school. My previous school taught only C++, except for a few higher level electives (OpenGL). The school I am now attending teaches what seems like every language in the book. The first two semesters are Java, and then you move to Python, C, Bash, Oracle, and Assembly. While I feel that it would be nice to get a well-rounded introduction to the programming world, I also feel that I am going to come out of school not having the expertise required in a single language to land a good job. After reading the syllabi, all the higher level classes appear to teach concepts rather than work to develop advanced techniques in a specific language. Which method of teaching is going to better provide me with the experience I need, as well as the experience an employer wants to see in a college graduate?"
This discussion has been archived. No new comments can be posted.

Which Language Approach For a Computer Science Degree?

Comments Filter:
  • Hobby (Score:5, Insightful)

    by sopssa (1498795) * <sopssa@email.com> on Sunday July 12 2009, @02:57PM (#28668861) Journal

    After reading the syllabi, all the higher level classes appear to teach concepts rather than work to develop advanced techniques in a specific language.

    It's great that you have it like that. Its the concepts that matter more than just teaching some language dependant pack of tricks. Languages can always be learnt afterwards and quickly, and they also tend to change during years. Concept stay somewhat the same, and those are what you need to understand. I wish I would had the same kind of program in school.

    I also feel that I am going to come out of school not having the expertise required in a single language to land a good job.

    Usually programmers are quite self-taught. Schools can teach you concepts and languages, but the real knowledge comes from when you're interested in it and try out and do stuff. Yes, this means you should have some interest in coding at home for your pleasure too, as a hobby. I would think that programming would being really really boring if you dont have the interest to learn yourself or even program your own stuff at home.

    You didn't mention if you do programming yourself, but if you dont you should start to. Start coding some games yourself or stuff you think are useful to you. Or learn PHP and start coding websites. You can even start to make some cash out of it, either by selling your software/game, running websites or coding as a freelancer. Try out things.

    However the most stupid approach is to think you should be awesome in one language and lack everything else. Usually you need combination of different languages and better understanding generally. Read some programmer job listings and you see how they always contain lots of different thingies and qualities they're looking for. Programming languages used at work will most likely change aswell (Java was hot in some apps programming years ago, but C# and other languages have been stealing position from it). This is why you want to have the general understanding instead of just knowing tricks&tips of one language.

  • by enrevanche (953125) * on Sunday July 12 2009, @03:00PM (#28668881)

    A CS degree is not about making you a monkey that can program only one language. It is about learning how to think. The multi-language approach will ensure that you are exposed to many ways of representation.

    The "real" world will train you how to be a monkey well enough.

    If knowing one language well enough to get a job, a certification in Java, C# or whatever will serve your simian side better. Use the knowledge in the diversity in languages to tell potential employer that you can quickly learn to program in whatever environment is required.

  • by themeparkphoto (1049810) on Sunday July 12 2009, @03:01PM (#28668883)
    They shouldn't teach any language. Seriously. Maybe a hypothetical one like MIX or MMIX, but not an actual language. They should teach math instead.
  • by VincenzoRomano (881055) on Sunday July 12 2009, @03:02PM (#28668891) Homepage Journal
    Find a serious computer science course.
    The choosing among languages will be more a matter of taste than of actual contents.
  • by ehack (115197) on Sunday July 12 2009, @03:05PM (#28668915) Journal

    New school teaches every language + programmming concepts and our poster complains - maybe the new gen kids are unteachable.

  • by themeparkphoto (1049810) on Sunday July 12 2009, @03:06PM (#28668921)
    I should add that, back when I got my (math) degree, the school offered 1/4 credit courses in particular programming languages. Popular back then were PL/I and IBM 370 assembly language. You can see why it's silly to waste time learning a particular programming language! But my skills in math--statistics, computational geometry, calculus--save my butt every day!
  • by Anonymous Coward on Sunday July 12 2009, @03:07PM (#28668933)

    I always thought that learning the concepts was the majority of a CS program while learning how to design and write software was what Software Engineering was all about. Obviously both degrees involve a bit of both, but it seems Sofware Eng. involves more practical courses, and material on managing large software projects, etc. From your post I get the impression that the problem isn't the number of languages learned, but the lack of teaching the "work to develop advanced techniques" regardless of the language taught.

    I studied EE, so I'm not the best source; but maybe you should give Software Engineering a look, it may be more what you're looking for.

  • by Ritchie70 (860516) on Sunday July 12 2009, @03:08PM (#28668951) Journal

    Despite what many believe, a CS degree is not about learning to program. A CS degree is about learning the theoretical and mathematical constructs that programming is based on.

    If you know those basics, the language is largely irrelevant.

    C is Pascal is Java is JavaScript is VB is C# is C++ - it's mostly syntactic sugar if you ignore the objects, and even the objects are similar. If you can't swap {} for () or begin-end or whatever, you have no hope of being a decent programmer.

    If you're looking for vocational programming training, find a vocational school. It's that simple.

  • by KiltedKnight (171132) * on Sunday July 12 2009, @03:09PM (#28668957) Homepage Journal

    OK, let me put it to you this way:

    Let's say I'm a hiring manager and conducting interviews for junior programmers.

    If you get your degree from the first school, I'm only going to hire you if I need a person who's going to write the code he's told to write. I'm never going to assign stuff to you that requires you to do any kind of analysis.

    If you get your degree from the school to which you transferred, you are far more likely to get hired into a position with a lot of growth opportunities. You will have not only know some of several languages, you will also have a good background in abstract concepts.

    The problem with most schools today is that they focus far too narrowly on one topic instead of teaching the concepts necessary to handle what tasks are placed in front of the graduates. There have been several articles about the "Java schools" and how the graduates of them can barely program their way out of a paper bag because they don't have the broader information necessary to do a proper analysis. Sure, with modern languages you can often "ignore" things like memory management and code optimization. Unfortunately, all too often I've seen what happens when things are written by people who have no understanding of how to apply basic concepts... when something should be a compiled application... when something should be a simple shell script (mind you, the person who did this thinks that a compiled program with calls to "system()" make this a "system program" and doesn't even know how to write a shell script... I am going to have to clean up that mess in the near future)... and even when to use what language.

    No one language is the be-all and end-all of programming. Each language is a tool. You don't normally use a screwdriver to hammer in a nail or as a chisel... so why should you use C or C++ to write what is better written as a shell script? Why would you use Java to write something that requries careful memory management? (Yes, I know some people would just put the question mark after "Java"... :) ) Because it's all you know how to do? Guess what... either you're not getting the job for which you just interviewed or I'm going to have to go hire someone else to augment my team to do what you should've been able to do... which means when it comes time for RIFs, you're name is going to go towards the top of the list because you can only minimally contribute to the team.

  • by minsk (805035) on Sunday July 12 2009, @03:11PM (#28668965)

    Not unless trade schools suddenly get better, and software engineering programs suddenly become ubiquitous.

    And not while most students learn better by implementing parts of the theory. And not while employers expect them to be half-competent coders.

    And, well, not :)

  • by Anonymous Coward on Sunday July 12 2009, @03:16PM (#28669005)

    Chinese, Tagalog, Vietnamese, or whatever the hell those Indian tech support people speak (claimed to be English, but clearly not). Seriously, you'll need to know one of those languages so you can move to where all the programming jobs will be.

  • by sixoh1 (996418) on Sunday July 12 2009, @03:17PM (#28669015) Homepage

    There are two kinds of CS degrees, one tends to be more like a MSCE type degree aimed at getting you employed in a job shop. Typically you'll find these at ITT or University of Phoenix. Frankly, as an employer of CS folks, I can tell you these degrees are not worth the paper they are written on, and they rarely offer job security, they teach you to be a 'cog' instead of an independent thinker.

    The second type sounds like your new school. These are more complex and are more like an engineering degree which is about a solid practical basis (tools) and good breadth so you know where to start when some thing new comes along. I dont expect a proper CS graduate to "know" anything or be really ready to work on their own immediately, but I do need the to be able to work at learning the new things independently. The workplace is too varied and complex for college to teach you the important things, but I cannot take the time to spoon feed a neo when there is a deadline bearing down.

    The first parent post has another thing exactly right, if you develop your own skills by doing some hobby work, that is where you can get the 'practical' skills you seem to crave. The bonus there is that you can prove to a prospective employer that you have the one thing colleges and trade schools cannot possibly teach: drive. There is absolutely no specific coding technique that can make up for a lack of drive.
     

  • by maxume (22995) on Sunday July 12 2009, @03:18PM (#28669025)

    Old timer makes wild extrapolation, maybe the old really are feeble minded.

  • by erikharrison (633719) on Sunday July 12 2009, @03:19PM (#28669031)

    I make the hiring decisions at my company. I check to see if people can solve complex problems. I don't care what language you know. You can learn PHP in a couple of hours. Sure, your first 5.000 SLOC are going to look like whatever language you know best, but right out of college your first 5.000 SLOC are going to suck anyway.

    Learning a bunch of languages has the advantage that you learn what concepts are universal to programming and what are just entrenched in the language, but what really matters is learning to think algorithmically, no matter how many languages you know, be it one or one thousand.

    It sounds like you've already made your decision about which school you're attending, you just want some assurance that this education won't be wasted. Let me assure you that it won't.

  • by thenextstevejobs (1586847) on Sunday July 12 2009, @03:22PM (#28669049)

    I've been a SQL

    Stop right there. This is probably some of the best advice you'll get.

    Of course, it depends on what you want to do. But for the standard, current-track Internet/Cloud/Distributed blah blah blah, many people are dreadfully bad at SQL for how much it applies to their job.

    That said, haven't we had enough of these language posts? You can google this and you'll see the same arguments spread out since the birth of the Intarwebs. Everyone has doubts about the language that their using when they don't know many, and want to know what to use.

    Just be glad that you didn't attend a program that only taught you Java and never showed you how operating systems really work or what a pointer is. That is a great start.

    As someone whose worked in a few of the largest software companies, I can tell you that this really isn't a big concern. You won't get tested on the vagaries of a programming language in an interview. They want to know exactly what you're being taught: that you understand the theories and concepts underlying what you are doing. Projects never use only one language. You often need some glue (Perl, Python, Ruby, etc) and some 'lower-level' code (C++, Java), some data storage (SQL), and maybe a dynamic web page or two (PHP).

    Get an internship. This was the best way for me to learn where I fit in on a development team, what sort of thing I felt inadequate at compared to my co-workers, and learned the place of programming language in the work environment. By the time you've gotten your second or third job, most people don't list languages on their resumes anymore.

    Once you know a few languages, it shouldn't take you more than a week or two to pick up a new language. On the topic of being an 'expert' at a language, that probably isn't important for your first job. What you need is strong foundations, a good attitude, and hopefully avoiding a tendency to break all the existing code.

    If you're really passionate about programming, you'll probably pick up a few languages and be enthusiastic about one or another at a time. I'm currently on a big C++ and Perl kick, as well as loving debuggers in lieu of print statements.

    If you're not passionate about this and you want a good 40 hour a week job where you only need to know a thing or two, I don't know what to tell you. I've found this field rewarding because the limit is only how much I'm able to learn and apply. And I've found my employers have recognized that.

    Use the right tool for the job. Write readable code in whatever language you write in. Good code is easy to understand, efficient, and concise.

    Put on your flame-retardant mecha-suits, this thread is about to get spicy.

    Final note: Do everyone a favor and learn how to use grep and other Unix tools to do simple data transformation tasks.

  • by happyemoticon (543015) on Sunday July 12 2009, @03:25PM (#28669069) Homepage

    That's like saying an Art MFA shouldn't teach any actual art in any particular medium, just hypothetical art.

    There IS a distinction between the "craft" of programming in any particular language and software engineering, but in order to become a software engineer, you need to work through the medium of the language. That's the only way to access it. Knowing how to paint in oils doesn't make you a good artist, but you do have to start making art in some manner in order to get there.

  • by azav (469988) on Sunday July 12 2009, @03:26PM (#28669087) Homepage Journal

    Learn how to work on a team, work with QA, and learn how to deliver products.

    That's what you need to be asking.

  • Wrong Major (Score:5, Insightful)

    by daemonc (145175) on Sunday July 12 2009, @03:30PM (#28669105)

    If after a year or more of college, you think OpenGL and Oracle are programming languages, maybe CS isn't the right major for you.

    As others have suggested, try a trade school or community college. They will be happy to teach you to be a single language code monkey, without bogging you down with complicated high-level concepts like "what is a programming language?"

  • by PleaseFearMe (1549865) on Sunday July 12 2009, @03:33PM (#28669131)

    Learn about Binary Search Trees, Red Black Trees, Bubble Sort, Quick Sort, Heaps, etc. Those are the important things to know. Bob Dylan is not famous for knowing English grammar and spelling. He is famous for what he does with them. Teach him Chinese, and he can most likely make amazing songs in Chinese as well. You didn't go to college to learn grammar and spelling. You can learn that in elementary school. Instead, you're going to college to learn how to use the language to create amazing things. It is an abstract level above the syntax level you see on the computer screen, and it is something crucial that anyone learning anything in college _must_ understand.

  • by 0xdeadbeef (28836) on Sunday July 12 2009, @03:34PM (#28669139) Homepage Journal

    They should teach math instead.

    Good god, man, have you seen a mathematician's code? It's worse than that of electrical engineers!

    Programming is a craft, and it requires study, it requires practice, and it requires a holistic perspective. It is more akin to architecture than mathematics, despite the fact that is so heavily reliant on mathematical theory.

  • by Phroggy (441) <slashdot3@phrogg ... m minus language> on Sunday July 12 2009, @03:37PM (#28669153) Homepage

    As a Perl lover it really pains me to say it, but Python appears to be really taking off. You're going to start seeing Python used by businesses in the same way that they've been using Java over the past decade.

  • by ari_j (90255) on Sunday July 12 2009, @03:37PM (#28669159)
    I agree. This question has been asked on Slashdot more than once. Probably more than once in the past week. Every time, it's someone thinking that becoming adept at one language is the path to zen. Here are a couple of analogies to the question presented here:

    I want to learn how to build houses. Should I learn how to use a screwdriver or should I go with the hammer?
    I want to learn how to fix cars. Should I learn all about the carburetor* or should I focus more on the brake pads?
    I want to be a linguist. Should I become fluent in Latin or Japanese? Why does this accredited linguistics department insist on me taking all sorts of philosophy and linguistics classes, when I should be learning a language?

    * - For the benefit of the people who consistently reply to my analogies involving carburetors that carburetors are obsolete and not in common use, please note that that is the damn point of my using them in this analogy.
  • Re:Hobby (Score:3, Insightful)

    by SignalFreq (580297) on Sunday July 12 2009, @03:48PM (#28669233)

    Which method of teaching is going to better provide me with the experience I need, as well as the experience an employer wants to see in a college graduate?

    As others have said, learn the concepts.

    You should also find a class that requires group programming. Learn how to interact with fellow programmers, how to operate within a team environment, and how to document your thoughts and processes. I've found that social skills are very valuable in any organization.

  • by Anonymous Coward on Sunday July 12 2009, @03:58PM (#28669289)

    But timothy didn't ask about a software engineering degree. He asked about a computer science degree. Computer science is the study of the topics of mathematics that relate to computation. CS programs should teach theory, algorithms, data structures, complexity, computability, logic, and the like. I disagree with themeparkphoto, though, because I think that programming languages are a very useful tool to teach these concepts. But they aren't the goal, they are only the means.

  • Re:Hobby (Score:3, Insightful)

    by fishbowl (7759) on Sunday July 12 2009, @04:11PM (#28669373)

    >If I went back and redid my education there is just one major thing I would have done differently: I would have learnt python from the beginning.

    I would have taken some business courses, enough to learn the nomenclature of manufacturing inventory control and supply chain management, and also some senior-management level finance and accounting courses. This is what slowed down my career as a software developer. It doesn't matter how well you know IT and programming; if you have to rely on the expertise of others to understand the business, you will always be subordinate to them.

  • by Glonoinha (587375) on Sunday July 12 2009, @04:16PM (#28669397) Journal

    Machine generated code doesn't count.
    According to my experience over the years I'd say that 100 lines of code* per day is about average for good developers over the life of a project. Yea that's 12.5 LOC per hour, sustained. My unscientific findings support the research by IBM, et.al for what that's worth.

    * That's 100 lines of code that actually provides computational value towards function points of the application - not machine generated code, not getters and setters, not formatting web pages - real work. It also includes the time testing, documenting, debugging, and getting the code working in an integrated fashion with the rest of the code by other developers.

  • by SL Baur (19540) <steve@xemacs.org> on Sunday July 12 2009, @04:19PM (#28669419) Homepage Journal

    Do not take this golden opportunity and flush it down the toilet. A specific programming language is irrelevant to skill in programming.

    (Writing as someone who has interviewed programmers for positions before).

  • by hibiki_r (649814) on Sunday July 12 2009, @04:22PM (#28669433)

    With only one language, chances are that that most graduates' knowledge of basic concepts will be too biased by the lens of their single language. How easy is it to think of functions as parameters coming from a language without closures? If everything you do is compiled, how can design by capability ever make sense? Not to say about how little one can teach about maintainability and readability if one is stuck in one language.

    While it's silly to force students to use a different language in every single course, making sure that every student has tried to use at least a few different languages: An assembly, a C descendent and a dynamically typed language. Competence in 3 languages is probably not too much to ask from graduates, and still provides more perspective than a single language education

  • by sam i am (34638) on Sunday July 12 2009, @04:22PM (#28669439) Homepage

    University does *not* teach you to program. Employers know (or should know) this, so don't worry about that.

    My gut feeling is that the more languages you learn, the less you are locked into one way of thinking. The only language that every computer science major needs to learn is assembler. Many Universities do not teach assembler and the students come out with some weird ideas about how computers actually work.

    Most of my work is in C, and my concept of hell is teaching pointers to comp sci students who have only worked in java :(

  • Re:Hobby (Score:5, Insightful)

    by m6ack (922653) on Sunday July 12 2009, @04:31PM (#28669497)

    I thought of posting this separately, but I really wanted to echo sopssa. What you have is a "GOOD THING" at this school.

    You are getting a well rounded education in concepts, like object orientation, functional programming, scripting, and sand-boxed virtual machines. You're also getting closer to the metal with C and Assembly (Preferably Intel Protected mode?) -- and that's very cool.

    My avenue was the hobby route, but I never really spent my time on the net. I'm an engineer by trade, but I found myself gradually learning coding within my organization more and more. I chiefly program now in sed, python, C++, and VBA; but the mix changes on a periodic basis. I write standard libraries, and a lot of filters and scripts to automate much tedious work within my organization... I try to program so that whatever application I write can be run on any OS -- though some of my stuff lately works best on Linux. (Linux is OK, because people can log into the workstations from their Windows PC's). Cross-platform and Open is the way to go, because you never want to force your customer to disrupt his work-flow to use your tool, and you want your customer to be able to figure out what you're doing and take over support as much as possible.

    So, with my scripts, a lot of people internally at my company have become my customers. This work has taken over much more of my job as my rep built... And now we do about an order of magnitude more work than we used to with a single engineer. The tedium of filling out spreadsheets or copying by hand is largely a thing of the past. So much work is being done so quickly that the vendors that we work with are getting very nervous that they will be able to keep up with what we are doing -- and with us us targeting multiple vendors in our work-flow they are very worried about competition.

    One other thing I learned -- we can learn much from the "Old Ways." What a horrible, nasty, terse, poorly documented -- and absolutely wonderful gem -- sed is! How nicely does it fit in with the UNIX toolkit: regular expressions with VIM, grep, and find; and roughly stapling things together with xargs and bash! You learn one thing by doing another, and you become so much more productive. Recently, I had to do a remote debugging session over a slow link. There were 50 engineers in the room, and a tag-team of 3 driving the remote system. How nice it was to have VIM there -- hacking stuff with only a few keystrokes to select and change lines on the fly, rather than having to wait a minute to click and select via some GUI. We were extremely successful and productive. I got promoted because of this -- because I drove the creation of tools, and because I learned to become proficient in the "Old Ways."

    Because you are not established within a company, you'll have to find another avenue to get yourself noticed, and you'll have to find another way to find your niche. I think that the best way for you to get noticed is to find some Open Source project on the net to dig your fingers into. You build your rep., and you find your niche -- find out what you like, and keep doing it. Let your direction change as you find out what your interests are. Keep learning new ways of doing things, and don't be afraid to experiment with crazy ideas. Make a positive contribution to how things are done -- make something better from the inside out.

    I like this quote from Daniel Phillips (Tux3): "A weak coder becomes a strong coder by reading code and writing code every day for fun."

  • by ameline (771895) <ian...ameline@@@gmail...com> on Sunday July 12 2009, @04:40PM (#28669557) Homepage Journal

    I agree,

    A long time ago now (mid 1980s), when I was interviewing for one of my first programming jobs, the interviewer asked me what was different about C vs other languages.

    My answer was that is it easier to spell. :-)

    The interviewer looked a little puzzled -- I explained that while I was trying to be funny, I was also being serious -- C is not really any different than any algol type language. If I could identify any way in which it differed, I would say that in C, the pointer is the primary datatype, where in other languages of this family, this is less true. And that C had a very minimilast approach to the core language, preferring to leave heavy lifting to the standard library, as opposed to building things into the syntax of the core language. But that these are mere subtleties.

    The fundamental difference remains that it is easier to spell. :-)

  • by pyite (140350) on Sunday July 12 2009, @04:44PM (#28669603)

    but I also think it's important for a graduate of a 4-year CS degree to be an expert in at least one.

    I've used this quote time and time again on here, and I'll use it again: "Computer Science is no more about computers than astronomy is about telescopes." -- Edsger W. Dijkstra.

    And this one is completely appropriate to, as to why Knuth uses MIX/MMIX in his books and not some other language. The same thing applies exactly to a university program of computer science:

    "Moreover, if I did use a high-level language, what language should it be? In the 1960s I would probably have chosen Algol W; in the 1970s, I would then have had to rewrite my books using Pascal; in the 1980s, I would surely have changed everything to C; in the 1990s, I would have had to switch to C++ and then probably to Java. In the 2000s, yet another language will no doubt be de rigueur. I cannot afford the time to rewrite my books as languages go in and out of fashion; languages aren't the point of my books, the point is rather what you can do in your favorite language. My books focus on timeless truths."

    Being in expert in one programming language is fine if you just want to be a programmer. If you want to be a computer scientist, it's neither necessary nor sufficient.

  • Re:Hobby (Score:3, Insightful)

    by stevied (169) * on Sunday July 12 2009, @04:54PM (#28669679)
    Amen. So long as you understand the concepts, it's very easy to learn a new language, or resume using an old one that you haven't touched for a few years. A pocket-sized language quick reference on the desk is sometimes necessary, and perhaps for the useful monstrosity that is C++ you'd actually need a copy of Stroustrup, as there are (far too) many wrinkles, but that's about it.

    Incidentally, looking at the original list, C basically is portable assembly..
  • My suggestion... (Score:2, Insightful)

    by yoursurrogategod (1393515) on Sunday July 12 2009, @05:09PM (#28669807)
    I'd say Python. I grew up on C++ and Java. VB .NET was the next step. At the moment I'm infatuated with Erlang. I've dabbled in Python, but ever since I discovered Erlang I dropped it. Python is a nice way to start things off. It's very powerful and yet very easy to build simple applications. It's great to learn new stuff in and has plenty of reference material online and in stores. I'd recommend you pick something up that teaches you about parallel processing (Erlang or just general message queuing systems.) The reason being is that with even more cores, this will be the next big problem to overcome (on a daily basis) in computing.
  • Re:Hobby (Score:2, Insightful)

    by bobstreo (1320787) on Sunday July 12 2009, @05:10PM (#28669819)

    Well I'd add that learning assembly is handy, it helps you understand what all the levels
    of obfustication (umm I mean abstraction) actually mean in the languages you learn.

    Languages are a toolbox. If all you have is a hammer (java) all your problems will
    end up getting solved by whacking the problem until it's bent.

    Of course back in the slightly older days, we learned structured programming in Pascal.

    It was higher level classes and independant study classes we learned object oriented languages,
    software engineering (the art of covering for the lame person on your team) and things
    like OS design, hardware design...

    I can pick up most "new" languages pretty quickly, quickly enough to fix other peoples code.

    Oh and make sure there is an opportunity to COOP or intern somewhere. Actual experience is worth
    a lot to potential employees.

    It isn't how good the schools classes/instructors/equipment are. It's how much you make of them.

  • by The End Of Days (1243248) on Sunday July 12 2009, @05:12PM (#28669835)

    Technology is not a zero sum game. The existence of Indian programmers does not prevent good programmers in any other country from getting work. Good is the key. Improve your game, it's a better tactic than racism.

  • by story645 (1278106) <story645@gmail.com> on Sunday July 12 2009, @05:31PM (#28670021) Journal

    New school teaches every language + programmming concepts and our poster complains - maybe the new gen kids are unteachable.

    I'm probably new gen (ripe old age of 21) and I think new school rocks. My school attempts a theory/practical balance by giving classes in basically one or the other and just putting an about equal amount of each in the core and fails miserably at teaching anyone not already interested in comp sci anything 'cause most of the ones just in school for a job take the practical courses where they can cut+paste their way to a half decent grade. (The best were the guys who've worked in industry but don't know any concepts.) This guy's just a newbie if he doesn't get that buy learning the concepts, a lot of the more complicated parts of any language become more accessible. I've seen the "language for resume" attitude from plenty of guys in my classes 10/20 years my senior (public school and all that) and complaints about the lack of conceptual knowledge from guys my age and younger. Interest to actually learn comp sci has to do with attitude, not age.

  • by Mad Merlin (837387) on Sunday July 12 2009, @05:32PM (#28670023) Homepage

    You learn about bubble sort just so you can understand how terrible it is (and how much better quicksort is).

  • by quanticle (843097) on Sunday July 12 2009, @06:40PM (#28670471) Homepage

    Learning about Bubble Sort will also teach you how much better it can be than Quick Sort for certain applications. While Quick Sort is asymptotically faster, the difference between Bubble Sort and Quick Sort is negligible for small data sets (e.g n=100). Indeed, for very small data sets (e.g. n=10) Bubble Sort is better than Quick Sort because it has much less overhead.

  • Bible Bashing (Score:4, Insightful)

    by gd2shoe (747932) on Sunday July 12 2009, @07:35PM (#28670813) Journal

    Close. Bible bashing is a heated argument between two people of differing faiths where they each try to win by claiming specific passages in the Bible that back them up. It usually gets ugly. The Bible is reinterpreted and misinterpreted so thoroughly that it cannot be used to quell such a discussion. To use a net term - Bible bashing is a religious flame war where the ammo of choice is scripture.

    It's a bad practice (I believe: an evil one). It should be avoided.

    Your definition of Bible thumping is common and appropriate. I think the etymology of the term is different from those who engage in the practice, though. Many pastors literally slam their Bible into the podium as they preach (Making a loud "thump"). On the other hand, I don't think the major proselytizing religions usually do that. I'm not sure why that term stuck to the wrong group of people. (probably historical significance somewhere)

  • Re:Hobby (Score:3, Insightful)

    by samkass (174571) on Sunday July 12 2009, @07:38PM (#28670833) Homepage Journal

    The original poster is using the term "Computer Science" but seems to be expecting a "Computer Programming" degree. The latter is often a 2-year associates degree at your local college. The former is a grounding in the science and mathematics of computation such that any language is just some syntax details that describe the same concepts you'll learn in your theory class.

  • by Cerebus (10185) on Sunday July 12 2009, @07:42PM (#28670855) Homepage

    Or do you mean for a job?

    The two are not necessarily the same.

    I found languages like Lisp, Prolog, and Smalltalk to be of the most use for learning the science. These are not your sweatshop languages, though.

    On the plus side, if you learn the science, learning a new language isn't tough.

  • Re:Hobby (Score:5, Insightful)

    by complete loony (663508) <Jeremy.LakemanNO@SPAMgmail.com> on Sunday July 12 2009, @07:48PM (#28670909)
    If there is a single language that is not taught enough for real world experience, it's SQL. Just about any business programming job is going to involve storing and reporting on data. While a CS degree is going to give you a basic introduction to SQL, I feel that SQL should be introduced earlier and worked into more of the assignments you are asked to write.
  • by GlassHeart (579618) on Sunday July 12 2009, @08:22PM (#28671133) Journal

    I think you may be taking Dijkstra out of context. While it's important not to be tied to the physics of contemporary computers, his own algorithms do make assumptions about the machine that might implement them. For example, many problems are trivially solved by a infinite number of infinitely fast CPUs, but that doesn't get us anywhere. Take the simple binary search, for example, and you'll see the core assumption that comparisons are expensive. It is in that sense that computer science is about computers, although it must not be limited to what contemporary computers can do.

    But more to the point, Knuth is an expert in programming. He wrote TeX, one of the most famously bug-free* programs in existence. I agree completely with his point of not getting bogged down by the language du jour, but I'm not talking about the language du jour. I'm talking about a language.

    Do you actually know of a good computer scientist who can't program?

    * US$327.68 awaits.

  • by Blakey Rat (99501) on Sunday July 12 2009, @09:05PM (#28671373)

    You learn it for that reason, then you never, ever use it because instead you use the .Sort() build-in to the toolset you're using. As you should.

  • When Perl 6 comes out, there will be a tsunami of developers falling over themselves to abandon everything else and port everything over to the new uber scripting language.

    No, there won't. Few people, outside the inner circle who are actually developing the language and building its tools, care about Perl 6 at all. Once it's released in a stable form, some people will switch to Perl 6, but other people will switch to other languages (since existing code won't be entirely compatible anyway). Many will just continue using Perl 5, because it's good enough. And of course, most people who are using other languages will continue to do so.

  • Re:Hobby (Score:5, Insightful)

    by iamhassi (659463) on Sunday July 12 2009, @10:08PM (#28671801) Journal
    "not having the expertise required in a single language to land a good job."

    I answered this a few months ago on another post. I'll just link to my old post so you guys can follow the links [slashdot.org], but I copied and pasted it below. Languages to know are C/C++ and Java, everything else is derivative.

    "Since anything you're taught about computers is mostly obsolete in a few years..."

    You're not a programmer, are you? I ask because no programmer would ever say that.

    The C programming language came out in 72 [wikipedia.org], and C++ came a few years later [wikipedia.org]. Both are in the top three most popular programming languages [tiobe.com] "based on the number of skilled engineers world-wide, courses and third party vendors" and they make up 25% out of the top 20 languages in the list. Although the number one language, Java, makes up 19%, it "derives much of its syntax from C and C++" and Java came out in 1995 [wikipedia.org].

    Other sources say C is still responsible for nearly 50% of new open source projects, followed by Java with 28%. [theregister.co.uk]

    So even if you took a programming class 30 years ago it would still very much apply today.
  • Re:Hobby (Score:2, Insightful)

    by BrokenHalo (565198) on Sunday July 12 2009, @11:37PM (#28672325)
    In any case, this is beside the point. Programming is more a craft than a science, and doing it well requires craftsmanship. This is a quality that is built up as a result of frequent (and long) practice, and ultimately it doesn't really seem to matter that much what language you use. Sooner or later you will more or less settle on a main language, but attempting to predict what languages you will end up using at the end of a degree course might be like trying to predict next year's weather.

    Your degree is supposed to be giving you an EDUCATION. If all it does is train you to be a monkey with only one skill, then it is doing you a disservice, no matter how immediately you are able to join the workforce afterwards.

    So while learning one language (especially C or C#) thoroughly is a great idea, a well-rounded background is a good way to prepare you for the future. If your interviewer is so inflexible as to not recognise the value of that, you probably don't want that job anyway.
  • Re:Hobby (Score:3, Insightful)

    by Nefarious Wheel (628136) on Sunday July 12 2009, @11:51PM (#28672383) Journal

    Finance is all about mathematics, which suggests FORTRAN.

    Umm, reality isn't so clear-cut. Finance software (the non-transactional stuff, which is *lots*) is generally written in VBA - as in "open Excel spreadsheet, write macro, alt+F11, fiddle with macro". A disturbing amount of the world's financial software is based on the two-tonne macro. (Sucks really, but there I was. Apologies to the poor sod who had to maintain that.)

    That said, a lot of the quantitative stuff is very dusty-deck FORTRAN running on old Alpha VMS machines accessed through bastardised Telnet wrappers. Yes, a lot of procedural business was written in COBOL and a lot of ugly FORTRAN too, and it's still with us. One interesting aspect of the old VMS systems was the common calling sequence - it was dead easy to link FORTRAN or BASIC PLUS modules in a COBOL program, or vice versa. This led to some fairly interesting support tasks.

    For new stuff, pick what seems to have the best syntax and decent performance for what you need and run with it. For the existing stuff, it could bloody well be anything. How good are your Powerhouse skills? IFTRAN? LOLCODE? SMURF? (Ok, I made that last one up. I hope...) Advice? Learn two or three. Your interviewer may not expect you to know the ZIPPIQUICK they need but experience in one or three other languages (even *shudder* Pascal) will convince them you're a programmer and not just a call centre operator with a good memory for buzzwords.

  • Re:Hobby (Score:3, Insightful)

    by complete loony (663508) <Jeremy.LakemanNO@SPAMgmail.com> on Monday July 13 2009, @12:50AM (#28672689)

    Another thing that was certainly missing from my own CS curriculum (admittedly 10 years ago) was practical experience with using source control systems. I'm not trying to suggest that using source control or SQL should require an extra semester subject, just that the way contrived assignments are designed should be similar to the way real world applications are written.

  • by Nazlfrag (1035012) on Monday July 13 2009, @01:33AM (#28672865) Journal

    They didn't reinvent the wheel for the Porsche 911, but they did custom design and engineer it. If you cannot custom design and engineer your own sorting algorithms you will never make a sports car, only a bodykit for a VW.

Distrust all those who love you extremely upon a very slight acquaintance and without any visible reason. -- Lord Chesterfield

Working...