Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Education Programming IT Technology

Which Language Approach For a Computer Science Degree? 537

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:
  • Re:Hobby (Score:5, Informative)

    by morgan_greywolf ( 835522 ) on Sunday July 12, 2009 @03:18PM (#28669021) Homepage Journal

    Agreed. Programming concepts are far more important than any particular language. It's important to understand at more than one programming paradigm: object-oriented programming is the paradigm de jure (C++, Java, C#, Python), but also understand a traditional imperative structured approach (C, Bash) and a functional approach (Lisp, Scheme) as well. Note that these languages are only examples: Python is actually a mixed-paradigm language that supports imperative structured programming and functional programming in addition to OOP, for instance.

  • Re:Hobby (Score:1, Informative)

    by Anonymous Coward on Sunday July 12, 2009 @03:26PM (#28669083)

    Just to save you the embarrassment of looking so stupid in the future, the term is DU JOUR (de + le = du = "of the", jour = "day")

  • Re:Hobby (Score:4, Informative)

    by Kell Bengal ( 711123 ) on Sunday July 12, 2009 @03:45PM (#28669207)
    'De jure' means "concerning law": http://en.wikipedia.org/wiki/De_jure [wikipedia.org], but I think you are correct and he meant 'du jour'.
  • by Anonymous Coward on Sunday July 12, 2009 @03:45PM (#28669209)

    Absolutely, and I'd like to expand on that idea just a little. There is a great deal of confusion about "the computer field" right now, largely because it is just now really being differentiated within the business world. Essentially, there are three fields: IT; Programming; Computer Science.

    IT is about how to use the software that exists. This includes pairing it with specifics types of hardware and other software. This is knowing the best way to use a plowshare out in the field.

    Programming is about making the software. This includes the specific language being used, how to set up the environment the software will run in and making the code work. This is knowing how to heat and hammer the iron into the desired plowshare.

    Computer Science is about designing the software. This is engineering, scaling from deciding the hardware to use to the language to use, to the data structures and optimizations, all before the software exists (or, when the problem is being addressed). This is knowing how to think about a plowshare and create the idea of the plowshare (or improvements) and then explaining it (drawings, diagrams, etc.).

    Each of these is a discrete skill, although knowledge in one will help ability in another. As this differentiation of the field becomes clearer, more understood and considered, answering your question as to what languages/degree programs will become easier. It's a matter of what you want to do or what you need to hire someone to do.

    More people understanding this will alleviate alot of pain in the software business and in university.

  • by snookums ( 48954 ) on Sunday July 12, 2009 @05:59PM (#28670227)

    Actually, you learn about bubble sort so you can understand where is might actually be a valid choice -- i.e. where you need to sort a small set in place with minimal use of stack space or other temporary storage.

  • by Jerry ( 6400 ) on Sunday July 12, 2009 @06:13PM (#28670307)

    No one wants to live next door to bible bashers.

    You mean "Bible thumpers". Bible bashing is what you are doing.

  • by KiltedKnight ( 171132 ) * on Sunday July 12, 2009 @06:58PM (#28670603) Homepage Journal

    If I want to hire someone who can solve problems I'm not going to hire a CS major. I'll go for a physics or engineering major first who has shown he has the ability to code.

    Actually, I would hire a CS major... depending on what my needs are. When I interview the more experienced candidates (I'm not the hiring manager... just one of the team members who interviews people to see what the letters "BS" on their resume actually mean), I give them an abstract problem and I want to see their problem-solving skills. Yes, there's a lot of technical work, but there's also some things about their gut instincts I like to see too. Do they know where to look? Do they even have an idea or two? Can they start with the most basic solutions before moving on to the more in-depth ones? That is what experience teachs you... that you should start with the simplest answers before going to the most complex.

    As a fresh-out-of-school kid, I want to see if you're open to that concept. I'm also going to see if you can tell me what asymptotic notation is and how it applies to an algorithm or a series of algorithms... I need to know if you know what a pointer is... pass by value vs pass by reference... I'll have you write a code sample, or maybe just some pseudo-code, to solve a quick problem.

    In my experience the kids who couldn't hack the more rigorous studies transferred into CS. Or they're the kids who liked to "play" with computers but don't understand that they're just usable as a tool.

    Not entirely... and again, it depends on the school where the degree was earned and when. I still remember the days of the CS students cursing at the terminals when logging in to the UNIX mainframes (AT&T 3B series of overgrown data switches) because they couldn't get the linked list program to work. Yes, the course taught C programming, but it also taught intermediate programming concepts like the beginnings of data structures and recursion. (Pascal and "structured programming" were the previous semester.) Come from a school whose curriculum goes into these things and I'll recommend you over someone coming from a "Java school" any day.

  • Comment removed (Score:4, Informative)

    by account_deleted ( 4530225 ) on Sunday July 12, 2009 @06:59PM (#28670615)
    Comment removed based on user account deletion
  • by epine ( 68316 ) on Sunday July 12, 2009 @10:52PM (#28672065)

    Yes, the purpose of bubble sort is to prove theorems. I recall reading that bubble sort was introduced as an *optimal* algorithm on a Turing machine. Yet schools manage to teach bubble sort without commenting on its odd status, as if it one of the sorting methods found in every programmer's tool box. I haven't written a bubble sort once in two decades. Quick sort, heap sort, radix sort, and insertion sort are the real work horses.

    Speaking of radix sort, a wise CS student puts an asterisk beside the claim that the algorithmic complexity of sorting is O(N log N). While this is formally true, the merits of "formally true" in this case are greatly overstated.

    If you look at the ratio of L1 cache size to physical memory on almost any machine made in the last thirty years, you'll find that for sorting a list of primitive scalar elements (machine integers, pointers, or floating point) you almost never need more than a 3-pass radix sort.

    A 16kB L1 cache will hold 2^11 long integers. A three pass radix sort is good for up to 2^33 elements. A 64kB L1 cache increases your three-pass list size to 2^45 elements. The day you install your first 1TB memory stick, do you think your L1 cache will be smaller than 64K? Any takers?

    The performance of radix sort on any practical machine is as follows:

    O (N log (N, base=N^(1/k))) = O (k N)

    where k is usually 2 or 3, and hardly ever greater than 4 (for the situations where radix sort is preferred), unless you are talking about a class of machine never constructed where bubble sort is theoretically optimal.

    Theory is good, but hone your BS detector.

    Also, bear in mind that if your CS detector poses the exam question, as one of my Waterloo instructors once did, to draw circles, squares, and triangles around the automatic, static, and heap based allocations in a C program according to the convention on page 200 of your mandatory text book, the only thing your instructor is teaching you is what's easiest for him to test.

    That text book was crap, I never cracked the cover once after I dismissed it, so I didn't know that the circle is the universal conceptual designation of a static variable.

    One factor is whether the syllabus is conceptual or applied, the other factor is whether the teaching itself is meaningful or a meaningless exercise in jumping hoops.

Anyone can make an omelet with eggs. The trick is to make one with none.

Working...