Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations gkittelson on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Fewer students entering CompSci 6

Status
Not open for further replies.
When I say self taught... I don't mean I sat down and started playing around (well that is how I started but...) ,I actually took the time and money to invested in the resources and actually study How and Why the computer works and the best ways to program it.

I have a descent sized personal library of about 40 books on programming and computer theory...
From memory structure, assembly, C/C++, Pascal, ..., all the way up through graphics, and web application programming
...Which, over the last 8 - 10 years, I have read a majority of.

Not to mention every thing I have learned out of the books through personal experiences, trial & error, reading through open sorce code, and web tutorials and discussions.

If one way works and another does not which is the right way?

For a year or 2 I just studied how to optimize code. Which I learned a lot while doing so. Like if you are going for speed, you need to use integers instead of floating point numbers. If you know that a given value will always fit in an integer don't use long integers. If it will fit in a byte then use that data type.

I am not saying I know every thing about Computers...
(I'm sure there is a thing or 2 I overlooked ;-) J/K)

Like I said above... I WOULD like to get a CS/IT degree BUT if I am going to spend thousands of dollars on the class, I want learn something, and not just get a piece of paper that basically says I wasted X dollars to find out I already knew what they were teaching.

I know how to write a basic assembler and compiler...
I know how to make java programs and web pages...

If I take a CS class I want to learn everything that I don't know but need to.

From what I have rescently been hearing it sounds like a majority of the CS classes are just teaching java crap...

They should be teaching how an operating system works, why it does what it does, and you should be able to leave the class with the knowledge to be able to create your own OS and everything else from there up.

Hell, I know people with CS degrees that can't explain how binary math works (which doesn't exactly take a rocket scientist to figure that out). Now do you want to tell me why the have any business holding a COMPUTER SCIENCE degree???

After all, computer science is based on 1s and 0s, every thing a computer does is based on the science of aranging those 1s and 0s in a specific order to compute the requested data...
If you can't understand that concept... find a school that teaches it.

Bottom line...
Where I work, I am a drafter, I draw 3D models and prints on cad programs such as SolidWorks, AutoCAD, MicroCADAM/Helix.
We use a PDM system to control the data for the parts, check in the drawings/models, and control revisions.
We have a team of programmers, that have CS degrees, where their main job is to write programs that speed up processes and comunicate between the different programs...
It takes them about a month or two to write a halfway descent program.
It takes me about a week, while at the same time doing my normal work, to make a program that does the same thing as 10 of their programs, plus has other features, and at 10 times the speed of their programs. Why? Because I know how to use objects to their max potential, Optimize the code to do multiple tasks at once, and I am coming from the Users perspective... I am using the software, I know what I want it to do, I know how to make a program to make it do what I want it to, so it ends up being a program For The User - By The User.

As it turns out, everyone started using my apps instead of the other teams because mine worked great and ran fast, where the 'CS' teams were buggy, hard to use, and slow.

Don't get me wrong, I know that a class is only as good as what you get out of it... BUT, PLEASE tell me they are still teaching actual computer science curiculum in the classes and not just web design Tech-School ($50 class) stuff, that you can learn in a day on the internet.

So...
what exactly do you mean by...
But do you know why it is the right way? Or do you think that is irrelevant?

Have Fun, Be Young... Code BASIC
-Josh Stribling
cubee101.gif

 
How much time have you spent with Artificial Intelligence programming and theories?
Waterfall models?
Discrete Structures?
Do you know how a true OOP language will work when someone gets that far?
You know optimizing, what do you do with a many-to-many relationship in a database?
Sliding Windows?

It sounds like you have definately spent more time than the average self-taught person I have met, but that dosn't mean you know everything there is to know about what could be considered the basics. Yes you will find a lot of things that are a waste of your time, I was bored the first two years and had a horrible attendance rate, despite the fact that I was getting A's in my CS classes. But the higher level classes are a lot of work and a lot of fun. And leave you more prepared for the programming languages and methods that are further dowen the road.
 
Dunno about anybody else, but i hated discrete math.

Of course the class was held at 7 AM in the attic of a 3-story building where they also raised chickens in the basement. Plus it was winter term (quarter). Came in freezing, climbed 3 flights of stairs smelling warm chicken poop and feathers, roasted our butts off all through class trying to stay awake. Jeebus help anybody with allergies.

This was the sort of low-enrollment CS class that didn't get first pick for classroom space. Offered once a year, required for the major. As you can imagine, we didn't have any jocks in there taking it as an elective.
 
Wow, compared to my discrete class (the teacher and I were competing for most skips in one semester) that was...well...pretty bad :)

