Which Language Approach For a Computer Science Degree?
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?"
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.
My blog
'De jure' means "concerning law": http://en.wikipedia.org/wiki/De_jure, but I think you are correct and he meant 'du jour'.
Scientists point out problems, engineers fix them
altslashdot.org: The future of slashdot.
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.
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.
Be careful. People in masks cannot be trusted.
No one wants to live next door to bible bashers.
You mean "Bible thumpers". Bible bashing is what you are doing.
Running with Linux for over 20 years!
I thought you only learned sorting algorithms and methods purely so you could impress the dick doing the interview? For all other times you use google, just like everyone else :-)