01010100 01101001 01100101 01110010 01101110 01101111 01101011 00101110 01100011 01101111 01101101
29 3K 10 3D 3L 3J 3K 10 32 35 10 3E 39 33 35 10 3K 3F 10 38 31 3M 35 10 36 3I 35 35 10 3K 39 3D 35 10 1Q 19
Do you know how hot your home computer is? I do:
 
To speak to the original topic put forward in this post, I do not believe it is a good thing that CS class enrollment is falling. Granted I went to a liberal arts school (I have a Bachelors of Arts in Mathematics and Computer Science, class of 2000) so my conception of CS courses might be a bit different, but it is my general belief that the point of college is not to teach you a trade. The purpose of college is first and foremorst to teach you to communicate your ideas and learn from others. This is how CS was taught to me. We did a lot of group projects and problem sets. We spent many hours discussing and arguing various topics. While the topics were all related to Computer Science and Math, I do feel structured debate and working in groups is applicable to any discipline, Computers Science was merely the conduit. With many Computer Science majors now having trouble finding jobs in software and IT (myself includeded), it has been proposed that maybe majoring in CS was a waste of our time. However, I do not think the major is a waste of time for people who end up in other fields, particularly law and business which require very similar skills. I also feel that computers have such a dominant position in our society that knowing a bit about how they work ain't a bad thing. I feel the same way about other subjects, such as history, law, economics, which is why I have spent the time to study all of them.

As to whether it is better to be self-taught or schooled, obviously you should be both. Alas, I think it depends on the person and the job. First off, all you managers who are reading this, regardless of schooling, don't hire someone who isn't self taught. As with doctors, lawyers, and businessmen (and many others) you must continue to learn new things if you are to be successful in this profession... which is the same thing as saying you must be "self-taught" to a certain degree. That said, I imagine that large complex projects or projects that need to be maintained for a number of years to follow will benefit most from peoople with higher education. I say this because these projects require a high level of communication, which is best learned in college. Someone who is more self-taught is probably very good at acting independently but not as good as a schooled person in groups. The will probably excel at small projects that require only them to code, or maybe one other person, but as soon as you get into a large project environment they will quickly become fustrated. Many of you will blame this on the incompetence of your co-workers, but that's what working in groups is all about: dealing with different types of people of different skill levels. It's never going to be just the best and the brightest working with you, and probably if it was, they would all consider you to be the weak link!

Oh, and while I am upset there are a lot of truly underqualified people in the profession, I don't think we should limit it to the "True Believers", those who get into tech just because they love programming or network administration or whatever. I think it's fine that people are involved because of money. Many people are good at what they do but don't love it, and I know several older developers who will agree with me.

oh and I believe some movie character said it best: "Einstein did his best work as a patent clerk."

Who was it that said that?
-Venkman
 
venkman - You make a good point. All of the professions you mentioned (doctors and lawyers), do continue to learn, just as Comp Sci professionals should do, and in fact must do, given the dynamic nature of the industry. Just as yourself stated, the value of your degree program, was that you obtained a solid core foundation from which your continue learning was based upon. Similarly to the other professions, the self-teaching was built upon a solid foundation obtained through structured education. Doctors begin self-teching after medical school, attornies after law school, and if the IT profession is to attain that level of professionalism, then IT professionals also need to have a solid core formal education foundation upon which to grow.

Every one of us is self-taught. But that begs the question, how solid was foundation from which the self-teaching grew?

Good Luck
--------------
As a circle of light increases so does the circumference of darkness around it. - Albert Einstein
 
Yeah, I thought you'd agree. I'm the one who gave you a star on your other post ;) .

-Venkman
 
All I know is I sure get tired of cleaning up behind "self taught" hacks. Even data structures as simple as linked lists seem to be outside the ken of many these people. Instead I see things crammed into databases that don't belong there, or simple arrays that get searched, sorted, and resorted at runtime. Things that work in a one-off script aren't necessarily suitable for production applications.

Nothing wrong with being self-taught in principle. But there sure are a lot of "self taught" or "crash course" types out there trying to program and leaving disasters in their wakes.

I heartily agree that experience is extremely valuable. But you also need the fundamentals as well as quality experience.
 
"crash course"
what an appropriate phrase ;)

<marc>
 
Going back to the initial post, the question: &quot;So, which is better, quality or quantity?&quot; seems to have an unproven assumption, that less CS graduates means a higher percentage of quality graduates. It's a matter of unprovable opinion, but personally, I don't think that is the case. Just because you have less of an item doesn't mean it's of better quality. However, due to supply and demand less quantity does mean that each individual unit (or person in this case) is worth more, which is where I think this assumption originates from.

-Venkman
 
The quality of IS/IT/CS graduates can be looked at a couple of ways. I'm old school I.T. (21 years work experience), and when I started on a Comp Sci degree back in Fall of 1981, the standard rule was if you couldn't hack the first programming class (fortran back then), within a couple of weeks, you were filling out a drop slip and considering a change of major (back then, overnight work in the computer lab was NOT uncommon, and computers were all command line based, or you were punching card decks).

Zip forward 20 years, the industry has changed, along with the quality of people admitted to college (this is a true fact, and when you have 35% of incoming freshmen needing remedial coursework, you know standards have dropped at 4 year colleges, etc). I took a(n) intro to Java course, and we wound up doing about 8-10 programs in Java (a far cry from the 2 assignments a week I got 20 years ago).

The sad fact is that while I believe less is better, it's often the quality of the person chasing the degree which will determine success in the long run.
 
I think what you're talking about though is not the relation between number of graduates and quality, but between quality of teaching and quality of graduates. Maybe, as you have suggested, the quality of teaching and of the graduates has gone down, but this does not seem related to the quantitiy of graduates... except that they may be caused by the same thing, the profitability of computer work. After all, the good teachers are usually good programmers who are then woo-ed into the private sector for $$$. I know it happened a couple of times at my school

And by the way, I'm a graduate of 2000, and I spent plenty of all-nighters programming on X-terminals in the CS lab banging away at ML (C and C++ would be too easy). I'd be very careful judging computer science programs based on their java courses. It has been my experience that java courses are usually the computer science courses that non-majors take. Try taking a course on Scheme/LISP or ML and you'll see who's really in the major.

-Venkman
 
Well, i'm giving trends that i've seen. A lot of people change from majoring in CS to something else when they find out the level of work involved (and the amount of math and science you have to take).

I've seen several good coders who also consult on the side (to make some extra $$$), and it's a interesting field these days. I find that if a person is just getting into this field because of the money, they are getting into it for the absolute WRONG reason.

As I've told many students, there is a difference between a job and a career (a job is something you do because you have to do it in order to survive, a career is something you do because you really enjoy it) :)
 
Doesn't what you just said contradict what you said earlier? I'm a little confused. You seem to be now saying that a lot of people are weeded out of the CS track, in the same way people have been weeded out of the premed track for years. Wouldn't this mean that the overall quality of the people who survive the major is good then? That only the more dedicated, motivated, hard workers make it through? Which would mean that increase in numbers is only a sign of increase in the number of people who try, as opposed to a sign of decreasing standards allowing more people to graduate.

-Venkman
 
My point is that depending on the school a student attends, the quality of instruction (or work by the student) may not be that great. As a(n) example, the local univ. where I am at has programs in CS and MIS, but in reviewing BOTH programs, I find the CS program has some weaknesses, and the MIS program a LOT of weaknesses (it's really a business degree with about 7 or 8 IS courses, half of which have no business being taught at a upper division level).

As a result (current job market notwithstanding), the MIS graduates haven't learned enough in order to secure a(n) entry level position in the I.T. field. They'll make fine managers, but not for 10 to 15 years, and until they take some additional coursework to fill in the knowledge gaps.

The CS graduates are somewhat better, but they also lack what I might define as 'real-world' knowledge (use of IDE's, revision control systems, etc). On average, it takes a company 3 to 6 months to bring a CS graduate up to speed, and in today's market, they don't have the time, so there are few entry level positions being advertised.
 
Dogbert2 -

I agree. My university (was a college at the time!) didn't cover version control or software development best-practices at all. Every time we hire a new guy, we have to teach them how to use the tools properly... they're used to being &quot;cowboy coders&quot;, and don't understand that when you're serving up 5 million page views a day you can't just sling code out there and pray it works.

Chip H.
 
Well dogbert the situation you have assessed sounds pretty typical. However a Computer Science program isn't actually intended to be a business data processing curriculum. Normally it lies someplace between a sort of math curriculum and an engineering program.

As a result I'm not sure I'd be surprised that such a program didn't cover &quot;real world&quot; (hammer and nails) knowledge. That isn't its purpose. Just as a guy showing up for work at a construction site without hardhat, work shoes, and coveralls would be out of place - a CS grad shouldn't be taking jobs as a &quot;programmer&quot; without the right equipment. But engineers aren't paid to swing the hammers.

To make such a degree program worth something though, many schools require one or even two minors in subject areas of application. This could vary from psychology or things covering the concerns of disabled people to philosophy or hard sciences, or almost anything. The point being to produce budding computer scientists with a well-rounded but directed background, and in many cases to prepare for graduate work if research is the academic goal.

Topics like software development tools are not what I think of as college-level subjects, though they clearly can't be ignored. I'd think much of this subject matter could be covered in a course or two on software engineering tools along with project management and so forth, but there is only time to fit so much into a four year program. This is mostly supplemental &quot;business matter.&quot;

A degree in CS isn't supposed to turn out cannon fodder for industry, that's what your &quot;MIS&quot; or &quot;DP&quot; programs in business colleges are for. True, there are a limited number of slots to fill as research scientists or even systems programmers, and today most of these are within vendor operations.

In the past computer users employed these types of folks to do the sorts of things people do with Linux now on a tinkering basis. I was a systems programmer for many years with customer sites, and was involved in OS bug fixing, tweaking and enhancing scheduling algorithms, adding system-level recovery logic and so on, as well as writing and supporting what today would be called &quot;middleware.&quot; We also supported communications processor software and network configurations.

Today things are different. Vendor software is much more mature in most cases, hardware is cheap, reliability is higher, and performance is achieved by adding raw dollars (more hardware). Networks are now trivial at the customer level because of intelligent commodity network hardware, fast reliable networks, and a consolidation toward a single network protocol (making the previous items possible).

So CS degrees are still needed in industry, but these functions are almost exclusively in vendor organizations.

As for &quot;IT degrees&quot; this is almost an oxymoron today. For the organizations I'm involved with &quot;IT&quot; has come to have a very different meaning than it once had. While still used generically, many people think of the LAN and desktop infrastructure when they think &quot;IT guy.&quot; These are the guys who bring you a new mouse, who work on today's simplified networks, and run file/print/email servers. This is a 2 year technical school type of occupation, not something you go to school 4 years for and probably not a long term career. We always had &quot;techs.&quot; I did my time carrying terminals around and splicing network cables in the early days, and two of my kids have done the same thing as college intern work recently.

Remember: Microsoft, Banyan, Novell, and others hyped and glorified these roles in an attempt to replace centralized computing models with their &quot;network computing&quot; products. As those products matured the level of skills required diminished as well. We are now seeing a readjustment in thinking as users and management becomes more sophisticated about what &quot;IT guys&quot; actually do.

Sure, there is a lot of work to be done here by intelligent, informed people. But look at the sorry state of most server installations and the LAN directory services people are running. Few really do quality work in these areas, and few demand it.

The MIS type business degree serves a completely different purpose. They are also the most &quot;endangered&quot; in some ways. Much of what this class of employee did was Cobol programming and low level application design analysis, typically using architectures and platforms already decided upon elsewhere. Many of them go on into project management or become DP managers. No science, no engineering, just meeting business problems with solutions - certainly enough for anybody.

A lot of what these foot soldier programmers once did can now be accomplished using RAD tools, packages, or even by end users with Access or Excel. So I see &quot;programming&quot; skills being de-emphasized more and more in MIS programs as time goes by. Their role will tend more toward orchestrating solutions from pre-fab technology and coordinating contract developers who whang together &quot;custom&quot; solutions out of ever-more-advanced RAD Lego.

There are plenty of variations, and different people have excelled outside the &quot;pigeonholes&quot; I have described. But we are talking about the thrust, or the direction of these types of education paths here. Everyones' mileage will vary.
 
For once, I agree also. The problem is that the undergraduate system of 1 semester courses does not lend itself to teaching the kind of skills you need in a job. Short term consulting aside, most of us do not work one job for 6 months and then leave. We also do not work alone. Classes at universities need to start spanning at least a year and involve long term group projects to get the kind of training students need. Revision control systems and IDEs should be taught in a way that they are immediately useful to students. If you're working on a year long project with 10 other CS undergrads, then you're forced to use ClearCase or SourceSafe or whatever your favorite flavor is.

At the same time (I have very mixed feelings on this), I'm wary of over-emphasizing practical skills at the expense of studying theory. My own curriculum did not contain the kind of course listed above. The closest I came was a 1 semester elective course in software development and OOP that involved a 1 month project with a group of 6 (amongst other much smaller projects and assignments). I question what I would've cut out of my education to allow for a full year course. Automata? CSO? These are not really necessary for software development (in comparison to what's already been listed), but I couldn't imagine a Computer Science curriculum without them.

-Venkman
 
note: previous post was written before dilettante's post, which I haven't read yet.
 
Well, what it comes down to is probably a re-tooling of a degree program. I received a(n) AAS in Internetwork Technology (core classes + Novell/Cisco network academy, fiber optics, technical/business writing). This came out to about 62-64 credit hours, and while I know it's NOT a 4 year degree, I find that most 4 year programs that I've seen are hardly suited to me at this stage of my career.

Now, i've seen programs like what Capella or Univ of Phoenix, where they have programs for non-traditional students like myself. I'm not interested in getting a
C.S. degree, but perhaps a BS in I.T. would be more suited for my tastes, as i've done techno-stuff for more than 20 years now :)
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top