Computer Science Curriculum in College
Ludwig Feuerbach writes "As it's back to school for university students, including Computer Science undergraduates like myself, I look at my course schedule for this semester and I have courses with titles like: Theory of Computation, Numerical Analysis, Artificial Intelligence, Machine Learning, and History of Economics from Plato to Keynes. The first 4 courses are required in my CS program. I had thought nothing of it until I read an opinion piece by Dan Zambonini, who stresses the type of courses I'm taking are, essentially, useless for getting a job. He lists several CS courses useful for a job. Is he right? I tend to think that an university education should stress scientific topics over vocational ones, but since I'm just planning to get a job after I grad, am I in the right program?"
for a job, then go into CIS.
it is oriented at getting the student to learn how to use computer systems found in business, how to create tools for those systems and how to manage and build on those systems.
I am the Alpha and the Omega-3
The types of classes you prefer will depend, essentially, on what you see as the purpose of a higher ed degree or some would even argue the purpose of an education. Some would argue that it is to prepare you for a job through the acculumation of a set of skills or a knowlege set. Others would argue that it is to prepare you for a lifetime of learning. In this day and age, odds are unless you're in a position where you can call in rich, you'll take more than one career zig or zag in your lifetime. Yet another group are those that see the purpose as a mixture of both. In the end, your choice as to the purpose of education should be one of the fundamental questions you get a personal grasp on before you even apply to an institution of higher learning.
Sometimes the stuff you learn there seems completely and utterly unimportant for day to day usage. Still, often you suddenly get into a situation where no other non-CS guy can't find a certain bug because they lack the understanding of the background. I've been in the stuation myself where I was able to fix a bug that resulted out of the use of floating-point numbers. The guy that implemented the routine just didn't know about the mathematical boundaries of floating point numbers. It's just an example...
If you just want to become a programmer, just follow some evening courses... That's all you need... Programming isn't all that hard, but don't come complaining to me because the sorting routine you wrote is too slow and don't know why.
Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
BS and MS degrees are meant to lean more towards the vocational side, whereas a Ph. D is all about the scientific/research aspect of the subject.
When you're rich, you can buy all the books you want and read them, hell, you can pay someone to read them to you.
A degree is an academic certification and as such it should not cover topics simply because they're trendy in CS related jobs at the moment. It should teach a curriculum that gives CS students a good background in a wide range of topics and above all else it should be interesting and set up a good basis for more advanced academic training.
It is not surprising that sometimes what is good course academically is not necessarily a good course from a business standpoint. As a professional programmer I think that CS graduates are typically no better than someone with no degree at all. I understand that this is a pretty damning thing to say considering the majority of slashdotters probably have a CS degree but in reality the CS degree gives you nothing in terms the ability to write good code.
In fact, a CS degree typically makes for a more dangerous coder due to their belief that the few programing projects they did on their course makes them a professional programmer. It also trains the wrong instincts. Academic coding is about producing beautiful programs - business coding is about being pragmatic. Often they have a hard time rejecting these academic instincts.
I liken programming to playing chess. Anybody can learn the game in a day but to become a master takes dedication, a willingness to learn and a lot of time. I've stressed the "lot of time" point because I think this is a key problem with CS students. You get the typical line out of them at an interview "I didn't learn C# in Comp Science but I could learn it in an afternoon.." I'm a young guy (22) and I've been programing professionally for nearly four years and I can tell you that this is simply false. Make no mistake about it, I'm still no coding grand-master and probably wont be for another ten years. When somebody says that they can learn a language in an afternoon it doesn't make me think they're lying, it just makes it blatantly obvious how ignorant they are of intricacies of writing code.
In conclusion.. I think that having a CS degree is no real advantage over having a physics, chemistry or maths degree. What a degree shows you is the person in-front of you applied themselves to a long term project and got a result. The same conclusion can be drawn from a person sat across from me without a degree but three years of experience. Really, both routes are equally valid and I hold neither higher than the other.
Simon.
The classes you have to take are required for the degree, and the degree is very important. On the other hand, some people have great success just learning how to program on their own.
I'd say there are more successful people in the programming world with degrees than without, though, so I'd stick with the courses your college requires.
If you really want to stand out when you're looking for a job, use your spare time to write a well-designed app that you can show to potential employers.
First define your needs/goals. Are you wanting a coder position? Research? Once you've defined what it is you actually want to do with your education, then you can figure out if the courses will help you reach your goals.
You are learning to think critically and hone problem solving skills. CS is not computer programming alone. The biggest problem in computer design is and always will be applying the best solution to a problem within the constraints allowed.
I stopped university and got a 'lower' but much more practical degree. This actually meant I was on the market sooner, and by the time I would have gotten my university degree, I was making the same amount of money as somebody who gets out of university.
And guess what? I already had work experience...
University is something you (should) do for the love of science, not for just getting a job.
Mike
There are many college programs which are designed to grind out more teachers of those programs to other students who in turn teach them to other students and so on. Think of all the History degrees and all the other esoteric programs like that. This CIS program appears to be of that ilk.
It's the skills you gain in the process. Science degrees give excellent grounding in analytic thinking, numerical skills, (maybe) experimental skills, etc... Vocational training may give you an advantage in some cases but these skills can often be picked up quickly in the workplace anyway.
We can't answer if you're in the right program unle ss you tell us what you're planning to do with your degree.
..
IT?
Programming?
Where do you see yourself in 5 years, etc
I use to be proud of the fact that I held a CS degree, but that changed when CS became more about job training than a science. If you want a real CS degree, then become a math major.
This seems like a common question. There will be plenty of people who think that college should provide vocational training and plenty more who think that college should teach you "how to think independently".
I'm personally more in the second camp. I think that there are vocational schools for those who want to learn the vocation, but those skills will need to be constantly updated. I think that what you learn in college (as opposed to vocational schools) should be applicable to more fields than just the one that you learn and that you should be able to apply the lessons beyond what the curriculum specifically teaches.
Essentially, if you want to learn the theory of how databases work and know how to write a database you're taking the right sort of classes. If you're wanting to become a DBA, you should really go to a vocational school.
I don't know about American Universities but here in Germany the theoretical courses are the only ones that have long-time-useful information. The practical courses focus mostly on technologies that will be outdated when I leave college. They also usually focus on details that won't stick in my head after the test because they are easily re-discoverable via Google. The theoretical courses are the ones that enable me to read about new stuff and actually understanding what it does as they are the timeless background for all of CS.
Linux is not Windows
A lot of college curricula assumes that you want to
;)
go all the way to a Phd and be a grant mongering research scientist. You do not need to be that to get a job.
BTW first post
I wouldn't worry, though, as most everyone else is going to be coming from this "wrong" program as well.
Best read in good ol' Monaco 9 point.
I had one coding job right out of college where those classes were irrelevant. I was working with mostly EE's. The next job I had was working with math phd's. In that job, those courses were definitely necessary and I was actually inadequately prepared on the theoretical side.
I liked the second job much more and it paid a lot better.
If you ever want to get into the business side, take all the econ you can get. I'm now at a top 10 law school and THANK GOD I took some econ or I would be toast.
<high-level position here>
<name of stupid small company here>
Not that theory isn't important. Understanding the basic principles of computing makes it easier to both learn new programming languages and troubleshoot problems. However, as a recent graduate of a comp sci program at a tech school, I feel relatively useless. There was very little in the way of practical application of the things we were learning, and what we did work on seemed to be about five years behind the industry (for example, we spent our first two years working with C, and we never even touched the new .Net stuff).
The big problem is that most of my professors lacked any experience in the field beyond studying and teaching at universities. For a major like computer science, colleges need to hire more people who've actually held jobs in the industry.
Those classes are NOT worthless. They may not help you directly in getting a job. However, when you are in serious software development and architecture for the long haul those classes are invaluable! Don't ever let anyone tell you otherwise. I was a working programmer right out of high school. I have since been getting my undergrad degree after hours. I treasure and value pretty much every college course, even classes that don't relate directly to computer science. These classes help me understand the world around me better. This in turn helps me be a better adjusted person more capable of dealing with life, which lets me focus on my work when it is time to work.
Things that are directly related to computer science. Those are all big and important in my opinion. It is, after all, computer science. It is supposed to be theoretical. Having the theoretical knowledge with some practice of the practical and a god overview of the big picture of software development after a few years of real software development make you a more complete and competent programmer than just being some code monkey at a vocational program. I have used directly, or indirectly everything I picked up from the theoretical side of CS. Maybe it was just making a decision or piecing together where someone was going with a particular technology. That knowledge makes me a better all around architect. So sure.. if you want to be a code monkey who can sling out code.. by all means go vocational.
If you want to understand software at a deep and truly meaningful level do the theoretical as well as the practical.
Jeremy
I've been a software development manager for a long time and I've hired a lot of people. Fundamental development skills are essential. This includes knowledge of data structures, algorithms, C/C++ and another 'major' language (c/C++ is a must have), a basic understanding of micro processor archithecture (this means some ability to debug in assembly, at least a little), good written and verbal communication skills (e.g. can you write a decent bug report?, can you lead a decent code walkthrough?). Funcatinal knowledge of operating system fundamentals such as memory management, scheduling, I/O (Syncronous, async), and networked I/O (TCP/IP) are also important. Again, I don't expect folks to be able to write a kernel, but they do need to at least be able to use more than one thread to do I/O or handle UI while doing something else, or open a socket and do a little client/server work. Note that economics isn' bad, but it should be micro, not macro. Even entry level devs need to have some inkling of business trade offs.
Jibe!
I teach in a community college. Our three year grads compete for jobs with four year engineers. Our students often win the competition. They have really good design skills and when they get on the job, they are immediately productive.
...
The problem comes a few years later. The three year community college grads lack the math skills to follow the journals. They plateau. The four year students keep grinding up the hill. After a while, they are as productive as the three year students and then they pass them.
The best education may be a combination of the two kinds of school. We often have university grads taking our program so they can get jobs. They really do well when they get onto the job market.
So, ya pays yer money
Switch to a university where they teach you both the theory and the practical. First off, that seems like an odd selection of introductory comp sci courses. But beyond that, I'm sorry, but unless you somehow are going to get more practical experience later, you'll be useless with a degree like that. You have to have a strong foundation of programming and design (yes, advanced design patterns and all) first. Then you can deal with issues such as AI or advanced math or machine vision or whatnot. But because you have that practical foundation, you'll be able to apply those advanced concepts you learn.
In the real world nobody will give a s**t whether you've taken numerical analysis. They're going to want to know if you can program, if you have a strong grasp on algorithms and data structures, if you understand the software engineering cycle, if you know how to effectively apply design patterns, and if you know how to communicate with your co-workers and non-technical people. Knowing theory is a bonus, but even then only if you know how to apply it to practical applications.
-James
It's ok to be in programs like that. Just make sure to get a 3.5 GPA and do as many high-profile internships as possible. The combination of those two things will get you a job.
My schooling was kind of a joke, but job experience, GPA, and activities participation helped me land the job I have now.
Good luck!
More than enough BS
I have to agree that Dan's acount is true for someone looking to hire somebody in todays job market. But that's not what school and learning is about, these are skills and information that will last throughout your life.
Take for example the focus on network protocols, this has immediate value, howevever, over the long term it's more valuable for some one to understand the 7 layers of a network, so they can understand how HTTP applies to one of those layers. Then 5 years later when they are promoted to architecting huge global systems they would be able to understand the differences between layer 2 routing and layer 3 routing as it pertains to distributed computing.
The net net is that education is not a means to a job, it's a means to learning. Jobs come and go, especially in todays economy. But the really valuable skill is being able to apply what one has learned.
The irony is that schools don't teach practical skills, but most companies prefer college graduates anyway. So, finish your degree, but spend your free time contributing to open source projects and reading about real-world phenomenon.
There are plenty of vocational training progams in computers out there, if that's what you want, get one of those degrees, and not a BS in Comp. Sci..
There are numerous jobs available in high end, research grade computing. There may not be as many as there are CS graduates (for one thing many essentially require an advanced degree, as well,) but they exist, and they make heavy use of the cutting edge stuff, particularly what I do, which is in Biology.
That said, if a particular employer would rather hire someone with a narrow base of vocational training than someone with a broad range of training in complicated and mathematically rich sub-disciplines, for many jobs he's a fool. For a high end position, you desperately need people with, to be blunt, the capacity to actually think, which you can call by the buzzword of choice.
Developing an understanding of more advanced, and not immediately intuitive, techniques in CS *can*, although there is no guarantee, trigger someone to develop the needed mental faculties to work at a higher level.
Finally, the vocational level work is being oursourced to India anyway. I don't think that CS departments in the US and Britain are doing anyone a dis-service by training them to do something more than that.
The good and new comes from no quarter where it is looked for, and is always something different from what is expected.
I'm facing the same problem right now (in Italy) and actually I think there's a reason because it's called Computer Science and not Computer Systems Engineering (os something similar). Maybe those courses won't be useful for the majority of IT jobs, but a strong theoretical background could be useful in some careers (apart being a researcher in a University). In my opinion, theoretical results last forever, while any programming language (except C, maybe) is going to become obsolete in an unspecified future. Just my 2 cents...
Once you're working you'll realize that getting the job isn't where you stop setting goals. You'll want to do a good job and make insightful decisions. You'll learn that you want to contribute to the field that you're working in, beyond hacking out whatever the business tells you to. You'll want to contribute to society. For these things, the better your understanding of your field and the world, the better you'll do - that's why you're going to university.
Now, you can do all of these things without university, but you've got to be very driven and interested in what you're doing. Interest and ambition to contribute more than just labor is the biggest factor in my experience. Jesus isn't remembered for being a carpenter. Ghandi's not remembered for being a lawyer.
you had me until it came to the part about learning a new language. I am sorry, but once you know how to program, learning a new syntax, especially one that is so close to one that most CS students have had experience with, is easy to do.
yes, you still need to learn the library but the language is trivial.
I am the Alpha and the Omega-3
I teach physics, often to biology majors who think it's irrelevant to them (even though biology is based on chemistry, and chemistry is based on physics). If they can do well in my class, it says something good about their intellectual abilities. And anyway, what about the person who never gets around to reading the lab manual before lab, and tries to get his partners to do all the work for him? He's not going to do well in the course, and that does relate to whether you'd want to hire him in the real world.
Another favorite of mine is the two-meter sticks that are labeled 0, 10, 20, ... 90, 100, 10, 20, ... 90, 100. Every semester, I have students writing down a certain height as 42 cm, when actually it's 142 cm. Is this irrelevant to employers? Well, would you want to hire the kind of person who is in the habit of writing down numbers without checking to see if they make sense?
Of course, the courses you're talking about are at a much higher intellectual level, but the same principle applies everywhere. There's a reason why people would rather hire an office manager who has a degree in English, rather than someone with a degree in physical education.
Coding is easy. Anyone can learn to code. The hard stuff isn't typing lines of code into an editor, it's being able to design software, figure out tricky algorithms, ...
Find free books.
In the decades of your career you'll work on totally different subjects and will have to learn new programming languages and techniques. Knowing how to learn these "new tricks" is what distinguishes an educated person from a trained one.
Learning theory while using "academic" languages, which nobody uses in "real life" will be very useful... You will be able to pick practical things up quicker and there will be no shortage of that later in life.
In Soviet Washington the swamp drains you.
I disagree with you on the point that you can't learn a language in an afteroon. Every programming langauge has its own set of syntax rules and functions. You can take an afternono and learn the basic syntax of the language, memorize a couple of the functions that you will use often, and find the best resources for help about the language. After that, your learning process will be just learning as you code. You said yourself it's going to be another 10 years before you would consider yourself really good at it. You aren't going to get there by just sitting and examining tutorials. You learn it by actually programming it and doing google searches / resource searches every time you come across something you need a tip on.
So while learning it in an afternoon won't make you a killer coder right away, it is enough time to set you up to be able to code just about any app and learn as you go. If you already know other langauges, then it will be fairly easy to apply the rules of good clean coding to this new language as you go.
If you can't say something nice, make sure you have something heavy to throw.
If you don't know what computer science is, then you're lost already. Studying the science of computers means you are going into a field of science dealing with the fundamentals of computers. No, it doesn't translate into a typical job, but it can be used for lots of jobs. CS plus other practical classes can give you an incredible edge. If you are trying for just getting a job, stay out of CS. In fact, PLEASE stay out of CS if that is all you want. CS is being deluted by that kind of attitude. A computer scientist advances computer theory and ideas, not just their paycheck.
AB HOC POSSUM VIDERE DOMUM TUUM
When I was coming to the end of my degree, nearly 10 years ago, I took part in a consultation exercise. Another panel member complained about the lack of vocational aspects to the course, saying "We did a module on networking, yet Novell wasn't mentioned once".
But he was wrong. While Novell still exist, Novell networking as you might have recognised it in 1995 is all but dead, whereas the theories and paradigms I learnt during the degree still serve me well.
And that's just one example.
well, some mention of common protocols, but seriously, that's it? I've found that to be one of the most useful things.
:)
I would recommend taking discrete math and linear algebra. Both are probably requires for you CS degree, but I can't count the number of times that familiarity with those concepts has helped me out.
I've felt that my CS degree taught me how to learn, not how to do my job
-- Who is the bigger fool? The fool or the fool who follows him? --
I never understand why people pay so much attention to articles like this. Dan Zambonini runs a small company that nobody has ever heard of which makes a content management system used by a bunch of people you've never heard of. I suppose that's a little better than Joel Spolsky, who makes software that *nobody* uses, but these guys really don't have much of a clue what kinds of jobs are out there in the companies that, you know, you may have heard of before -- they're too busy running their garage operations.
I've talked to recruiters from companies like Google, Microsoft, Symantec, etc. and while they do want someone who can actually sit down and write a program, if you are going to write software you are going to need to understand things like analysis of algorithms or else you are going to end up putting bubblesorts into production code and leaving users wondering why your search feature takes so much longer than your competitors'.
Of course, if you want to work in the database department for a large company and write software that moves tables of numbers around and is never seen by the outside world, then by all means go into MIS. But if you, like most aspiring programmers, want to release software onto the general market and you want to write something other than very basic utilities like "Windows Power Tools" or "Texteditor Extreme 5.3," you are going to have to have a foundation in computer science and a whole bunch of math.
I used to read Caltizzle. I was a lot cooler than you.
I don't really see college as training you for a job... sure, a major will focus you on a particular curriculum, but IMO it's more about opening up your mind and becoming a more educated person (in multiple topics).
At Boston College, our core required us to take classes in philosophy, theology, math, sciences, history, etc... a well rounded education. I'm sure it's the same in most colleges. As a computer science major, did I need to learn about Plato or Socrates or religion? Not really... but it made me a more well rounded individual.
When focusing on just the CS courses I took, besides the basics of coding there isn't much I use in my current job... but it got me used to learning a new language and applying myself to solve a problem with it. The classes I took to get my BS: Computer Science I and II (Data Structures, C), Object Oriented Programming (Java), Advanced Java, Computer Organization and Assembly Language, Programming Languages, Algorithms, Theory of Computation, Computer Graphics, Computer Vision, Multimedia Programming, Digital Systems Lab, Technology and Society, Art & Digital Technology, Advanced WWW (Flash)
I'd say I got a great CS education with all the classes I took... I took a LOT from them, but I don't exactly use things straight from the classes in my coding job. I don't use C, or Java, or SML, or Matlab, or OpenGL, or assembly language, etc... but by learning those languages, it made it easier to learn new things in the future.
IMO, college essentially just opens up your mind and gives you the skills needed to be able to adapt to whatever your future employer will need you to learn.
Choose major
Plough thru piles of papers and exams
Land job in large software company, only to be told everything learnt in college is El-Krapo
Undergo training within company Since this happens anyway, IMO it's a Good Thing (tm) that more core papers are tought in colleges. If the large cos. are going to run you through a training program in any case, it makes good sense to do stuff in college that actually ensure your fundamentals are solid. And, like in the comments from TFA, college is *NOT* trade school. In fact, quite contrary to what Zambonini (does that name make anybody else hungry?) says, the vocational papers should be made optional. Hey, I'm pretty sure, if you can grok compiler design, finite automata, AI et al., you could easily wade into XML/SAX/DOM/"other industry stuff"
[Slashdot Comments We Liked]
>I tend to think that an university education should stress scientific topics over vocational ones
I'm glad people like you still exist... you wouldn't believe the number of students who whine to me that computer science courses are "useless". They want courses like "How to program for Windows XP" and "How to install network drivers"....
The analogy isn't quite apt, but I'll use it anyways: taking a computer science degree to become a line programmer is liking taking a physics degree to learn how to operate a microwave oven.
Again, not apt (much hyperbolized, in fact), but you see my point. Computer science is supposed to be about _science_... it's not a how-to-program course. Programming just happens to be one of the tools computer scientists use (just as some physicists use microwave emitters in their research).
Honestly though, a CS degree _will_ give you an excellent foundation from which to learn job-specific skills. Once you understand programming languages and algorithms on an abstract level, it should be a piece of cake to learn "trendy new programming language #37" when your employer requires it.
The notion that someone should be calling themselves a "software engineer" while not understanding the Church-Turing thesis is absolutely horrifying. There are very real mathematical limits to what can be accomplished with computing... and some surprisingly simple tasks simply aren't computable, ever. Any serious programmer should know how to identify when they may have been asked to do something that is provably mathematically impossible. Of course, I doubt they teach the theory of computation at your local trade school.
Dan Zambonini would have us turn a Computer Science degree into a Computer Technician's diploma. The man hasn't the foggiest understanding of what computer _science_ is. He probably also thinks that astronomy degrees should concentrate exclusively on building and maintaining telescopes.
Don't let his shocking, and deeply depressing, ignorance make this important life decision for you. If you like science and you are enjoying CS, stick around. With a good foundation you'll be able to pick up particular job skills surprisingly quickly and with very little effort. If, instead of foundations, you learn only specific skills... it will be harder to adapt when the required skill set for your job changes.
What I wouldn't give to see the animated corpse of Dijkstra impale this Zambonini chap with a GOTO statement and a telescope.
I work for a major game developer as a software engineer.
I did a B.Sc. in computer science, at a university that is rather oriented towards the more theoretical side of the curriculum spectrum. I then did a M.Sc. specializing in computer graphics and animation.
And... I can guarantee you that your Theory of Computation course will provide you with essential knowledge in any algorithm-heavy job (which is definitely the case when writing games). Your Numerical Analysis class also has a direct application in physics engines for games.
The other two I can't comment on as my area of expertise is not AI, but there's a good chance that the AI guys where I work would tell you that those courses would be valuable as well.
Just keep that in mind. Some places you won't work without a degree -- I have a couple friends who would have liked to work at the university like I am, but can't since they didn't have their degrees finished.
They've all gotten jobs in the area, but aren't particularly happy with them.
Not that you'd expect my degree (MS in CS) to have anything to do with my job (systems administrator), but it does. My MS was in parallel computation, and now I manage a supercomputer. The degree has been useful: good for tracking down bottlenecks that are limiting performance, makes it easier to talk to & support the scientist users of the machine. (being a TA for the parallel programming course for scientists & engineers probably didn't hurt there either)
All that said, why would you want to work at a university? Pay's better in industry, but you can't beat my benefits package until you've been there years and years. (possible exception: google)
24 days paid vacation/year, plus 2 floating holidays, plus all the usual state days off. Flexable work hours, telecommuting, low stress, great bus system in town. (applicable to C/U only possibly)
Slashdot Patriotism: We Support our Dupes!
I've got degrees in Physics and Math; and have never, ever taken a Computer course. I've also done a heck of a lot more than the author has.
What the author doesn't recognize is that one of the reasons you should take courses which aren't job related is to make yourself well-rounded. That is, capable of handling anything which comes up, instead of just being technically proficient in a few TLA's of the moment.
He completely fails to understand that the computer training you received in College will typically be obsolete in 5 years. However, if you've received an Education (instead of training), you can likely adapt to handle the new stuff as it develops.
Somebody who can actually think can pick up anything. Someone who just has job training is going to be in trouble unless they know how to adapt.
The only constant in this universe is change. You're best off preparing for it.
If you want to be a code monkey, take vocational courses: learn Java and C++, learn about the buzzwords du jour (XML, SOAP. Ajax, whatever.)
If you actually want to be a serious programmer/designer, get a strong grounding in CS - that means data structures + algorithms, automata, numerics, compilers, OS design, etc. Know C++, Lisp, and a functional language.
So DZ doesn't want programmers who know how to write a compiler? Great, on his next big project, he'll wind up with a system with several embedded ad-hoc languages hidden away in it. Worse, he won't see anything wrong with that.
I've hired programmers for C++ environments who didn't know C++: if they're strong enough, they'll be up to speed in a few weeks.
At my current job, we want to see core CS courses. We have to teach/retrain all our hires anyway, so we might as might hire people with a strong theoretical foundation in CS.
Yes, like the "from..." line indicates, this guy's blog is focusing on software engineering much more than computer science. It is a difficult thing to figure out, if you intend to go into software engineering after graduating with a CS degree. Most universities don't focus hardly at all on software engineering.
I am encouraged by the fact that the (well-known) university where I am an instructor is making increasing efforts to instruct the students in software-engineering practices as well as in computer science. That is one of the main purposes of my job. I graduated with a degree in CS, but after spending a number of years in the industry, and having focused on good software engineering practices and good architecture, I feel like I have something very valuable to contribute to the incoming students. There is a long-time joke about not hiring graduate-students because of their software-engineering inabilities, and this has been my experience too. I am very glad to be in a position to be able to improve this weakness at the school where I teach. It is a common weakness.
Now, by the same token, I have derived great value from my Computer Science training. It helps me to understand what is possible, what is impossible, and what is a desirable solution, based on the theory rather than on simple-minded guesses. And without understanding the theory, you are going to be much less effective in crafting powerful, extensible, effective solutions to the problems you will be given in the industry. Without a course on learning-systems, how would you know the capabilities and weaknesses of neural networks? Maybe you would just throw them at any problem that seemed like a good idea, and you wouldn't know why they didn't give you the desired results! Or perhaps you would be given an NP-hard problem, and have no idea why your solution is terribly inefficient, where you can find one at all.
I agree that software-engineering skills are very important to develop, and if you are at a university where this is also a focus, jump on it!! If you aren't, focus on it in your spare time. Get great books on the subject - a small amount of Googling should help you with that - and read them. Be observant when you are working on various-sized software projects; see what works and what doesn't work.
But by the same token, an education in Computer Science, in the theory behind the practice, will make you particularly capable in the industry, and will help differentiate your skill-sets from the rest of the people offering their services. Maybe in time you might even find an area of particular interest, and pursue it in graduate school. You will just have to keep focusing on developing those software engineering skills on your own, because both of these capabilities are necessary to excel, not just one or the other.
In the Aug 23 story on how most students prefer Interdisciplinary studies to CS. This poster had the best response to the topic I've read.
-"Those who fought today will die tommorow."-
"I understand HOW - I do not understand WHY."
CS teaches you why. Once you understand why, picking up how any number of times becomes routine.
12:50 - press return.
And yet another story from clueless CS students and all the slashdot fems giving their two cents.
If you want a job writing code for businesses, then you probably need to make a switch. But is that what you want? Think carefully before you make a move.
Let me play devil's advocate for a bit. The following are typical of some things you will face doing development for businesses:
- Users who think they can design software, but barely know their own jobs, let alone yours
- unrealistic timelines/deadlines
- minimal budgets
- corporate peons who are more interested in climbing the ladder than doing quality work
- project managers who seem to only know how to say yes to users and business sponsors and are genuinely surprised when you tell them that "yes" will cost X, and take 3 months
By all means, none of these happen continuously, but far more frequently than not.
We are a RADAR development house. The skills we want look a lot like what Ludwig describes. Our emphasis is on scientific and numerical programming, not web skills. It's too bad that Mr. Zambonini cannot find the web monkeys that he wants.
The only factor missing here is a strong knowledge of hardware, so we also interview Computer Engineering students or CS majors with Electrical Engineering coursework.
Our problem has been that most grads are not particularly knowledgeable or skilled, regardless their degree. We generally want only the top 5-10% and they are sometimes tough to find, especially when we must work through the HR department.
"Computers are useless. They can only give you answers."
-- Pablo Picasso
Whatever you do - don't abandon your course. The most common computer job is that of IT Support and Administration. This does not require a degree, any clown with an MCSE can work at this. It's what I do for a living so I know what I'm talking about here. I also know that jobs in IT are becoming less attractive as the number of potential employees rises and the number of available jobs declines due to better remote administration facilities and outsourcing of services. Over the next few years the postition of IT Support Engineer will reduce in standing until it reaches equality with that of building maintenance engineer. IT systems will be so common and transparent that they will largely be used without thought on the part of the users. In order to escape this you need a value added qualification. One that demonstrates the ability to think in a critical manner, perform research and produce technical reports that are accurate and comprehensible to a target audience, from lay people to experts. These reports are needed by companies and organisations so that their boards and committees can make sensible business decisions. A degree is absolutely the right qualification for your long-term employability. Nothing prevents you from getting an MCSE too.
==========
Error in module creativity.dll : Unable to create witty comment.
Abort / Retry / Ignore ?
Actually, I have found employiers to _LIKE_ entry level programers to have a wide range of classes including some good solid theory. One complaint we have here about many of our younger developers is they skip thier theory classes and it really shows when they work on complex problems. The OP link sounds like someone geared more twards associates degrees or other technology focuses programs. The point of a CS degree is NOT to learn flavor of the month technologies, but to learn how to learn and have a good foundation. I actually get really displeased when I see colleges trying to push things like XML or Java courses into the main courselist....
There seems to be a disconnect between what CS is and what most curriculums offer. It seems that the submitter is getting a solid CS background when he might be looking for a degree in Software Engineering.
This seems to be a common occurance. My alma mater offered a CS degree which was actually more of a software engineering degree. Sure they offered courses in AI and more scientific branches, but I learned more practical programming than anything
I believe this confusion comes from the fact that colleges are pushed to churn out students that can get jobs instead of get their PhD. Sounds like it's time for seperate degrees.
Information Science which was offered by the Economics Faculty - geared heavily towards the use of Computers in Business.
Computer Science hosted by the Science Faculty - focusing on the academic aspects of Computing.
For us, the choice was made quite clear - If you are more interested in building a base for a normal career working with computers, go with Information Science.
If you are more interested in going into research, or doing 'low-level' work in high-tech firms, go with Computer Science.
Clear cut and everyone was happy!
--- blackironprison, where ignorance is bliss....
I'm sorry, but I just can't take anybody seriously who thinks touch typing belongs in a college-level curriculum. I took that class in 8th grade!
I have been on the hiring side for many years(I am a software engineer) doing low level over part of my career and doing web services during other parts and the areas of expertise(or even proficiency)that seem to be hard to find are data modeling and databasing.
I am a CTO for a small but technologically cutting edge software development company and I hire both CS and MIS graduates and I can tell you both are necessary but my experiences in the labor pool point to MIS guys being a dim a dozen and CS guys that really get it are rare. On average my CS guys are my heavy hitters and make 50% more than my other developes if you normalize for experience. In fact I've found that the software engineering limits those employees ability to be creative While they write more "reusable" code it's rarely efficient except in the managment sense.
"I didn't learn C# in Comp Science but I could learn it in an afternoon.." I'm a young guy (22) and I've been programing professionally for nearly four years and I can tell you that this is simply false. Make no mistake about it, I'm still no coding grand-master and probably wont be for another ten years. When somebody says that they can learn a language in an afternoon it doesn't make me think they're lying, it just makes it blatantly obvious how ignorant they are of intricacies of writing code.
Hmmm I'm split on this, and I think the initial question actually goes into this. As someone else pointed out the CS goes into the science behind the scenes. True you don't need to know the machine representation of a floating point number, or how different platforms normalize numbers, in order to write a program, but to be able to profile and truely understand how your code is run, it does.
What does this mean for someone that says they can learn C# in an afternoon? Well, I've know programmers that know a language so well that they can do things that in that language that you just wouldn't think possible, but tell them to write that same program in another language and they are lost. While other programmers that I know, just translate their ideas into what ever syntax is needed and to them a language is just nothing more than syntax and grammer.
When you already have a large number of languages under your belt, then how long does it take to pick up enough of the grammer and syntax? Granted you won't be making any masterpeices, but can you write a program?
Back when I was in school, I used to groan, grip and b*tch about learning a different language practically every semster, each class had it's own language that was required, I know C already why did I need to know anything else? Years later, I had to debug and modify an application in PowerPC assembly, never seem it before in my life. I already knew M68k, Intel, and SPARC assembly. So sitting down with a reference manual and the code I was able to pick up what the program was trying to do, how it was trying to accomplish it, and what parts I needed to modify, within a weeks time.
There's a difference between picking up a language and becoming a grand master, but I agree it's a lot in the attitude of do I learn this for this class or do I learn to apply it myself.
-- Ed Bugg --You have freedom of choice, but not of consequences.--
data structures, algorithms, C/C++
CS328 - data structures and algorithms in C++.
a basic understanding of micro processor archithecture (this means some ability to debug in assembly, at least a little CS310
good written and verbal communication skills
Pretty much everything
operating system fundamentals such as memory management, scheduling, I/O (Syncronous, async), and networked I/O (TCP/IP)
CS372 and CS341(?) - Operating Systems and Fundamentals of Networking Protocols
So where is the problem here?
12:50 - press return.
No you are not. Get out of college right away and quit wasting all that money. Go to ITT tech or get a certification such as MCSE. You will be working and making money a whole lot sooner.
I advise students to follow the same education pattern that many successful developers I hired over the years followed:
In school, try to take courses which offer you a chance to learn something you'd never learn otherwise. For example, you will learn Fortran when working for me, no need to learn it at school (that was a joke, by the way Though you will.) On the other hand you will probably not end up learning, oh.. compilers, say, or discrete math, on the job. So take that at school and you'll have an edge over the people who are working with you and didn't.
But that's only half of it. I won't hire you unless I know you're self-sufficient and can work. How do I know that? From your resume. If you have 4-5 part time jobs you've done while in school, and these jobs pertain to the field, I will probably give you a shot: both because I like the people who bust their ass, and because you had probably learned something at those jobs that you didn't learn in school.
And finally, learn to WRITE and SPEAK. Can't stress it enough, the hardest thing to get a programmer to do is give a simple concise STATEMENT OF FACT. This drives me absolutely nuts. I have a few english majors working in the dept (I didn't hire them) and at least these guys can tell me what the problem is. Too bad they can't code.
Mock Tech Interviews & Free Resume Review
I don't have a degree in basket weaving and I think a degree in basket weaving is worthless. Is the fact I don't have a degree in basket weaving relevant or is that degree really worthless? These are the sorts of questions CompSci majors ponder while in the unemployment line. :-)
If you just want a job, go to a 2 year college and cram in as much as possible off his list. Do some stuff on your own if you have to. Fast, cheap, you'll be in the job market right away.
On the other hand, if you find yourself asking deeper questions in class, and instructors either not able, or not willing to take the class time to answer, maybe you should go to a 4 year after all.
I've used very little of my B.Sc directly in the last 12 years. But I can't count the number of times that something I learned has been very important to what I do. I also have a better perspective. People without a broad background tend to focus on solutions in their knowledge domain. People who understand how big the domain is can look outside it.
XML? Good grief! What do people like me who finished school before XML even existed do? Cry that we missed out? Or just learn it on the job, like every other new technology that appears after graduation day? The cutting edge is a moving target. If you try to aim for it, you'll be out of date by the time you finish. If you build a strong background, you'll be sharpening the edge.
Sure, there will be employers out there who expect to already have experience in some obscure specific software they use. But there are those willing to treat coursework as experience. 2 years in the workforce, and it will be irrelevant.
One thing I will say, is that you should round yourself out with some electives such as: business, economics, accounting, law, etc. A lot of people can write code. Not everyone understands the business reasons behind the code.
Go to any company you'd like to work for and see what their requirements are for becoming a software engineer. You will find most, if not all, list having at least a BS in computer science for a basic requirement. Take Google for example:
Requirements:
BS or MS in Computer Science or equivalent (PhD a plus).
Several years of software development experience.
Enthusiasm for solving interesting problems.
Experience with Unix/Linux or Windows environments, C++ development, distributed systems, machine learning, information retrieval, network programming and/or developing large software systems a plus.
So, assuming you get your degree, which I hope you will, you will have the top requirement met, and because you're taking a machine learning class, you will have one of the bonuses covered. Everything else is up to you.
That answer your question?
History of Econ class sounds interesting. Your in college at least partly to expand your horizons. Definately stay in that.
Otherwise, yeah, what you learn in school isn't the most relevent to finding jobs. That's why it is most important that you get an internship or failing that contribute to an open source project.
Classes just don't give you the opportunity to work on projects of an acceptable scale to be real experience.
Theory of Computation can actually be a fairly useful course. Much more so that I thought it would be while I was taking it. There are some useful abstrations in there.
I did take an OO class in Java that was useful to me, and I wish I'd taken the database course that was offered. Other than that, the courses I took just gave me a decent vocabulary for the real learning I would do as an intern and junior programmer.
The author of the article complains that there aren't courses about XML. Wah. XML just isn't that hard. It's self descriptive after all. The trick is learning about how it's used. Since it is used in different ways all over the place, any digging you do in a college class is likely to teach you about a way you never use it.
Still, the best college course I took for preparation was our senior project. We took a team of five students and worked on an industry supplied small app for the course of the year. Great experience and it was a solid talking point for me in my early interviews.
>I'm a young guy (22) and I've been programing professionally for nearly four years
Is it possible then, that you _yourself_ have done nothing above but make it blantly obvious how ignorant you are?
I'm much older than 22, I've been programming for 20 years and I'm a professor of computer science.
A moderately intelligent and resourceful student should be able to switch between languages with similar design in no time at all. Once you understand the basic concepts and structures of a procedural programming language, it takes very little time to learn a new procedural language.
Now, this doesn't hold when you switch across paradigms. Someone who is comfortable with procedural languages would not be able to make a 1-day switch to LISP or PROLOG. However, a LISP programmer could switch relatively easily to ML or Haskell.
What it comes down to is that a change of syntax is essentially trivial if the underlying semantics remain the same; only a change of semantics should require serious study. You don't understand this because you have probably never taken a proper academic course on programming languages and may not even understand the distinction between syntax and semantics.
It is exceptionally dangerous to conclude that just because _you_, with your extremely limited experience and knowledge, cannot do something... it must follow that others can't do it as well.
He is in the right program. A good Computer Science has a good to great theoritical underpinning. Look, the design paradigms will change. So will OSs. And the languages. and the DBs.
While 2 years ago, there were tons of CSers unemployed, so were the EEs and the CEs. Now, I do not know of any CSers that are unemployed. I do know of a LOT of CISers and vocational people who are unemployed. I also know a number of them have moved on to other professions because the industry has shrunk.
Basically, the CS/CE gives you the ability to do anything in the software world. The CIS/Vocational gives you the ability to do just what you learned. And back in the 90's, the CIS world was learning mainframes with Cobol, RPG, and PL1. Is that were growth is? nope. Has not been for sometime. Can these people move easily to Microsoft (where the most jobs are currently), or Linux (where all the growth is)? Nope. They do not have the underpinnings to make the jump.
I prefer the "u" in honour as it seems to be missing these days.
If you want to constrict yourself to the current trend of computer languages and business models then go into a Computer Information Systems' degree.
On the other hand if you are looking to advance the current trends into a new direction that including business models then go into Computer Science / Electronics with a concentration in System and hardware.
A rule of thumb:
CIS == Technical Degree
CS == University
Its up to you
University.
If you want a "job" then go to a tech school. University is for people interested in advancing a field of study.
One of the biggest problems with the education system is the massive influx of people who don't care about education, but about training.
On the other hand, if you actually care about algorithmic efficiency and want to work doing CS research, say at Google or any other lab, then these courses are indeed useful for "getting a job" -- or rather, starting a career.
There are a few questions you should have asked yourself before getting into this field. One of them is whether you're more interested in shaping the field of computer science or if you just want to be a techie for some company somewhere.
Learning a language is easy. Most curriculums just pick one (mostly C++ or Java) and use it to teach you "how to program." The "how to program" part is what is important. Sytnax and features change between languages and technology, but the core fundamentals are the same (ie good coding styles, algorithms, etc).
Like others have said, anyone can sit down and memorize the syntax of a language and program semi-proficiently with it. But when an employer wants a program done in a specific way, or in many cases to run in the fastes way possible, then they want to talk to the CS math geeks to come up with an algorithm.
I got nothin'
The school I went to was pretty much a four year technical college. In the end I was given a B.S. degree in Telecommuniaton Systems, but I'm not sure what that means. I think the hands-on, technical training landed me a great job with great pay, but I think having more of a "learn the concepts, learn the origins" degree would help me acheive a higher salary in the future.
His resume goes into the circular file.
Learn basic Java and C/C++ programming then get a clearace and move to the DC area. If you have any computer experience, you will most likely be able to get a job very quickly. I am looking for a Linux programer with clearance. Check the web!
This type of degree is good for demonstrating that It certainly shows that you can handle these smart things. My degree is EE, so I lucked out -- I got both theory and hands-on experience even with a BS.
Yes, coding is quite easy and the hard part is always doing proper design. "Proper" design by my definition is creating code that is both readable and relatively easy to debug, as well as robust, decent performance, etc...
The CS degree will only indirectly help with code design, if one can master difficult concepts of CS, then one can learn how to do code design / problem solving in the future when in the business world.
...the majority of slashdotters probably have a CS degree...
What planet are you from?
You get the typical line out of them at an interview "I didn't learn C# in Comp Science but I could learn it in an afternoon.." I'm a young guy (22) and I've been programing professionally for nearly four years and I can tell you that this is simply false.
Well, I'm an old guy (42), who has not just learned, but used in shipped products, over a dozen languages. And I can tell you that I learn and master new languages a whole lot faster than all you guys without CS degrees who keep shooting off your mouths about how little use CS degrees are. Learning a new language in an afternoon is indeed an exaggeration, but learning a new language is a whole lot faster when you understand the fundamental mathematics on which all programs are based, and the way they are commonly expressed through language features.
Don't listen and keep doing what you are doing..
Example.
I had a class "Programming Languages" - it taught various language paradigms (functional, object oriented, logical, etc). As an example, we were asked to learn basics of some sample languages (C++, Prolog, Scheme).
I'll admin I've never written anything in either scheme or prolog ever since.
However, trust me, the class taught me a hell of a lot more about object oriented way of doing things than any stupid "Introduction to Java" class would have.
I can show you tons of examples like this - classes that taught HTTP instead of HTML, database normalization instead of SQL, etc.
I've been working at a company for nearly 4 years using a language that I only heard of at the time of my interview. My knowledge of underlying and related technologies got me through.
Very few of my classes turned out to be useful right out of school. However, the ones that I use most now are the ones I thought would be least useful at the time. Those theory classes don't do you any good right away, but they're utterly indispensible as a foundation for staying current for the rest of your life.
I promise you, the vocational stuff will all be in a landfill fifteen years from now, but the theory will be keeping bread on the table.
If you ever have to choose, I'll second every single professor that my children have asked (physics, EE, psychology -- unanimous): you can never get too much maths!
Lacking <sarcasm> tags,
I went to Columbia, and in the past ten years they've completed overhauled their Software Engineering course something like four times. And, as of the time i took it, it still sucked.
.. i haven't heard of any CS program that provides good Software Engineering education.
But it's not Columbia's fault
Specifically, in the real world you'll often have to work with huge existing codebases full of legacy code, written by other people. Schools leave graduates woefully unprepared for this.
Important lessons they should teach:
- How to use a debugger to quickly find the bug in 20,000 lines of someone else's hairball code
- How to use a profiler to improve the performance of someone else's hairball code
- How to use a memory debugger, like Purify or Insure, to find the obscure memory error in someone else's hairball code
- How to refactor hairball code safely and in such a way that you can still ship at any time
But no, instead we learned about UML.
--
Mod up a post Rob doesn't like and you'll never mod again
Many times your department or project will live or die based on how well you write your reports and memos. And your user base will love or hate you depending on your ability to clearly communicate - at their level and from their perspective - how to use whatever you are running.
This is probably out of date as it occurred about 15 years ago, but the manager of the Best Job I Ever Had said he would never hire a CS graduate. I was an electrical engineer. There were english majors, philosophy majors, a geologist, and other non-CS people there. And we did some amazing stuff with Lisp, Smalltalk and AI.
The reasoning is that it is much easier for a good thinker to learn programming than a programmer to become a good thinker.
However, in most IT jobs, practical training and experience is probably the best ticket.
I had the same problem 22 years ago when I was about to start a Computer Science degree at Sussex. Back in those days, if you wanted to end up doing real work, you went to a polytechnic. If you wanted a career in science, you went to university.
I would repeat the usual mantra: A degree shows your ability to study, absorb information and repeat it.
Some of the best programmers that I have met had degrees in unrelated subjects.
Whatever courses you study, try to come out of the time with a well rounded personality. With no employment history the only thing they can judge you on is "Do I want to work with this person? Will they fit in?"
Good luck!
Open Source Drum Kit, LPLC deve board - mjhdesigns.com
I teach Bayesian networks and machine learning, two of the topics listed in the above article, in my undergrad and graduate courses in AI. In my opinion, these are subtopics and not core topics, and I will be the first to admit that they are by no means defining topics for a CS curriculum. People list them on resumes because they are hot topics in research, good for catching the eyes of graduate school admissions people and R&D managers.
The fundamental topcis, as the author notes, should be data structures (including graphs), applied math (including the graph theory, probability, discrete math, and linear algebra to support Bayesian networks), and basic programming and OO design. Of course, the author also has his dose of "hot topics" (XML rather than "data representation principles", abstract data types and metadata, etc.).
Graphical models are just one family of many important representations for reasoning and learning, and for computation in general, and learning is just one of a number of important computational mechanisms. Certainly, the modern computer scientist has to be aware of this.
If we look at intelligent systems as a branch of CS that is concerned with "human-like (cognitively plausible) and rational (utility-maximizing) problem solving", as Russell and Norvig set forth in the leading AI textbook ( Artificial Intelligence: A Modern Approach ), we see where the above topics are coming from. AI is popular. Many more people have superficial interests in AI than will actually take jobs in theoretical research or applied fields of "computational intelligence", and I think that is what this commentary illustrates.
ICQ: 28651394 = AIM/MSN/YIM: hsuwh = www.livejournal.com/~banazir
I had exactly the same response when I was in college at Wesleyan University - why am I taking these theory classes - they won't do me any good. I'm 10 years out - and the only thing that has mattered is the theory classes. I use the theory every day - I make my living doing contract work in multiple different languages. If you want to be a master programmer - its not just time, and desire - its also theory. I've met programmers who have been writing code 10 years - who I consider incompetent - primarily because no one taught them any theory - like reusable code - like writing objects that encapsulate functionality, like recursion. Theory matters But having been in school facing the theory classes - its no fun. Hang tight - and my best suggestion is that you get yourself involved with an open source project and start writing code on the side. If you have 2 to 3 years of writing code, modifying code by the time you get out of school - you'll be heads above other people. And yes you can make money programming - lots of it. You do have to do something to distinguish yourself from other folks. I have a double major in comp sci and philosophy - I strongly urge you to backup your comp sci with another field of study - preferably on the "human sciences" side....
As someone who just finished up a BS in CS, and spent the last 4 months searching for a job, i'd say you need to do far more than just get the degree. The last two years I was in school, I worked my way up in a company doing IT work -- support, tech work, then into an admin position. After school, I had a 4 year degree, and 2 solid years of real world experience. After that, it was just a bit of time till I found a job that wanted that. So again, temper your course work with real work (tm).
Co-op or intern.
If that's what you're after you should be doing IT and not CS. I'm surprised as to how clueless students are regarding these matters.
Even if your schedule had a bunch of more immediately practical classes (XML, Java, blah blah) they'd be obsolete soon enough. Look at college as a place to learn the more unchanging basics (e.g. algorithms, how-a-programming-language-works, etc.) and broaden your mind beyond computers (take classes you're interested in).
Learning to write may be the most useful software development skill you can learn in college, more so than a lot of the more specialized CS or software engineering classes; most any class with papers (vs. problem sets) will help you learn to write.
The place to learn the syntax of a particular language, or a new API or technology, is from books. Or online docs. Read as much as you can. Also read about things like interaction design, development methodology, coding style, etc. not just technical manuals. There are tons of people on the internet dishing out advice to new programmers, for example http://joelonsoftware.com/ is popular.
As you read, you have to write code. Try to use what you learn, and try to read things that address problems you're having. This will make the reading "stick."
A tough thing for new programmers is to realize that you have to write tens of thousands of lines of code before you stop sucking. Maybe 100K lines or more. No matter how smart you are. That's going to take a couple of years of daily practice, and lots of smart people aren't used to needing that much practice.
You're way better off putting a big dent in this _before_ you start your first job. Especially because many entry-level jobs have you write the wrong kind of code. It's best if you try to design and architect all your nonworking, terrible practice code, but your first employer won't let you. So even when you get a job, if you want to get good at programming you should probably have a weekend project that's more "from scratch" with you in charge, vs. the more common first job of maintenance programming directed by others.
To me I'd really want to hire someone who could show a lot of code already written in spare time. It means they have a lot of their initial tens of thousands of lines of practice behind them, and it shows that they really like the work and are capable of doing it.
Sample work (and practical experience) will make a much bigger difference in interviews than which classes you took. If you have good sample work you don't even need a degree in a computer-related field.
That's really only useful if you're going to program computers with those new-fangled "math coprocessors". For those of us sticking with our 486SX it's a complete waste of time.
To get a job, these are the classes you need:
English 204 -- How to lie on your resume
Sociology 301 -- How to identify a scumbag headhunter, answer: they all are
Psychology 213 -- How to survive an HR interview without losing total faith in humanity based on the stupid questions they ask
Law 722 -- How to read and negotiate NDAs and non-compete clauses, and the difference between the two
Then NO, you'e NOT in the proper path.
I NEVER hesitated. It was like a black hole, and the attraction was too intense, I never could have had a different career I wouldn't have gotten bored and then despondent with.
And when the the dot-com boom went dot-burst, I was still able to get a job programming computers.
Why? Because my will is stronger than yours, and it's what I was MEANT to do.
Friggin' kids, these days...
I don't know the meaning of the word 'don't' - J
Either you go into academia, where you will write papers and give presentations, or you will go into business, where you will write memos and give presentations. Both of these are important in that they will be attached to your record of work and be used to judge how useful you are. You might be the smartest guy on the block, but if you can't express your ideas (especially in a voice-neutral setting such as a 7 page paper in a proceedings) it is all moot.
/. post. Only this time its a formal communication which your boss will look at when review time comes around. But beyond that it hampers your ability to work in a team, to work in a Greater Scientific Community, etc. Software Engineering 30% of the time is people debating two different things, neither of which is getting the team closer to the product.
And this stuff is far from "easy" and "common sense". Everyone has experienced the horrible Powerpoint presentation: too much text, confusing shorthand grammar, no logical flow, no standard of format or presentation. You know, like your average "I haven't RTFA but I'm going to shoot from the hip"
Communication should be a lubricant, not a roadblock. And the way you do this is by repetition and critical feedback. Best for that feedback to first come in a classroom setting instead of your boss tossing a paper back at you saying "What the hell is this?" It still takes work, revisions, but after a while it becomes old hand. You soon find it easier to grok other presentations and choices they should've made.
This is the stuff that seperates QA and code-monkey from project leads and the guys who do cool stuff.
What is music when you despise all sound?
From a "getting a job" perspective, it's not an either/or, it's an and/also. Frankly, in my experience as an interviewer, you won't have any more difficulty getting a job with a strong theoretical basis in computer science than you would if you focused on vocationally intensive courses, nor vice versa. When we hire, we know that any vocational experience a student gained is only going to shorten a brief learning curve anyways. Instead, what we look for are fundamental reasoning skills, organizational ability, work ethic, ability to communicate -- and those can shine through either course history.
Assuming you don't press on for a Ph.D. and build a teaching career, then your career will likely eventually tend to track toward implementation (e.g. software engineer) or abstract design (e.g. software architect), and that, frankly, will be determined more in the field than by what courses you've taken.
So ... do you enjoy thinking through the "big issues", and understanding the underlying structure of the computer science universe? Take theory. Do you enjoy making something and seeing it work? Focus vocationally. Enjoy both? Find a program with a mix.
Then, once you're in your career, you can build in either direction anyways. And you can build a career you enjoy, and therefore one that fits cleanly into your overall life, out of either.
"Ahh! I see you're in that indeterminate Schrodinger state where - oh, uh
Dan Zambonini basically wants things learned on the job to be placed in the classroom. I have learned things like test-first development, extreme programming, system engineering, etc. where I should be... on the job. Think of Computer Science like law. You don't spend three years in law school going over courtroom procedure (because not every lawyer ends up in a courtroom for starters). Instead, you study cases and build up a toolkit of knowledge which you can then apply later in whatever environment you land in. Same with CS... study the concepts and learn how to think. If you know how to solve problems, then you can more easily learn the mechanics of programming.
"Oh dear, she's stuck in an infinite loop and he's an idiot" -Prof. Farnsworth (Futurama)
It's probably more important to be more rounded by taking an occasional class that you don't think you "need" and/or doing a minor or two rather than formulating your degree solely on what you think is good for a job. You might just find that you like another field better than CS. Also, much of what you need for the job is self-taught and learned on the spot anyway.
Advice for my fellow geeks: before seeking out that threesome you dream of, you might see what a TWOsome is like first.
It's only worthless if you're NOT a basket weaver.
... educating one in the sciences and training to use a particular manufacturer's lab equipment.
At least that's what the subjects listed in Zambonini's piece suggested to me. If someone trained according to his curriculum were called upon to develop a compiler for a new language, or an algorithm to calculate some complex function, they would assume the role of a fish out of water.
And it may well be that what you want is a trade school education -- after all, there are a lot more lab assistants than PhD researchers. If all you want is a job, and have no passion for the subject matter in the field, then the course of education suggested by Zambonini is certainly preferable -- and easier.
In a computer science curriculum you may well be obliged to learn about many of the topics he has listed, but as a byproduct on the way to some other goal. I can't imagine a computer science degree program these days that doesn't briefly touch on the nature of XML as a means of expressing a formal grammar. But I doubt that many will see the need to spend precious time explaining in detail the W3C's (or Microsoft's) views on DTDs and meta tags.
And best of all, you can self-educate yourself via a series of "XYZ in 21 Days" paperbacks and well-chosen how-to web sites, applied in the classroom of your own computer. If you think that a diploma will help you get a better job (and I think that it usually will), enrolling in the trade school or "technology" degree program of your choosing after you've prepared yourself will allow things to progress more smoothly. In fact, I suspect you'll find it easier to get a job as an intern while still a student, prove your worth to your employer and get that "big raise" upon attainment of your degree of choice.
But the half-life of things learned in a technology degree is very short, while the underlying sciences change very slowly, if at all. So a computer science degree will prove useful over and over again throughout your career, while a technology degree will be quickly left behind. I know that I found myself using parsing and organizational techniques learned 30 years ago in a compiler design course to create a piece of COBOL middleware using TCP/IP sockets SQL, and XML, methods that allowed me to craft a solution while my trade- and technology-schooled peers were scratching their heads wondering how they were going to accomplish the goal (don't blame me for the COBOL -- one thing you learn in a computer science program is that a particular programming language is merely the material from which you construct the algorithmic design. As much as COBOL reeks, it's just a tool -- and this time was the tool I was directed to use).
As someone who has made a nice living developing computer software, overseeing software projects, *and* playing the piano (!), my liberal arts education (math major, music minor) came in very handy. If you want to specialize, to it in your graduate degree.
Best Buy can have you arrested
My academic background was very lacking in teamwork-skills. A possible analogy would be a car with no tires, the interface to co-workers and customers is where your "rubber meets the road".
On the other hand, management sees the documentation you write. Care to guess who they're likely to see as most valuable?
Lacking <sarcasm> tags,
What YOU want to do and what YOU are interested in before asking people you dont know if you are in the right program.
You must understand yourself first.
Good Luck!
No. You belong in trade school. I suggest welding or truck driving.
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
I've just recived my degree in CS this august and i have been working for about 2 months now. The Visual Basic Programming that im doing yes anyone can do even without a degree, however look at the people who are doing with GNU projects, and who make the Operating Systems we all use, I have a hard time beliving that alot of thoes people have never recived a degree in CS or some math related field somewhere.
Well, if the person claiming they can learn C# in an afternoon knows VB.NET (i.e. the .NET framework) and something like C or Java, C# as-you-go is pretty reasonable. Occasionally they'll have to look up C# particulars, but they'll know what they're looking for. It also helps if they'll be working on existing code, as opposed to code from scratch.
I have a BS in CIS and got an MS in what is essentially CIS last December. Right now, I'm in my first semester of MBA studies. I have been a programmer for almost six years starting about two years before I got my BS. I have found myself finally meeting both the educational and the experience requirements for most positions I used to see posted. Recruiters are now looking for particular skillsets. Some places are starting to require certifications. I'm hoping I can become more of a generalist and "advance" into IT/business management to sidestep some of that. The IT field isn't what it seemed/used to be when I wanted to get into it (from late 80's early 90's-life happened to me, and I was sidelined until late 90's). In the environment I see, if you want to position yourself well for post-educational employment in IT, my advice would be to find a CIS program in which you can get an internship and take as much accounting and statistical analysis type courses as possible. In addition, I would also try to work on certifying in whatever particular technology you are most interested in. Then you have all the bases covered-education, experience and certification. There will be some here who will argue that you don't need all three of those (or any of them for that matter), but I doubt you would regret having any of them once you do.
In the real world, a CS degree is the minimum to get into anything but a bottom rung programming job. And there are no bottom-rung programming jobs to be had anymore (those all got outsourced), so that's not an option.
Free Mac Mini Yeah, it's
This is not a put down of vocational training, but that's not the same as learning theory and principles, or more importantly, learning how to learn. Getting a good education rather than training will carry you for the next 30-50 years rather than the next 3-5.
Ya but like chess if you learn the rules and become a good player on one table then if you play on a different table all you have to do to play well on the next table is learn which peice is which. If I learn a language in an afternoon I'm not learning how to program in an afternoon im just learning the syntax of a language. Degree's tend to teach you the theories of programming so that you can better understand how it all works and then take that knowledge and apply it to other languages.
no matter how many times this question gets asked...the answer is always the same; if what you care about is remaining in academia(sp?) and/or doing pure research then getting a cs degree and an advanced cs degree are all you may need (and as a result you'll probably end up getting the better part of a undergrad math degree racked up along the way).
but, if you wish to join the corperate world of working monkeys; you really need to supplement your education either with a business or engineering minor or second major of some kind.
i'm sure this will sound like every other post that has come before me...so i'm just adding to the mess.
dude.
Those math courses are not there to look pretty. The idea of a university curriculum is not to teach you how to be a code monkey. "Computer science is no more about computers than astronomy is about telescopes" - Edsger Dijkstra
To make laws that man cannot, and will not obey, serves to bring all law into contempt.
--E.C. Stanton
Do you wish to be a full human being, or just a worker/consumer? Do you want to 'make a living' or 'have a life'. More important: do you want to be another drone in an increasingly feudal society, or a misfit boat rocker. There's more to life than getting a job.
BTW, I'm an old retired guy. I see this from a very different point of view.
Of the hundreds of tech workers I've known, I've never met one with a CS degree. I have, however, known many people in retail management with CS degrees. All those nice theory and science classes are cool, but they aren't job skills or job experience.
One of the nastiest problems in the IT industry is a near-total lack of entry level jobs. If you show up for an interview that requires a CS degree, but some 18-year-old who can code circles around you and has been working a help-desk for six months also shows up, he'll often get the job.
If you're going to stick with CS and want to get a job, here are a few resume builders to keep in mind.
- Do work study helping the sysadmins manage the networks, or at least helping inept students in lab classes.
- Find a good internship every single summer.
- If you program, do useful work on worthwhile open-source projects.
- Go ahead and get a master's degree immediately upon finishing up your BS. Then you become a serious computer scholar, and not just another kid who got a CS degree for the money.
Likewise, Computer Science Majors don't have super-specific classes. Instead, they teach you the things that you wouldn't think to learn on your own. Fundamentals that make all your work as a compsci major easier. Having a solid understanding of algorithms, what's slow, what's complex, and why has helped me produce better work many times.
If I were in charge of hiring and I had a developer position open, I probably wouldn't hire someone if their school curriculum consisted of the classes he listed. Tech and code come and go, but fundamentals last forever.
Besides, if you can't learn that stuff as you go, you're not suited to a career in computer science. Only motivated and fast learners need apply!
Slashdot. It's Not For Common Sense
I work at a University, as a Technician, have been there for 3 yrs now but I also worked as a consultant too. I have been doing computer work for over 12 yrs (and i'm under 35) so it can mean that I'm close to burnt out.. or just in mid-career. Anyways, I hear this complaint from students every year, how is the degree going to get me a job?? The degree is not a ticket to a job, it tells employeers that you have stuck to something for a long time and have hopefully learned some fundimental basics behind computers, math and programming. You also have to have interests and work on things in your own time which will give you skills which are useful to prospective employers. You want to be a sysadmin? take some time learning unix (linux, freebsd, solaris are all free, but also try and get some AIX and IRIX time), you want to be a programmer then code some big project in your spare time, or volenteer your time to write an app for someone (or a company). Who would have thought that learning to write your own OS would be useful, but it can be, as well as give you a huge amount of respect for those that do it full time. Java/PHP/C++ might not be used in 5 or 10 yrs, but knowing how to calculate big O notation on a loop or travese tree structures will help in any language..
University is all about learing to think, you want a job programming in PHP, get a book and go take some courses at community college. Just don't whine when you cann't find a good job in 3 yrs cause all you know is one thing.
Which makes me very psyched I choose the graduate degree I did - check out the current list of classes being taught at SIMS - that plus the ability to take classes over in the Haas Business School makes for a solid modern program, and matches most of what is on the author's list of 'good' classes.
? ArticleID=1015
Fairly complete list of I-schools over at http://www.destinationkm.com/articles/default.asp
In today's era of corporitization of universities and the changing role of higher education from serving only the intellectual elite to preparing people to the workforce has diluted the role of the university. In addition, the curricula haven't been able to keep up. Courses like you list would be great for an education in Computer Science. However, you have to remember that your degree program is not training you to program, it is giving you an education in programing. Training can come down the line in the form of books, seminars, and experience. By taking the courses you are they are training you thinking skills that will allow you to bring more innovative solutions to the industry and the profession.
I'm currently a system administrator. Then why in college did I take economics, psychology, music, french, math, and philosophy?
College is to teach you how to think about the world in different ways than you may be used to. None of these courses taught me to be a good systems administrator, but they certainly opened my eyes to a lot of things, gave me different perspectives on life, and made me a more well-rounded individual.
Enjoy your time in college - take some time. I know it's easy with today's job market to just want to get to a job as soon as possible to cash in, but this is the only time in your life when you have the chance to easily learn about all sorts of things, not just CS.
I'd agree with this. If you're only looking for bare-bones programming ability, check out a vocational course. If you're looking for more advanced abilities like algorithmic analysis, the experience to see abstractions, better data structures, and more flexibility, stick with a BS degree.
I'm certainly not saying that you can't pick those things up from a vocational course, but you'll be doing it on your own. It's always a tradeoff between time/cash and general well-roundedness. Personally, I got my BS because I wanted the flexibility.
The main point is that vocational programs will teach you how to code. A BSCS will teach you how to learn. It doesn't take a genius to figure out which is better in a rapidly changing field.
This all depends on the quality of your education. Take your "I can learn any programming language" for example. I had very extensive computer science education from the top school in the country in this area. I guarantee you that languages hold no mistery to me. Neither do operating systems. Nor, MT programming, etc. There are no 'intricacies' once you understand how languages work. I interview a LOT of candidates. Their major failing is lack of programming fundamentals. Here's a great example. All of the 'Java' programmers that I interview can give very basic examples of MT issues (book answers). But NONE of them actually understand it. None of them can think through how Java actually implements synchronized, wait, notify, etc. That's a very basic concept.
I, like several other people have stated agree that the basics of a language can be learned in an afternoon. You probably won't be an expert at it, but you should be able to do the basics. Maybe this is what is meant by "it just makes it blatantly obvious how ignorant they are of intricacies of writing code."
Your C# example in particular is my most recent "language in an afternoon" exercise. I needed to learn basic structure, which is similar to Java, data structures (again, similar to Java), XML parsing (very nice feature of C# by the way), and registry editing using the MS functions (All MS functions are similar to VC++ or VB [I don't really program in VB, but when learning about how MS does certain things typically the most examples are in VB]).
It would have taken me the equivilant of an afternoon (I spread it out over a few days because I hate reading microsoft documentation)...
But I have better argument. Say that you are a very good assembly programmer using a RISC processor containing a very small ISA. Furthermore, let us assume you know tricks from other architectures (such as register combination on the Z80s).
Now, given this, we put you on a VAX-like processor. Where all of the instructions you are familiar with are there in some way or another. Your work may not be pretty, and reading someone else's code might be hateful, but you should be able to build most trivial* programs from scratch, just by ignoring some VAX commands.
Of course, this won't produce the best VAX code, but it will work. And as far as I've seen in the industry "It just works", followed by, "It is easily portable" is like giving candy to children.
In higher level langages, a similar concept would be that you didn't utilize a library as well as you could have.
*I use the word trivial because there are obvious computer specific things that would need to be learned. Which can be true even if you are using higher-level languages on different machines. The best example I can think of is different memory access points.
The langauges/frameworks I have the hardest time picking up in an afternoon are ones that use a lot of convention, or have very little power. And, to be quite honest, I'm not very interested in such langages anyway. (I'm currently having a bitch of a time remembering where everything is supposed to be placed using Ruby on Rails)
The other difficulty I had was learning how to do anything non-trivial in LISP. But, that is the closest I've ever come to having to learn a brand new language from scratch. And could be the best example of validating your argument.
Am I open minded towards open source, or closed minded towards closed source?
If I were a CS student right now, I would do everything I could-- courses, hacking through books, internships, anything-- to learn and get as much experience as I could on System 390/zSeries mainframes, and related technologies (CICS, IMS, DB2, and yes even COBOL). There is a huge mainframe brain-drain (buzzword potential here) with a large number of mainframers reaching retirement age, no-one to replace them, and no signs of mainframe usage stopping.
It's been the best-kept secret in IT for 10 years, but the mainstream media is even taking notice as this artice demonstrates.
Just this past May I went to the International DB2 User's Group North American (IDUG)conference in Denver, and by far the most gainfully employed independent consultants we the Mainframers. I know for a fact that where I live (Gartford, CT, USA area) there's a huge demand for mainframe personnel at pretty much every level. But even in relatively remote parts (I met a mainframer who works for a trucking company in Montana) there's plenty to do.
Admittedly I'm taking a purely practical (not to say mercenary) view of the purpose of education but, if that's a big concern for you, I'd go for it. I'm a DB2 on Unix DBA and if I were ever to change, I know where I'd go in a heartbeat-- even though I happen to love what I'm doing.
Two things--
1.
I didn't see one line that focused on embedded system or hardware-lab type courses.
Knowing how to write code for limited resources, limited hardware capabilties, how to debug on target rather than in the comfy plus GNU tool chain, etc.. are very valuable skills.
Knowing how to be an "API Programmer" is practically worthless unless you're very good at both programming the code and designing the code. And by that I don't mean you know how to organize classes well, I mean technical-lead skill level good.
The embedded system development is a growing sector of the programmer job base (hand-held devices, phones, PDA, etc... It's not Windows, and it isn't Linux. It's a RTOS)
Because the rest of the "API Programmer" courses don't help you-- those skills are already possessed by the minnion of off-shore, outsourced work force, and so those jobs are going away.
2.
Good advice: Backup your CS degree with a minor in business, or foriegn language, or environmental science, or political science.
Have fun.
Within 5 years, your work experience will mean more than the names of the courses you took.
You're probably going to be working the rest of your life.
If anything, take more classes outside your metier. You want to work in order to live, not the other way around.
Such courses are indeed useless for getting a job. But they're required for getting a degree, which is nearly required for getting job.
The courses you'd need to get a job are practical - ut then you make yourself into a specialized tool, able to do XYZ for which you're 'certified'.
A college education, complete with those abstract and indirect courses, makes you a versatile generalist. It equips you in tools you can use to direct the efforts of specialized "resources" such as those 'certified' to do Java programming after having studied it for "21 Days".
Also, being a generalist makes you rounded enough to talk to management and technologists, business people and domain experts - and don't forget the off-shore contractors.
The courses you'd need to get a job would put you on even footing with those off-shore "resources" that the company gets to throw bodies at specific problems. Assuming you're American, or Western at least, that is NOT the environment in which you want to compete - you need to bring more to the table than a whole department half-way around the world because you alone, living int he West, enjoying the Western standard of living, cost as much as that whole department "over there".
Courses to get the job come once you have the job, ironically enough. If you want to be a step ahead of the curve, invest in them over a summer. But they're "on the job training" and "professional development" material that your employer will likely pick up to tailor you to a specific project.
The courses you need to keep the job, to grow with the job, to assume responsibility for the job, are the courses you take now.
Which would you say is the more worthwhile course, how internal combustion engines work (from chemistry and metallurgy on up), or how to rebuild a Briggs and Stratton lawnmower engine? If you honestly feel the latter is of more value, quit college and get thee to a trade school, as the world does need ditch-diggers more than the civil engineers who tell them what to do.
So what if the current job market for artists/designers requires you to know Photoshop version X, Macromedia, Pantone, etc. You should be able to learn that stuff in a timely manner. But if you can't draw and aren't creative in the first place, maybe you're in the wrong field - it might take a bit too long to teach you that eh?
;).
;).
What's worth it is learning stuff that would take you a lot longer (like maybe never) if you had to do it yourself, or interesting things that you would never have thought of learning - never knew was there to be learnt in the first place. So what if it seems "Theoretical" only.
If I were an employer, I'd ask you what projects you'd recently done for fun, not because you were told to or forced to do by your course or previous employer.
If you call yourself an artist and the last time you drew something was 3 months ago as part of your college course, well that just isn't very convincing. In contrast, you're a pretty good artist if you're absentmindedly doodling a decent caricature of me during the interview ("right brain" just has to do something whilst "left brain" is talking to me).
Same goes for programmers. I'd expect your college to teach you the theory stuff that will remain true for decades at least - algorithms, information theory etc. But I'd expect you to mess around with current stuff too, on your own, just for fun/interest - it doesn't have to be very much, and nowadays most stuff is just a few google searches away.
Oh yeah, it's fine if you don't know the fancy tools/buzzwords in the industry. But if you can't do the programmer equivalent of using a "pencil" and sketch something passable, there are plenty of cheaper people in India who can and _will_.
Saying you know UML and all the buzzwords won't be as compelling to me as you actually having written something interesting which you can describe and explain to me in the interview what bits you think are nifty.
Anyone can say they know some buzzword and regurgitate the relevant keywords and phrases, and stick that in their CV. If people needed that, they should use google. If they only need just a bit more AI, maybe they should outsource
However, I'm not an employer at the moment, so maybe you should go with the flow, and listen to that buzzword guy
I have to chime in here and say that when I entered college, I too thought that the theory courses were useless. But there is lots of interesting stuff in these courses.
.)
I'm not a math guy, but I am a computer science guy. I don't think you necessarily have to be a math guy to be a computer science guy (it probably helps for some things, hurts for others). For example, I hate doing computation. I can't multiply a 3-digit number by a 2-digit in my number in my head like some of my colleagues without stressing myself out. Someone recently asked me the square root of 144 and I quickly responded "15" before correcting myself to "12."
I'm also embarassed by how much of a distaste I have for computation. I reassure myself that this is okay because I really am much more creative than mathematical (not that those two are opposites, just that often they tend to be mutually exclusive).
Computer programming can be a creative form, and in fact it usually is. (If it weren't creative, you wouldn't have so many hobbyists playing with it.) I think on a very powerful development team you should have mathy computer science guys and less-mathy, more creative ones, because they really can complement each other quite well. Us creative computer science guys often see problems in a completely different light, and come up with sometimes-strange, but usually elegant solutions. The mathy guys often see problems in terms of a powerful mathematical model, and come up with elegant solutions of their own. Together, they can really cover the bases.
Anyway, the bottom line is, I never found computation particularly interesting.
But I did find computers quite interesting, not surprisingly. I found that with computers problems could be understood in terms of the necessary computation, but then you could have the machine do the actual computation. In my Linear Algebra course, often for fun, rather than solving problems I used to write programs to solve problems, and then have the programs solve them. I found it much more enjoyable to write a matrix multiplication routine than to just carry out the algorithm myself, using pen and paper. (I know, I know, there's MATLAB, but coding the program actually helped me understand the algorithm better
So what did Computer Science do for me? It largely hardened my conception of the world as a world of patterns and algorithms. I'm talking about courses like "Basic Algorithms", where I learned to grok and describe algorithms in plain language, as well as in formal, symbolic, mathematical logic. Almost everything can be understood as a pattern or algorithm, the trick in being a good developer is finding the most elegant pattern to point to.
"Computer Architecture" taught me about low-level hardware, how it is designed and why it is designed the way it is designed. It also gave me an appreciation that sometimes our algorithms don't take into consideration hardware concerns, like cache hits/misses, locality, etc. So this added yet another layer for coming up with good ideas toward practical computation.
"Computer Systems Organization" (which at my college is a fancy name for "Operating Systems") introduced me to assembly language, and let me see the intimate connection an OS often has with the underlying hardware, and how small changes of algorithmic approach can completely change performance. This course was also the most "software engineering-like" course, since we worked with large codebases, often complicated and filled with operating systems concepts and algorithms.
I enjoyed the systems stuff so much, I took a high-level Operating Systems course, which was my best course thus far because we coded a small kernel basically from scratch in C. We had to work alone, and we had to work weekends, and my social life sucked that semester, but I think it was worth it. In my final project, in which I implemented an in-kernel debugger with C symbol support (!!!), when the damn thing fin
Start first by attending a school with name recognition. It's just like brand recognition. If, in a job interview, you get the "... and where's that school?" question, you're already on the defensive and at a disadvantage. "Recognizabiilty" (is that a word?... I should know, my undergrad is Liberal Arts), is relative. Some small East Coast schools are well known for their academics, but are little known on the West Coast and vice versa
Next, if you can't demonstrate productive software development skills during your interview, you're also at a disadvantage.
What are productive skills?
If those skills are vocational, so let it be written, so let it be done -- you need employment.
I had this very same discussion with the Department Chair of the Electrical and Computer Engineering department of the school I mentioned, where I suggested a 1CR course on the above topics as a program requirement for the ECE major (remember... this is an Engineering department) and I got the same push-back, ".... we're hear to educate, not train..."
I'm back in industry as an employer and I won't hire anyone with less than 5 years of experience because, in the face of economic and competitive pressure in the software industry, I cannot afford to train someone to become productive.
Do what it takes to become employable -- courses, internship, networking.
I hear my soapbox creaking, so I'll step off of it.
When looking for candidates to interview, larger companies will weigh heavily the grades you got, and the school from which you graduated. The details of the courses you took are not that important. Having said that, what you take that is OUTSIDE of your major (a minor if you will) can definitely draw attention. A minor in business and economics, or in health related areas can be a big plus with companies in those areas.
Once you get the interview, then other factors play a large part in your getting the offer.
It all depends on what you want to do with your life.
There is no 'right' or 'wrong' answer here.
Your best bet is to go shopping for the type of job you want, and see what the requirements are. Then match those with the course structure being offered.
---- Booth was a patriot ----
It ended up getting boring, same old shit over and over again. Right now I'm thinking about going a more artistic route (writer). I may go back to technical stuff. CIS or just being a computer repair technician on the side.
I had a friend recently who wanted to get a picture on his website, but his scanner didn't work (one of those all-in-one "dealies" from Dell). I check his XP comp... no drivers. So pop in the disk. Install. It works. Anyone else, I would have charged 50$.
It always amazes me how much stuff people think you can learn in college. Look at all those course topics listed in the opinion piece: patterns, architectures, usability, security, and more--subjects which take some serious time and experience to learn. However most students spend only four years in college, with maybe half of their classes devoted to CS. It's just not possible to get senior software engineer experience in an undergraduate program, and the colleges don't bother to pretend otherwise either. School is just meant to teach the fundamentals. You'll have the next forty years to develop "experience." :)
It all depends on the job you want, of course.
"Theory of Computation" along with its sister course "Compilers" is what got me the job I'm at right now. I write compiler tools for the Eclipse framework. ToC covers the concepts of computer languages, what is a regular language, what is a context free language, and so on. It also deals with complexity, what is Turing computable and so on.
With this knowledge in hand, you can actually determine whether a feature a client wants is even computationally possible or not. And if it is possible, you'll know what kind of tools (regular expressions? State machines? stack-based machines?) you'll need to complete the job.
As for the others, "Numerical Analysis", "Artificial Intelligence" and "Machine Learning", I've taken them too, but they haven't shown to be directly relevant to the job I'm working at. However, I'm sure there exists jobs out there that need training in these domains.
"Video Games" might seem like an area where AI would be needed, but I have the strong suspicion that smart behaviour of computer controlled opponents is faked a lot more often than actual AI ideas and theories are used.
Understanding how computers work, the why of it, enables you to be a better programmer. It also gets you used to the fact that languages are just tools. And usually, each course will require you to learn a new language, as different languages are good at different things.
It makes you realize that like everything else, languages are tools. So you don't feel stuck using just java, or c, or c++ because that is what you learned for a voc degree.
A good idea of the crossover between 'theoretical' and 'practical' is the definition of big O. A Voc school may teach you that data structure x is more efficient than y. But why? What if you write your own? Can you determine how good it may be? Knowing 'theoretical' underpinnings such as big O and how to determine it allows you get a handle on your code.
"Ewww, this routine I wrote is O(n^4), I wonder if I can rewrite it".
Theoretical classes don't necessarily make you a 'good programmer' by themselves. They make you good at THINKING about programs, which makes you an even better programmer.
At the software company I work for I do a lot of the interviewing for junior programming positions. We hire a lot of recent grads coming out of university. You might be surprised to know that we often don't care about what languages the applicant knows. What we look for is solid understanding of underlying computer science principles and theories. But we also look for indication that the applicant knows how to apply these principles in everyday programming.
If I ask someone in an interview to write some pseudocode and they can't tell me why it's efficient (both memory-wise and performance-wise) or how it could be improved, they're not getting a job. If I ask them how they would debug a particularly nasty bug and all they say is "um, printf?", they're probably not getting a job.
I want a candidate who knows what order notation is and how to apply it to his/her code. I want a candidate that can properly analyze a bug and logically determine what is going wrong, and then fix it. I want a candidate that knows 3D math, even if they never apply it directly in their work, because it demonstrates that he/she is capable of taking on complex problems and solving them. I want a candidate that understands what I'm talking about when I ask him/her to implement an A* search. He/she may have to go look it up, but they'll be able to figure it out.
I want a candidate that has been taught how to think.
When I was pursuing a computer science degree, I took the heaviest class load I could handle and finished as fast as I could. This left almost no time for work, and in probably any other field would have implied to HR that I was hungry to get into the workforce. I graduated in August 2001 and have yet to find a job in the computer field, but the people who took five or six years to earn their degree instead of three were able to claim experience through their internships or side jobs and get good offers.
These days a lot of the entry level jobs I see posted require 1-3 years of experience - as I said, experience for an entry level job. So I have become a firm believer that, with the exception of an elective class that may be relevant, the CS classes you take in pursuit of your degree do not matter. As many others have said, there is a big difference between academic exercises and professional programs.
Put in the minimum work necessary to get good grades and recommendations from your instructors. Then use all the extra time you have to find jobs or summer internships and put as much experience as you can on your resume.
If my kid were entering college, I'd tell him to steer away from a CS degree. Why? Haven't you been reading? Outsourcing, that's why. Based on personal experience, more and more jobs are being sent overseas, particularly jobs that require little, if any, personal customer interaction, like programming or even radiology. I'd be telling my kid to get into jobs that require face to face interaction, like psychology, medicine (but not radiology), police work (great pension!), law. Program Management in tech fields is still good but even that is starting to lean toward outsourcing.
I went to BCIT in 1990 and it sounds like the courses haven't changed, just the titles of them seem to have been visited by the 'goodspeak' guys of George Orwell's 1984.
I gave up on day-school programs that were taught by professonal teachers that had an interest in a specific field and went to night-school (also at BCIT) and learned from people who worked in a specific field for X number of years and who knew how to teach.
My degree took about 3 years and I had a 9-5 style job during this. I learned current used practices rather than history which is what most of your classes sound like.
I recieved a Programming Certification from BCIT. I also recieved a Network Specialist Diploma from CDI College.
I'm not sure if CDI is in the USA but they are throughout Canada. They don't have set time classes or lectures. You work through courses at your own pace with a combo of reading and hands on work. There are instructors around to help you and answer questions, some of these are previous students.
This was the ONLY school where I got a job in the field I was studying BEFORE I graduated.
The GEEK shall inherit the earth...
I graduated from a university college of engineering back in 1988 for my bachelor's and then in 1990 for my masters. Do I use anything I learned then in my current career? Maybe 10-20%. What I discovered to my utter chagrin upon graduating is that I had been taught a lot of what was needed to get a job at a defense-oriented company. Only problem was that defense companies had just taken a major hit and weren't hiring. One of the things the school was emphasizing was Ada programming. Unfortunately, most of the companies that were hiring wanted C programmers so I was SOL. I got lucky with a defense company who offered to teach me how to program Macs which I had never learned either. Lately, I've had an intern who is also being taught stuff that isn't cutting edge. They're teaching subjects that are several years out of date and no longer marketable skills. Furthermore, my university spent far too much time on theory and not nearly enough on practical applications. Companies rarely care about the fact that you can solve obscure math problems. They want to know that you can hit the ground running. My suggestion is to cut back on the course load to bare minimum and teach yourself subjects that appear in job listings.
> The type of courses I'm taking are essentially useless for getting a job. [snip] Since I'm just
> planning to get a job after I grad, am I in the right program?
A majority of college undergraduates go into the workplace after graduating. This varies somewhat from field to field, but I think it's fairly consistent overall. So compare yourself against these people, whose fields of study range from literature to biology, from sociology to art, and so forth. Their undergraduate education doesn't necessarily have a prescribed path to a professional career. In my opinion, computer science is no different. The only thing that sets it aside in people's minds as a pragmatic and lucrative course of study, as far as I've seen, is the technology economy (though I suspect this was more true in 2000 when I graduated than it is now).
In agreement with your hypothesis, the courses you're taking are likely useless for getting a job, in a strictly literal sense. None of the courses I took, including a fairly intensive class that called itself "software engineering," prepared me for what a career as a software engineer really entails. But I think that opting for a primarily vocational curriculum over a liberal education rooted in theory and emphasizing breadth is extremely myopic, failing to recognize the forest for the trees.
Although you pursue a major course of study in college, the nuts and bolts of the major itself doesn't matter as much as you might think. The real purpose of college, in my opinion, is to teach you to think and to communicate. These are habits and skills that cut across all fields of study and professional careers. In my own experience, I find much of what's required of me as a software engineer has nothing to do with straight heads-down coding, and everything to do with finding creative solutions to complicated architectural problems and arguing their relative merits through clear verbal and written communication. For example, every few months at work, we'll be beating our heads against a problem like "how do we refactor this nasty, duplicated code so that we can both share it, and how can we get it done in a way that meets our schedule requirements?" Or better, "product marketing has just given us a new feature requirement that forces us to reset our assumptions and our schedule, how can we compromise?" I find myself writing essays at work to address questions like this, and I think I'd find myself frustrated and ill-equipped for the task if I hadn't taken all those "useless" classes in college.
My advice is to convince yourself that, although some of the courses you take in college might turn out to be practical in a job, college is not for getting you a job. Take the courses that most interest you, and take them for their own intrinsic merits, not for their relative merit in helping you achieve the short term goal of finding a first job. To help kickstart your professional development, you should be looking for summer internships instead. That will help get you the skills and connections you need to find your first full-time job. And don't forget: your education doesn't end when you graduate.
Think about it in terms of a spoken language. At the age of ten, most kids can speak well enough to express anything they want... how they feel, what they want, etc. They have complete freedom with the language; virtually no idea cannot be expressed with the vocabulary and rhetoric of a ten year old. Essentially what is being said is that a ten year old is on the same level as Hemingway or Dickens, because the kid, like these authors of immense literary genius, has the same freedom of language.
I'm only twenty-three, and I've been writing C/C++ code since I was in seventh grade... my biggest project so far has been in a team of three people and we put out maybe five or six thousand lines of code. I haven't had the necessity to delve into some of the lesser used aspects of C++, let alone the obscure. And I wouldn't dare call myself a master, or even a pro... I still see C++ code that makes my eyes cross for a few minutes. Five or six thousand lines of code to me is a good chunk, but probably chump change to any seasoned pro. I can still do anything I damn well please with the language... like the ten year old, but beyond that scope is being able to do anything I damn well please and do it well. That brings in a whole new level of ability to evolve... some of it language specifc, some of it simply a matter of being a good coder in general.
Code, like spoken language, is an expression of an idea. A language is created to express an idea, and in the professional world, immensely complex ideas. I learned why Python is so great in about thirty minutes and most of what Python can do in about two or three hours. But let's see how I fare against someone with a few years of experience in writing a simple program, say a client/server chat program. You'll see me stumble over my own ass more times than Jennifer Lopez.
It's true that the actual language is generally irrelevant to the idea. That's a moot point to this whole discussion though. When I speak or write, I don't think about the language; where I'm putting the nouns, my conjunctive whats'its, and God knows what else don't matter to me, it's mostly automated. Ask someone who doesn't write as well as me to write anywhere near my level (a ten year old for example), and they'll putter around for a bit... and it'll look awkward and forced. Ask me to write on Hemingway's level and I'll crank out maybe a crappy paragraph or two per week. The more I read of Hemingway, or any other seasoned author, the more I have no clue how they do what they do. The more complex ideas become, the more intracate the language used becomes. Little previously-unrecognized nuances can throw the whole idea down the shithole. Hemingway doesn't put an incredible amount of strained and wasted effort into his rhetoric, just like I don't, just like a ten year old doesn't. Each of us can express any idea, does this make us literary equals?
How will my code compare to one of the maintainers of the gnu C/C++ compilers.? That's the point of this whole thread right? The whole point of a CS degree in college isn't to teach you how to code, but the underlying ideas of coding in general, and hopefully the underlying ideas of that as well. A good undergraduate degree should leave you completely devirginized as to how anything digital functions, from basic circuitry to modular design. At least that's what I got out of mine. You don't get a Bachelor's or Master's degree to become a qualified expert... you do that in your job or Ph.D. program. You get the first degree(s) to become qualified to become an expert.
Just my two unprofessional pence though.
Part of the problem is that industry now considers colleges as training environments, not educational institutions. I'm with the people who say things like "do you think will be around in a couple of years?", especially for things that have become buzzwords over the last 5 years, such as XML, UML, various Java cool topics-du-jour, etc.
:-) specific technology I have this year to work on.
I value my own education in analysis of algorithms, core principles such as concurrency (taught in a Principles of OS course), etc.
More importantly, the mono-lingual academic environments are actively harmful. I will NOT hire anyone who is not fluent in at least two significantly different programming languages (C and C++ don't count, because it's rare that you find people who understand the differences between these two languages.)* And I'm getting very suspect of C++ and Java, since again the common practice represents these as a single approach to programing with somewhat different syntax.
When I hire, I'm looking for someone with a good grounding of the basics across the core disciplines, who can think and learn whatever new (or old
Both Computer Science and Software Engineering education has, in general, failed both the student and the long-term employer. But it has sure populated the "slap the code together and invoke the debugger" culture that seems to predominate these days.
dave
* p.s. Regardless of what a Communications of the ACM article said about a year ago, "HTML" is NOT a programming language and does not count against your two language requirement.
I've been trying to find good computer scientists which has given me some perspective on the issue. If you are lucky enough to work for a rapidly growing company (as I do), one of the dominant engineering problems is "how can we get to x customers with y servers." That is when all the O(n lg n) sorts and data structures and so forth will become very important. People who understand those things are essentially irreplaceable. On the other hand, I view people who script HTML as essentially replaceable (possibly by people off the continent). You can place yourself in the first group or the second group; but I think the first group gets the bulk of the money, management, respect and stability; whereas the other group are right now increasingly being replaced by cheaper people on other continents.
One problem with software developers in the work force is many of them are lacking the skill to effectively problem solve. Few know about test/debugging out of school, and fewer still know about low level debugging.
If you're talking a compsci degree for a job, then you should try one of the many 6 month courses to be an object oriented software developer at some of the tradeschools... You'll save yourself a lot of month with, for example, your 2 week introductory course to SQL, C++, Java, and the like.
If however you actually want to know how to BUILD a computer, and develop algorithms as opposed to finding them in books, knowing a bit about the "science"... then you should stay in compsci. Hell, take a compilers course and learn about LR and RDP parsers... write your own java...
/\/\icro/\/\uncher
When I was in college, I used to tease my CS-major friends about the fact that they had a million theory classes, but never actually produced a cool working app. It pissed them off enough to explain the situation to me in simple terms:
If you want to learn vocational stuff, go to ITT Tech. It's cheap, quick, and you learn the skills to get hired quickly for entry-level tech jobs.
If you're paying for a pricy 4-year college, you probably don't want that kind of job. You want to understand the concepts and practices of programming, not just memorize some APIs or whatever. With this kind of education, you're not shooting for a low-level programming job; you're shooting for a more challenging career, and you should be a LOT easier to train on new technology than one of those ITT guys.
So if you want to crank out database code in one of those thousand jobs listed at Monster.com, by all means save some cash and go to a vocational school. Heck, you might want to switch to plumbing or car repair and make better money. But if you're really interested in a full, rewarding career in computer science, you need the theoretical stuff. Any decent company should be willing to train you on their specific technology.
Of course, all this was coming from guys already paying over 30 grand a year in tuition, so they might be a bit biased...
I was enrolled at a private technical college in the CIS program for a little over a year. Their program basically consisted of learning languages (3 semesters VB and 3 semesters C++ required to graduate) and current standards and software (A+, NET+ and Win2k administration courses also required) but with absolutely no teaching of theory. The students had no idea how to solve problems. They knew what various commands did but generally had no idea how to string them together to accomplish something unless it was markedly similar to a previous example. I ended up dropping out because I was learning nothing.
Now the folks who got their degrees there are going to spend their entire careers being incompetent programmers. Sure, they mostly got good jobs as soon as they got out, but what they learned has ever-diminishing usefulness. VB may have been hot then, it may even still be hot now but it won't be in 10 years, everything I learned in Win2k admin has already been superseded, and at the end of the day that's these students' ENTIRE education. If they had instead been taught how to organize data structures, and how to understand what the computer is thinking, they could always study a book for 6 weeks and take a cert on whatever they needed to know for the job market. The stuff you learn in classes that show you on a fundamental level why things are being done the way they are, while not directly applicable, will last you for the rest of your life rather than just until a new set of languages becomes hot.
"I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
If your major is CS, or if it is Psychology, or if it is Physical Education, the liberal arts purpose is to produce a critical thinker, not particularly a worker.
(I haven't gone or directly known someone to go through a medical degree, but I base this from what I believe to know about it, so correct me if I'm wrong)
I wish CS/SE/IT curiculums were more alike those being thaught to become a medical doctor, in which they ARE thaught not only how the human body works AND how to heal it, which includes technical procedures, up to date equipments, etc.
After all, why is it that we, in the computer/information industry can't have curiculums that teach you both how computers work and how to use them efficiently ???
I think we should take a cue and borrow a page from the medical profession's handbook.
Graduated with nothing worthwhile to put on a resume. Theory is generally worthless, scheme, prolog, and pascal too. I think that mainly an employer looking to hire an entry level grad is looking for one thing mainly, that you obtained a degree. I got my piece of paper that says I can get a job, that and a decent interview is all it took to land my first job.
Just as one's choice of computer should be driven by the applications one needs to run, one's choice of education should be driven by what one intends to do with it. What do *you* intend to do with your degree? I would hardly call "theory of computation" and "numerical analysis" useless classes. This is what computer science is all about: the science of using computers to solve problems.
There are really three fields that comprise what lay people consider computer science to be. First, there is computer science, then there is computer engineering, and then there is computer technology. (Please note that there is no particular order to this ranking.)
The first, and most obvious difference is that computer engineers typically build hardware systems, while comptuer scientists typically build software systems. However, computer scientists are generally expected to understand the underlying hardware platform. Computer scientists typically know more about the theory of computation, the design of computer languages and operating systems. This is not to say computer engineers do not program. They do, however, most system level applications and languages are written by computer scientists. Computer engineers apply engineering principles to build computers and computer based systems. Computer engineers often design not only the hardware, but software also.
Thirdy, there are technologists. While scientists and engineers try to solve unanswered problems, technologists typically work on problems that are better understood. For example, a computer engineer might build a new network or a computer scientist might build a new software system, a technologist might use existing computers and software to implement something new. Technologists typically gain experience with existing systems and protocols, while scientists and engineers will work designing and managing new systems. As always, the line between technologists, scientists and engineers is often blurry because the state of the art in technology moves so rapidly. Technologists often work as computer scientists building new software systems, and engineers and scientists often work as technologists implementing new systems with available technology. Many, if not most people work as technologists in some capacity. Almost all work in the computer field rests on the work of others.
As an aside, I would say that the theory of computation is of great importance to companies such as Google and Oracle. I'm mildly flabbergasted someone would suggest numerical analysis is unimportant for computer scientists. Numerical analysis is the union of theoretical and applied mathematics toward solving problems with computers. Who could suggest that designing algorithms with a mind to how much memory they are going to use or how much time they are going to take is unimportant? Rounding errors and the stability of algorithms are both important topics within numerical analysis. Also, platform and hardware specific issues also factor into the analysis of algorithms. Maybe someone writing a script to run on a web server to talk to a database hasn't given much thought to concurrency and deadlocks, but his work rests on the work of people who have considered these problems, and more.
I read Dan Zambonini's article. It sounds to me he is describing more of a technologist degree, than a degree in computer science. I might suggest that he also take some resumes from graduates of technical or vocational schools, as well. Here in the U.S. (I realize the author's a Brit) people tend to slight vocational education, but the curricula offered by schools such as DeVry and I.T.T. are nothing to be sneezed at. I say this as a person who attended drafting school and learned pencil on vellum and ink on mylar. And for the record, I'm a technologist, not a scientist or enginner.
Thanks if you got this far.
i've found that i rely upon my theory classes far more than i ever thought i would while i was nodding off during my advanced linear algebra or machine/assembly language classes. what i've since realized is that, in addition to teaching me how to solve matricies and read assembly commands (in case i ever need to macgyver my way out of a computer?), these classes taught me how to 'think'. rational approaches to logical processes, efficiency design and ergonomics have been far more useful to me in the workforce than c++. the modern workforce is a very strange place. personally, i've decided that the best way to be viable is to be adaptable. i currently have a corporate admin job that i love. i got my foot in the door with my computer skills, but then demonstrated that my problem solving skills were too beneficial for making administrative policy decisions to relegate to the compter support department. currently, you can make a pretty good living as a programmer, but with more and more jobs being outsourced and colleges and night schools continuing to saturate the workforce, you could quickly end up finding yourself in a green apron frothing cappuccinos. good luck.
I've worked in the blue collar industry, mostly in petro-chem plants. I've also attended Vocational School courses in programming which interested me enough in the subject to return to a Uni as a Computer Engineer.
As such, I'd like to make analogy that I find particularly pertinent:
In petro-chem plants you have two roles that are played. The first is a pipe-fitter. The pipe fitter's job entails taking various pipe and putting it together according to the specifications given him.
The specifications are usually put together by Engineers.
Now to do his job well, the pipe-fitter may need to know things like the ability of certain materials to withstand pressure given a particular thickness of the material. Usually, to acquire this info it is looked up in charts or tables containing the info. Again, these charts and tables are usually made/published by Material's engineers.
In this analogy, the programmer that went to vocational school would be the pipe-fitter. He is a skilled laborer, he knows his craft and how to perform a specific task and does it well.
The Computer Science major would be the Engineer that understands the underpinings of the job. If something tricky came up like a vessel thickness that was in between those given in the charts or perhaps a estimate of wall pressure as a function of flow into the vessel was required, the pipe fitter would not know how to derive this whereas the engineer would be right at home.
Some will like to point to unique examples of vocational programmers that are every bit as skilled at the finer points of programming as those that went to fancy colleges. The High School dropout 1337 hacker is a favorite anecdote. But like the pipe fitter that has all the skill of a Materials Engineer, this is the exception not the rule.
In short, if you just want to code and pick up the basics programming and then get to work learning as you go and maybe on your own initiative becoming one of the top tier CS Engineers...then just go to vocational school and get to work.
If you want to come out of school with the tools needed to address those really sticky issues that aren't covered in the books and the ability to solve them based on a deeper understanding of the principles involved...stick with College.
When programmers graduate from a vocational school, they actually know more about churning out code and are more practiced at doing just that. College CS Eng. know more of the principles and theory, but are less practiced in actual programming. However, with practice every good CS Eng. can become a good programmer. The same cannot be said for every programmer.
Just my 2 cents.
Now that we've established that Dan doesn't know where to look for jobs in the game industry, let's talk about some of the other things he doesn't seem to get.
For one thing, the "programs" Dan is talking about are primarily things that I've discovered through years of experience (for example, real world Database Design), or things that I've picked up in a weekend over the course of my employment (for example, a second 'Big' language, a scripting/'agile' language or two, XML (and why it's actually a pretty terrible file format), and common protocols).
But they all share one thing in common: the courses that Dan are suggesting would be great at somewhere like ITT Technical Institute, or at Devry "University," but they do not belong at an academic institution--by and large. The things he is proposing are largely vocational. They'll make for an okay programmer, and probably only a okay programmer in one field. They do not make a well-rounded computer scientist, nor do they help you out when you decide that you don't want to do database design anymore, you want to write commerical shrinkwrap software instead.
My well-rounded CS education has allowed me to run the gamut of employment in computer science related areas. I started out in Telcom, moved to commercial shrinkwrap, wrote several video games for very large video game publishers, and now I design graphics hardware for the market leading graphics chip company.
Which of the courses there in Dan's suggested curriculum are going to allow me to do all of that? I'll give you a hint; they aren't there.
Without advanced mathematics (Calc II, Linear Algebra), I would've never been able to do graphics programming, which would've kept me out of the commercial shrinkwrap business (where I did image editing software). It would've further kept me from doing 3D grapihcs applications, which would've kept me out of the game industry as well as my current position. Without Advanced Data Structures, and Automata theory, I would've been unable to write code that was efficient enough for the high performance needs of the games I worked on.
In short (too late), Dan's proposed course load (of bullshit) would lead you to be a moderately acceptable programmer. You would be able to make a living, but you would always be one of the first to be laid off. Get a real education from a real institution of higher learning, and bring me good fundamentals. Because for pretty much all junior level positions, it's on-the-job-training. Without good fundamentals you will be unable to learn quickly enough to be of any use to an employer.
I currently have no clever signature witicism to add here.
Except they tend not to be as limited as the author wants.
:p
Take a gander at the U of S 4 year BSc, 4 Years Honours Software Engineering, and Honours program.
The following courses he wants are not listed in any of these: touch typing, nutrition (although you could take it as an elective), basics of GIS (as I don't know what GIS). The software engineering option touches on pretty much everything he wants, but also does a lot more (making for a full 4-year program). The honours program is similar, except it allows you to focus more on theory of computation, which is great once you realize that practical usage stuff is just as easy to learn on your own Linux machines at home as it is in a classroom setting (if not more so!).
I know I've learned everything about systems administration by running my own website/email system for the past 7 years. I don't think there's a course that says to take Postfix, DSPAM, Procmail, Cyrus IMAPD, Linux software RAID, MySQL, and combine them all to make a nice email system. I'm taking the honours program (non-SE), though, which means I'm not going to learn his touch-typing classes and basics of nutrition
A science degree is about science -- not programming, even if it's in computers. I'd no sooner expect a CS degree to be perfect for programming that I'd expect a chemistry degree to be good for making a house that lasts a long time, or a physics degree making you good at making fast cars. Science is about research and investigation!
--
Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
The topics you are taking aren't useful to getting a job, nobody is going to ask you questions from those classes in an interview.
The subject content is invaluable in critical thinking and problem solving that is often sorely lacking among many vocational school graduates. In fact vocational school people don't really have the background to understand why things work the way they do - certain problems will always allude them.
So while they won't help you at all in getting the job - they will help you keep (and succeed) at the job.
And don't forget to include working for yourself, pt at least.
The Linux field is wide open and ready to explode.
Dont' let any one tell you otherwise, when we all know everyone is fed up with m$.
There is a shortage of good linux guys out there now!
You'd be suprised at how many business will accept a freelance person like yourself when you show up at their door.
Most business can not outsource work like you can do-- to some 'hobby-ka-bobby' over in India.
School is what YOU make of it, no matter where you go..or even if you dont' and just learn on your own, or some tec school.
That will all depend, or should depend on what your short term goal is.
But since 'goals' change, I would just have the attitude that I am going to go to school for the rest of my life-- at differnt periods & frequencies, in order to 'brush' up or whatever.
When i started college..many mooons ago, i was told that if i was interested in writing software i should take CS with the 'Business' option..and if i wanted to get into creating hardware that i should take the 'science' option.
I don't know if they still split CS majors today... but something to think about.
I will gladly loose all of life's battles.. in order to win the war..
Here's why. To be a senior-level programmer anywhere, you have to understand the following:
- "Computer Science fundamentals":
- algorithms (so your software can perform)
- database theory (so you can design well and optimize your software)
- More general modeling theory (so you can write specifications and participate in large-scale projects)
- Language theory (so you can write concise, intuitive software)
- Operating System theory (something difficult, but possible, to become exposed to outside of a formal curriculum)
- Good software development methodologies (regression testing, version control like CVS and SVN)
- Experience with a wide variety of different languages
- Much of "enterprise software development" involves integrating systems that are written in different languages
- good software developers can embrace and extend what's out there, and that often involves taking components written in one language and using them in another
- you want to be able to choose the best platform for a given project, rather than being limited by only being able to use certain languages]
- Experience with a wide variety of different platforms
- Understanding different paradigms (ASP / client-server / pure client, microsoft / open-source)
I would major in computer science, try to do as many projects as you can, build (and finish) as many products as you can, get exposure to web-programming, do a lot of database programming, if you can find an internship or a job doing general ledger programming, I would check that out.Honestly, most of the time I've wasted as a programmer has been due to not being previously exposed to the more "formal and academic" concepts that underlie what I do.
A few reasons here:
You should have a good sense of what sorts of platforms are out there and what it takes to launch a product on different ones.
Just, don't think you can become a successful programmer without a lot of work. It's a long, intense process to be able to program well, but well worth the effort.
CS is your time to master theory and basics--the entire rest of your life will be spent learning languages X, Y, and Z, and the latest trends...
Mike
"Not an actor, but he plays one on TV."
...unless by CS you mean Counter-Strike :)
Seriously, though. I was planning on being a programmer. So I double majored in math and physics, while doing an internship writing code at a company. Now, indeed, I code for a living.
I don't know why people assume you need a CS degree for be a programmer. CS = Computer Science != programming. A computer scientist is like an engineer, a programmer is like a mechanic. Of course, it's advantageous to be both.
IMO, programming is best learned on your own, so it makes sense to get a degree in what you plan on applying programming to.
Of course, I am referring to programming only. For sysadmins, etc. it may make more sense to major in CS.
There are literally a million ways to earn money. Not only vocational courses, but trades like Welding and Automotive Repair mechanics can have you earning an easy 35,000-45,000 a year. If you work hard in it, you might as well open your own specialised trades business after a couple years experience and earn as much as doctors earn. The reason I believe one should choose to go to university is to be able to invent and innovate. For that purpose you need the groundworks of knowledge in any subject that you choose. Besides the application of someone else's theories, you need to have enough knowledge to make your own. JAVA for example is 'just' someone's invention, which would be taken over by perhaps another invention a few years later. So is, WINDOWS, .NET Framework etc. So if you knew how these technologies were created instead of how to use them, I think, you'd be much better off int he future.
It is best to complete the computer science curriculum. The courses you have listed seem to be relevant and they should teach you about some of the theory behind current computers. Unfortunately, I was not at a college that stressed the theory. I got out and I wondered why are companies not hiring me? Eventually, I went to a reputable college and learned the hard way the I did not know the topics/materials that I need to, in order to be productive.
Learn these topics well. Although they may not seem relevant now, they are some of the most relevant ones, if you want a rewarding career with computers. If you opt to take only the 'practical' courses, you can get by, but you will always be relegated to menial tasks. And, if you have any drive at all, wonder why you were not chosen for the more important assignments. You will think you can do them, and it is possible, but you will not be able to do them as well or in a timely manner as someone who has had, and understands, the basic theory behind it.
Example: I used to think javascript was difficult. I would try various things and sometimes it would work and sometimes it would not. Or it would only work in certain cases. At the time I did not know why. Now I realize that origionally I did not have the foundation I needed to understand what the books and examples were trying to tell me. I could not see what was wrong until I went to a 'good' university that had the knowledge to explain the theory and semantics in a way that I could relate too.
I've ended up going to a small liberal arts college, where I'm likely to end up with a BA in CS with a minor in music (a second BA in music is possible but not likely). Is there anything that makes a Bachelor of Arts more or less appealing than a Bachelor of Sciences to an employer?
I liken the idea of learning a computer language, or rather,learning HOW to learn a computer language, to the idea of learning human languages.
As an undergraduate, I studied international business and through luck and interest, was able to study both international business and language translation at the international interpreters school in Belgium. At this same time (mid to late 90's), CS majors, MIS majors, and pretty much anyone with any technical background were getting very very good job offers right out of school (this was the late 90's), so I decided that it would be a good idea to take a few c++ classes. After c++, I taught myself databases, java, some scripting and some basic sysadmin type stuff.
While I was in Belgium, I studed translation/interpretation of French, Dutch, Japanese, and English. Prior to studying in Belgium, I only spoke French and English. At the interpreter's school, I learned many languages in a very short time. People ask, "How did you do that". My answer is always the same: "Learning a second language is hard, learning a 3rd, 4th, 5th, etc is much easier, because your brain understands some of the basic generalities of language after the second one.
Ditto for computer languages: Once I had learned c++, learning c, java, visual basic, etc was much easier because I understood on a basic level the "linguistic transition". Just like in human lanaguages, you migh know what you want to say, you just have to learn to express it in your target language. In programming, you may know exactly WHAT you want to do, you just have to learn how to "speak the language." Of course, the more you do it, the better you get at it and the more versitile you become with each language.
Speaking to another point: Educated people have a much higher value than trained people, but a combination of training and education makes a person extremely valuable. My undergraduate major was in International Business. I also studied language translation at a world reknown translation school. In addition, through a little bit of training, and a lot of independent projects, I am also very technically savvy. My graduate degree is in International relations, and I have a graduate certificate in Engineering Management(equivalent to the first year of an MS in Engineering plus some project management).
Currently I am employed in the technology side of the petroleum industry. I will be the first to tell you that my value is recognized. My main job function is project architecture and project management. No, I dont code on a daily basis, but I constantly look at code to explain to others how it works. No, I dont translate on a daily basis, but with our bigger clients (Shell, Exxon Mobil, BP, etc) it is a real asset to be able to speak to a French project engineer in FRENCH. It is an asset to explain to the Japanese CIO the problems with our software localization effort. It is an asset to be able to take a business trip to Holland and not have to be babysat by my host. No, I am not involved in the politics of the energy industry, but having a solid background in political science and economics helps me to understand why certain political events have an impact on the price of gas.
Did I imagine that I would end up doing something like this? Absolutely not. When I was finishing college, my ultimate goal was to get a mundane type of job as something like a business analyst and be able to make enough money to not depend on my parents.
My point is this: training enables you to be able to do a job. Education allows you to have a career possibly outside of coding. Ultimately, it is going to be the combination of education and training, plus your own flexibility and self motivation that determines how successful you are. The more value you can add to an organization, the more valuable you will become. Valuable people can command a higher salary
Dan Zambonini's opinions are worth even less than what you paid for them. They are the worst sort of trash.
On the surface, they give the appearance of having value. These are certainly all skills of immediate value in the business world. Useful resume filler for getting past HR droids.
But they are ALL TRANSITORY! In a matter of years they will become worthless.
The point to obtaining a higher educational degree is not to learn these skills. It is to learn how to learn. To be flexible so that, when something new comes along, you can pick it up in the blink of an eye.
Point of Fact: Five years after getting my B.S. degree in CS, I took a job writing C++ code. I didn't know C++. I had never worked in the language before. Yet I mastered C++ in a matter of days. Why? Because I knew C inside and out. I knew exactly how the code was being translated to assembly, and how it was being executed. I knew enough to write my own compiler. (Which I've since done...) I knew OO inside and out. I had worked in other, more esoteric languages [smalltalk, objectiveC, etc]. I had written software implementing Abstract Data Types in other languages. I was well versed on the concepts behind C++. Learning the language was a simple matter of reading The Annotated C++ Reference Manual to pick up the syntax and its nuances. In a matter of days I was outperforming all their other coders.
I went on to write the bulk of the software on that project. Team of 10 people, and I wrote more than half the code. What does that tell you about vocational training vs a solid education?
People with vocational training are useless. They make the absolute dumbest mistakes. Like being unable to figure out why this returns 0 (for all a<b):
double f (unsigned int a, unsigned int b) { return a / b; }
Hell, I've had people try to pass off: double * f() { double a; return &a; }
Or be unable to grasp the difference between O(NlogN) vs O(N^2) algorithms.
Classes like neural networks, computer vision, artificial intelligence, etc are NOT SUPPOSED to be teaching you real-world skills. They are supposed to be EXERCISING those real-world skills.
Nobody was born knowing how to walk. Or how to ride a bike. We all learned. And so it goes with coding. You're not born a great coder. You become one by writing a lot of code. By making a lot of mistakes. And by learning from those mistakes.
My most educational class, as an undergrad, was computer graphics. Not a whole lot of practical real-world knowledge there. But we had four large programming assignments. The last one built upon the 3rd. Taught me more about writing extensible code than anything else.
Look at Dan's list! "Real world Databases". WTF? I studied Algebraic Structures. Advanced Math: Algebra applied to set theory. Rings. Groups. That sort of stuff.
Again, no practical real-world knowledge. But when I came across databases in the real world, I was already well versed in applying algebra to sets of data. Algorithm complexity (indexing) I knew inside and out from my programming theory classes.
Learning SQL is the sort of thing that I picked up overnight. Literally, take the book home, read it, learn the syntax, and I was there.
Instead of worrying about what this uneducated ignorant loser thinks, try interning. Get a summer job. Take a semester off and work. That real world experience, coupled with a solid education, is worth far more than the computer equivalent of "I am speaking 3 languages. English the best."
Or to put it another way: 10 years ago, Dan's predecessor would have been telling you to learn "Basic". How would you fare today had you followed yesterday's "vocational training" suggestions?
Have you programmed in ML? Lisp? What about Prolog?
Maybe you haven't programmed in some or any of these languages. If you have, though, you'll probably know what I mean when I say that, compared to C/C++, none of them are exactly a walk in the park. They require you to think differently about not just syntax, but the entire form of your programs.
What if your only programming experience was ten years of (not Visual) Basic, and suddenly you were faced with learning Java? The concepts of object-oriented programming would be completely foreign to a person coming from a language that doesn't even have user-definable data structures.
When I learned PHP (no, I'm no master), I was able to draw on my knowledge of C/C++, which is syntactically practically identical but more importantly the same paradigm. Learning how to tinker around in it was a snap. On the other hand, learning a language like Lisp, coming from C/C++, was much more of a challenge - yes, the syntax was different, but I had the whole ample use of parentheses thing down quickly. It was the fact that Lisp flows as a functional language but stutters as an imperative one that gave me fits. You'll never be a good Lisp programmer until you resign yourself to the fact that when you try to fit Lisp in to the C++ mold, you get crappy Lisp programs.
You're probably thinking, why the hell do I want to learn how to program in Lisp? I'll probably never use it. True, in a production environment, Lisp isn't anywhere near the most commonly used language. But college is about teaching you how to think more so than what to think. By learning Lisp while you're in college (or another language that doesn't fit into the C/C++/Java/PHP/etc. motif), you give yourself another way to think about how to do things. When you finish your degree and go into job training wherever you end up, that will help you just as much as the program design courses that give you the depth you need to get a leg up in the job market.
Get the hell out and make way for an Indian or Chinese student to wants to learn.
If what you want is a programming/software engineering type of job espoused in the article linked, what are you doing in Computer Science ? The modules that you fear will be useless in getting a job are perfectly useful in getting research related jobs - but I don't think this is what you want.
I have seen programs from monay good bad and normal or average schools. i have notice one thing thats wrong. That is attitude of studentts and professors
Professors never try make sure that student have some interesting questions once leave the class. quest of answers to those questions leads to better CSists. And i hate those math professors(who land up in CS) who dont understand that every student is not going to be a scientist. so please a little less theory. So are the students. I HATE students who actaully believe that after doing home works and cramming for midterms(GPA 3.99 shove it some where) they will be asked by Gate/Linus/Stallman to work for them.
So its more of an attitude problem. And Professors plz pick real time projects like linux/eclipse/apache etc and work with the students if u dont have the balls to touch some thing big get ur PhD cancelled and start selling cars. i know u r smart talkers
and prepare to move to India if you want a job.
anyone who tells you that a cs, ee,or ce degree is a waste of time -- most likely doesn't have one. learn the fundamentals and the rest is cake.
Let's say you want to work at a delivery company, stacking heavy boxes. Now, how will you train for such a job?
By going to the gym and doing weights.
But, you say: I will be lifting boxes, not dumbbells!
See the point? A computer science degree teaches you the foundations and gives you the means to build upon those foundations.
Suppose you are a C/C++ programmer. And overnight Java becomes the language dujour. If you are strong in your foundations (data structures, analysis of algorithms, structured programming, good design, etc.) then making the leap to Java will be almost trivial. On the other hand, if you learnt programming "on the street" (so to say), learning a new language and efficiently using it becomes more difficult (it can be done, but may not be very efficient).
I used to TA some of these basic courses. So many times I was asked, "what's the point of this bloody big-Oh analysis? All this math is killing me". And then these same people would come back all confused when their bubblesort (the easiest to implement) failed miserably when given 1000000 numbers to sort.
and you would be working where? the Bill CLinton Foundation? Oops. Impossible. While it sounds like an idea that Bill might come up with, I doubt that he would hire somebody as stupid as you. You must work in the white house. Yeah, that would explain a lot.
I've been out there with a CS degree for over 20 years. Yes, the theoretical classes are very important. A good mathmatical CS backgroud will give you a leg up in the long run. As others have said, it is important to learn the theory and why different approaches, OS's and languages exist. It will help you dig into the practical topics as programming languages, platforms and operating systems change. It will let you keep up with different philosophies of how to design a system, and maybe you'll understand why the flavor of the month is popular. Hopefully you'll learn to not be dogmatic.
Being dogmatic and a lack of flexibility has you using the equivilent of a hammer for everything. Very soon that will cause a career change and not by choice. Employers want people with a full tool belt. People who know how their tools work and why they use them. They also like to see that you change your tools as things evolve.
Where it is offered, takes classes where design or working within a team is required. It will give you an idea of programming within a team. People skills are important in the real world.
Do not pass on internships, involvement in open source or school projects. Anywhere there is a team of people writting code that will be used in a production environment by more than a few people. This will give you the leg up when you graduate. To say that you worked on code that is in production somewhere. Even if you can show you fixed a bug a month in firefox or apache. It shows you wrote peer reviewed code. You have code in production.
Use the internships to find out what you want to do. Try to get an internship with different companies each summer. Different evironments. Different types of projects. Different industries. Do not choose based on the cool company. Some cool startup doing something new might be cooler than google or microsoft.
The courses in college are mostly background information on how everything works, and the real tasks of programming are only lightly touched upon. You have to take the concepts that are taught in class and make them reality through your own coding projects (assuming your professors don't assign such projects.)
One of the skills I believe is most useful in the field, yet the most overlooked in academics is the ability to do research and expand your knowledge beyond what was covered in class.
For example, in my college we did boring code exactly as the professors taught. It felt more like learning through repetition than anything else. Then we got a brand new professor who did the unthinkable and assigned a project without concrete guidelines. He simply gave us the requirements he wanted our code to achieve and the language of choice and told us to come up with a solution. Most of the students were suddenly lost. They didn't know where to go to complete the project. All they knew was from the book and lecture. They claimed the assignment was unfair and eventually the professor gave a couple of examples as to what he was looking for to help get them started. In the end, nearly all 60 of the students wrote code nearly identical to the example that was given. It was such a sad sight.
Students need to learn to research and think independantly. In the working world, your boss may likely know little to no programming. He simple knows what information he has available for you and what he wants in the end. You, as a programmer, need to be able to fill in the blanks in the middle. If you didn't learn it is class (and likely you didn't), you need to be able to find the information you need.
So yes, your colleges courses provide a framework, but to get a job in programming you need to be willing and able to expand your skillset well beyond the minor pieces of code that your instructors go through.
It's not really just because of the ingrained expectation of a CS degree that employers prefer it. There is also an element of the CS degree simply being harder and more rigorous than an MIS or CIS degree. The more capable job candidates will probably have preferred to challenge themselves in CS rather than just sailing through MIS.
The above is definitely not a politically correct position, but it is also definitely true, the same way the average C++ programmer is a better programmer than the average Java programmer and the way the average LISP programmer is better than both of the others. (Note: I do not program in LISP because I fear parens. =P )
Just one thing: Any programmer who wants to make you believe that problems like "shortest path" or machine learning algorithms aren't important in a "real programmer's life" has done nothing but web-pages in his whole life. The point is that these problems occur over and over again, but you have to recognize them.
Georg
If you are doing a CS degree why would you expect the courses to relate to programming as done in industry???
Surely you should expect a bunch of theory, a bunch of math, and maybe to use a computer in second year...
As others have pointed out, the goal of your education is to give you the theoretical underpinnings of a wide range of topics in CS. Once you have that, learning a particular job skill is trivial.
But I'll go one step further and say Dan Zamboni is an idiot. He is unable to recognize the difference between an entirely theoretical pursuit and one that gives you an immediate job skill.
He says "Embedded Systems" has little relevance to the job market. Huh? That's like a quarter of all jobs! Which means Zamboni is giving job advice without actually knowing much about the job market.
He says "compiler engineering" is similarly a theoretical pursuit. But that gives you fundamental background on parsing, state machine, regexps that are terribly useful in real life. It also makes you deal with some of the most complex data structures you'll see during school, which in my mind counts as good practice for real life.
Meanwhile he thinks you should waste your education time on stuff that might not even exist (or be recognizable) in 10 years like XML and UML! He wants you to know all about Databases and SQL, but there are fewer SQL jobs than Embedded Systems jobs! Argh!
I will say that I agree that AI, Machine Learning, and Bayesian stuff are all pretty worthless -- for example, AI has been a solution in search of a problem for about 25 years now. If they appeal to you, go for it and enjoy yourself! But don't think it's useful.
Getting an education is about preparing you for life, either in general or in a particular field. It is not about preparing you to service the temporary interests of the current state of a rapidly changing field. A vocational program teaches you how to work, right now, and does a pretty poor job of that as well (no amount of group class projects prepares you for a real job). A Computer Science program -- one that is true to its name -- teaches you a field, and in doing so gives you the knowledge you need to learn anything you may need to learn in that field.
So, I suppose if what you truly are looking for is a job immediately after graduating, maybe you should listen to a hiring manager's wish-list. If, however, you would like to also have a job in 3-4 years then you should keep in mind that if Mr. Zambonini (and his counterparts all over the world) are being at all realistic, they don't expect to be paying you in 3 to 4 years. Either you'll be a Computer Scientist who's outgrown their company or you'll be a formerly skilled programmer who was more easily replaced than trained when the next big thing hit Business Week.
Exactly, I am a young guy as well (22) and I am finishing up my CIS/CS degree now. Haveing interned durring my entire college career I can tell alread the education has made a huge difference. I got into computers because I do have an aptitude for it and I think I instinctively understood alot of what was going on. None the less doing something new was always just that. It required lots of trial and error and was scary at first. It was time consuming and difficult as well because I had to fingure out what worked best each time. With my CIS/CS training I can now approach 'new' things with an understanding of some universal math and principles that lay under all computing machines and have the prespective of a solid set of common software design strategies which also change more often in name then in function. Haveing that fram of reference enables me to master new skills with lots less fear and stumbling around trying to figure out what works best. Generally its possible to move from the generic academic understanding to the particulars of the present situation in a painless way. Much less painless then haveing to cope with seamingly different rules everytime I got infront of a new language or hardware.
Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
To add another point, which may or may not be right:
Almost no programming language out there is designed to only be programmable by those who were taught specificly how to program in that language. (well, none of the good languages anyway)
They were designed to be used by programmers, and learning how to be a programmer, and learning how to program in C++, are two totally different things in life.
Thats why its called CS and not "Programming in C++"
IAAUCSP (I am a university CS professor). What you learn during your college education is not just supposed to get you your first job right after school, it's also meant to help you get your next few jobs (and you will have many more than one, believe me). Knowing Java, XML, MFC, SQL, even VB, and all might be useful for your next job, but 10, 15 or 20 years from now, nobody will care about that stuff. You need to learn basic methods that have a long shelf life and that are the foundations of CS. This includes things like compilers, machine learning, functional languages, math, statistics, etc. You need to LEARN HOW TO LEARN, so that when the next IT fad comes up, you can catch up quickly.
In fact, in my opinion, CS majors don't do enough math (at least not enough continuous math).
30 years from now, you will be about 50, with kids in college and a mortgage to pay. The big things will be autonomous robots, self-learning computers, quantum optimization, bio-engineered circuits, etc....
If I were you, I would take as many math, physics , statistics, machine learning, and robotics class as I could.
Between learning 'a/some programing language(s) and learning 'to program'.
I can learn a new programming language and get 'up to speed' in a matter of weeks. I took a first programming class 10 years ago and I'm still learning to program.
Congratulations Blogger Dan Z. You've just described a degree from Devry or Intellitech or Technical University. All of which turn out "Computer People" tht are easily replaced by outsourcing. The point of computer Sience is to make you underastand what you're dong when you declare classes or mess with bits. And another thing - XML isn't that hard. You certainly don't need a 16 week course to get the drift. Anyway most College students are expected to lean things on their own time as well. Nothing's stopping you from learning perl or python while you're studying algorithms in scheme or working through matrix maths.
Stop intellectual property from infringing on me
you are not. Many CS graduates these days are jobless because of programs like this. Switch to a vocational program while you still have a change.
This post should win dumbest troll of the year.
I used to have this debate back when I was in school with people. In the school I began my degree there were two programs, a computer science program and a more "practical" computer information systems.
In Computer Science we learned the theoretical background, we learned how and why computers work as they do, and more importantly - how to learn. Language and skills were a way to re-enforce this theoretical base.
The CIS program learned the skills of the day. You know what one of their courses were? "Programming in Visual Basic" How many of those people taking that course 7 years ago do you think are still finding gainful employment programming in VB? And how many had to go back for skills upgrading?
I remember one summer on coop, two CS students, one CIS student. It was a help desk job, nothing exciting. But a call came in to help a user with Word. The response from the CIS person, "We didn't learn Word, we learned Word Perfect." So? If you had the theoretical background you could figure it out, find the relivant connections between the two.
As opposed to myself, my primary job these days is programming in perl. Do you think I was ever "taught" perl? No, we did C, C++, Java, etc. But I had the background to learn it on my own, because I learned how to learn, I learned how languages worked through courses such as "compiler design."
So are you in the wrong program? Depends, do you want a long term job or have to retrain every few years? People like Dan Zambonini are absolutely wrong, things like "learning XML" can be done from a book if you know the relivent background about languages and such schemas. I know that's how I learned (alright, working for the 'father of XML' for a few years certainly didn't hurt...).
The man why knows HOW will always ahve a job.
The man who knows WHY will always be his boss.
Computer jobs come in all flavors, but I think the broader your experience in school the more choice you have once you get out. Besides, even in an academic/theory seting, there should be some programming projects.
JET Program: see Japan, meet intere
It is harder to get the first job coming out, but the first job will teach you databases, XML, and all those goodies. So will summer internships, only in both cases, they'll be paying you instead of you paying them. After 3 years in industry, your at the same level at the vocational technologies as the guys who learned these in college, but you also have the theoretical knowledge, which gives you an edge.
Thing is they want the skills they teach at university to be useful 30 years down the line. Had a curriculum 10 years ago had a list of courses to the effect of:
The graduates would have had a much easier time finding jobs... Nevertheless, I would argue their careers would have been somewhat stunted in the long term.
I do happen to use linear algebra a lot when programming, mostly when I need to add a little bit of basic 3D. I'm really glad I learned it. I don't use AI, but I think eventually, especially in UI design, knowning a little bit about machine learning may be very useful (UIs are increasingly trying to figure out patterns in what the user does --- one example: I saw some guy working on a module that would guess what program the user was trying to start from the mouse motion, and if it had pretty good certainy you were going to click on a particular icon, it would begin preloading the relevant parts of the program from the hard drive). I don't know if quantum computing will happen, but if it does, having some knowledge of it can go a long ways...
Do we have to answer this same question over and over on Slashdot? Yes, as far as technical vocations are concerned, college is as dead as Victrolas, hula hoops, and wolly mammoths. Can we include that in the site status bar for next week's question?
That said, I've run into "architects" with phd's or 25 years experience who couldn't figure out how to write a program that transferred data from an XML file to a database (or visa versa.)
A lot of universities pad their tuitions via a type of class known as "Money Soakers". I.E. classes that are otherwise useless but are required in order for you to graduate.
I think that the CS program I'm in is a great foundation, as I have the freedom to take some interesting CS electives. Still, though, I think the best way to prepare yourself for after school is to augment your regular education with research positions, internships, or open source projects. This helps to make the course material fuller and maybe even applicable.
Dan Zambonini [...] stresses the type of courses I'm taking are, essentially, useless for getting a job. He lists several CS courses useful for a job. Is he right?
That depends on the kind of job you want to get.
If you intend to become Dilbert, he's absolutely right. Go get your degree from ITT Tech, pick up half a dozen certs like an MCSE, and go get a job with the Pointy Haired Boss.
On the other hand, if you want a job where people respect you and value your contribution, where your boss is glad to see you in the morning, Zambonini couldn't be more wrong.
In the good jobs, you're not expected to know far more technology that you could reasonably be trained in and you're expected to rapidly learn new ones as they come up. That requires a solid grounding in computing theory. You can learn XML; you need to have a solid grounding in database theory so you can rapidly understand XML's strengths and weaknesses.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
You are right, one cannot learn C# in an afternoon: it took me about two weeks. Of course, I had been programming in C for about 8 years before then, and both C++ and Python for about 4 years, so it was easy. C# is very much just a more "C++"-ish Python or Java, so it didn't exactly take very long to learn the new syntax for the old ideas. It is like already knowing Proper British English, and trying to get along in Mississippi: you will need some time to acclimate yourself, but it isn't like you don't know how to even speak.
That is the point though, really: C# is all old ideas, as is Windows XP, and about 95% of basically any other piece of software that you will see in a corporate environment. This is hardly true to only software, though: how many new ideas do you think goes into building a new highway overpass? Usually not that much at all, and a fresh civil engineer should be able to understand most of it.
Becoming a good programmer cannot be taught at all, whether in a traditional university, or in a technical school; the only way to become a good programmer is to program a whole lot. That is why a good computer science class will involve many programming assignments, even if they are pointless: the more time you spend programming ideas which you have never had to approach before, the better of a programmer you will become.
But a good programmer NEEDS a solid understanding of the theoretical aspects of computer science in order to do his job well. He won't need the esoteric stuff most of the time, but every once and a while it will help immensely, because it allows him to understand why something isn't working the way he thinks it should.
You mention that people with computer science degrees often have trouble not producing beautiful code, and writing what you call "pragmatic" code. If anything, that speaks volumes for the value of a university-level computer science degree, because we have all seen the results of "pragmatic" programmers.
Best Slashdot comment ever
Give a man a fish and you feed him for a day. Teach him to fish, and you feed him for a lifetime. The understanding of theory that you gain in a CS program prepares you for a lifetime of computer-related work, whether it's as a computer science researcher, a middle-ware & web app developer, or a sysadmin. Having a CS background makes it easier to switch roles and to learn and master new technology, especially since almost everything used today is just a variation on something that was invented twenty or thirty years ago. Know the fundamentals, and you can teach yourself the rest.
I actually RTFA and it really pissed me off (in the American sense). This attitude is, imho, one of the primary things wrong with American (and British?) higher education - the undervaluing of theory. Students want jobs and companies want vocationally trained workers, and everyone blows off theory as if it is useless in that quest. Fools. In the long run the most important thing is theory, as theory both leads to new innovation and guides practice. Our current attitude that higher education should be glorified vocational training is bunk, and probably a threat to our scientific and technological advancement.
Flying is easy, just throw yourself at the ground and miss. -Douglas Adams
I've been writing software for a quarter-century and my vocational experience has NOT made a lot of direct use of my abstract studies in Mathematics and Computer Science (Masters' degrees in both). What I've found most useful, vocationally, is my undergraduate minor in Philosophy.
Computer Software is an abstraction, a map of some problem domain, you must understand the problem domain and then encode a model of a Use Case thereof in the language of the day, Fortrain, C++, Perl, whatever.
Ergo, study the seemingly useless abstract courses and know that you'll never be called upon to devise a heuristic tree search algorithm, but your ability to UNDERSTAND such things will be the tool you'll find most useful in your day to day tasking.
As for my trollish subject line: Plato had much more intresting things to talk about than Economics. If you want Marxist indoctrination, buy a subscription to the New York Times. I've found Socrates' Apology useful in work, because it got me to analyze issues from every angle. When you have to decide between trade-offs your best approach is to forget whose ideas are what and just seek to understand the consequences of technical decisions.
Programming languages come and go (anyone remember ADA?) as do development tools and development enviornments. If you want to learn how to use a particular tool then just take a class in that but I would argue that won't take you very far.
My undergrad featured the theory, algorithms, etc courses. The only 'language course' that I took was from another student. I would argue that any computer scientist/programmer/engineer should be able to pick up new languages and new tools on their own. An understanding of the basis of the science, of the field, of why it works not just how, is instrumental there.
If you want to stay employed then you should have a deep enough understanding of the field to pick up and even develop new tools. That level of understanding will also help you to employ the tools in a better way. If you just want to tie yourself to a single tool then so be it but as it goes, so goes your marketability.
Maybe in the UK they don't differentiate between an Engineering type curriculm and a Business based one.
That said, I've run into "architects" with phd's or 25 years experience who couldn't figure out how to write a program that transferred data from an XML file to a database (or visa versa.)
I worked for one of those, briefly. Very frustrating.
Learning a language is pretty easy - if you've got solid background in algorithms and know a couple of languages (preferably at least one imperative and one functional) already. Start with finding the base datatypes, then the control structures (loops, functions, etc.) then the object model. At that point you've got enough to implement any algorithm you need. Odds are that's enough to start reading code related to the project you've been put on, and possibly some debugging. Once you start reading the code, look up the object definitions for the object types that are used. Odds are you'll find many places in the code where properties of the object aren't being used because the "developers" have been copy/pasting bad code all over the place rather than learning the objects that they're using, not to mention much business programming is considered finished when it works, not when it works right, works efficiently, or is sane to read - most business programming projects are far more spaghetti like than things allowed in a typical CS program.
I don't know that this method for aproaching a language was taught in my CS program, or if the program just gave me the mental tools to develop it for myself, but it does work. It has worked for me in several cases in the past, and I expect it to work many more times in the future.
Generally, it's easier for an engineering grad (lets say Aerospace ;) to *be* a software engineer than it is for a CS grad to *be* an Aerospace Engineer. My point? It's very possible to get a software job being a self taught programmer without a CS degree.
I work with a bunch of guys who have CS degrees and I'm just as competitive without a CS degree. Granted, I did spend A LOT of my own time learning to code, but if I get tired of software I have lots of options. Not many CS guys can do that.
This is not a knock on CS, but I just thought I'd mention one of the alternatives to going strictly CS. I've been in software for nearly 10 years and I would say success is more about motivation than what degree you have. Give yourself as many options as reasonably possible...
As a trader and former developer on Wall St., I can tell you that the problem is that current grads have too little fundamental computer science, not that they have too much. I agree that knowing about some real-world programming languages (which does not include Lisp!) and real IDEs, databases, etc., makes one better prepared for the job market. However, being analytically deficient (no numerical methods, machine learning, graphics, etc.) will cut one's earning potential on Wall St. by 50% or more. Knowing about design patterns but not understanding how a hash table is implemented (and therefore not knowing whether the time complexity of insertion, traversal, etc.) makes one completely useless. While Wall St. is certainly not going to employ the entire pool of CS grads, there is still a place for people to earn a large amount of money who have strong grounding in traditional CS fundamentals.
What Dan says is good. It sounds like he thinks all CS Majors should minor in General Business or Econ...which is fine. A few thoughs on his article. First off... grammer, touch typing, and nutrition you should have learned in grade school (and they're not that important). There's not enough time in 4 years to have this and all the other stuff too. In fact, there is so much on that list it looks more like a 5 year degree. I'll try to point out the important stuff in a minute.
While you are still and undergrad, take advantage of your time and try and lean as much as you can in between partying on the weekends. You'll never know for certain what you will be doing when you graduate so try and pick up as much stuff as you can on the way. I'm not talking about taking this elective or that one. I'm talking about learning things on your own time.
If they teach you C++ in a class, that's great. Soak it up. But don't do all your assignments in it. If an assignment allows you to use any language, pick one you don't know and learn it. This is hard, but worth doing. Ask the professor if they have a suggestion for a language if you need to. Each language you can pick up is one more for on your resume. Find and excuse and lean the following on your own:
- C++
- Visual Basic or C#
- Java
- Perl
- some database interaction using SQL
- shell scripting in Unix (try to use SED and AWK)
- scripting in Windows (good luck)
Also, try porting some code you wrote from one language into another. For example, I once had to port some Perl code down to a bash script. Don't ask me why...Also, set up your own computer so you can learn different Operating Systems. Configure them so you can use them to send e-mail and browse the web. Thorw on some compilers so you can use it to write your code. Try to make it as secure as possible. Take notes. Ask for advice, but make sure you do it yourself. You don't learn as much by watching someone else do it for you. And test your results. Try to get some experience with:
- a Modern Windows server..(if you can get your hands on the install media)
- any version of Linux... (the more complicated the better...you never learn as much when it all goes well.)
- Solaris 10 or later... (It's not the same on Intel machines as on Sun machines, but it's still worth learning)
I would say that the majority of classes you take at University are worthless for getting you a job. Do not fret. Employers want to see that degree all the same. And they want to see a high GPA. It shows you did well no matter WHAT was thrown at you...even if it was "Economics from Plato to Keynes" or "Italian Renaissance Art".In closing, I would say that as long as you apply yourself and try to learn as much as possible about computers, it really does not matter what program you take. Employers only care about the skills (which you can learn on your own) and if you have any degree with high grades. I work with a Pre-Med student turned Windows Server guru and a dual major Physics & Philosophy that turned himself into a coding guru. Start anywhere, just make sure you are a guru in the end.
One last thing in case you missed it the first time. The most important piece of advice in this post was this:
Party on the weekends. Even if you have to throw the party yourself.
Don't pursue education as a means to an end. If you pursue education simply for the love of it, income will take care of itself.
Your question is off-kilter.
Chasing classes with an extrinsic intent is destructive to yourself and therefore, society as a whole.
Pursue what you are passionate about - not what society says will reap a flashy resume and a 'secure' job. Your passion will take care of your needs so long as you do not abandon it. If you do not have faith in that, you are lost to begin with.
I cannot back up my claim with quantitative evidence - and that is the beauty of it.
You get the typical line out of them at an interview "I didn't learn C# in Comp Science but I could learn it in an afternoon.." I'm a young guy (22) and I've been programing professionally for nearly four years and I can tell you that this is simply false. CS major here with the same number years of experience (although mixed with part time and internships). I didn't do it in an afternoon. I did it over 3 nights. I read the APIs and learned the syntax. Where's the challenge?
EvilCON - Made Famous by
Like many have said, it depends on what you want to do. I learned most of the topics he listed at a community college's 3 year program as well as self taught myself some other ones. This helped me gain a superficial understanding of programming enough to get me a job as a developer making just below "ok" money. I am now a senior developer and think I've pretty much hit a wall in knowledge and experience (and why I'm planning to go to University to obtain my CS degree). The way i see it is that anyone with a passion for the subject should have no trouble in picking up those languages with minimal formal education. It's a whole other game when you want to learn/work with the science behind those subjects and apply them to your career even as those languages change from year to year.
I know this is an extreme example but take the latest Google high profile employee. If you wish to accomplish a fraction of what Mr. Cerf has done and still be relevant in the field when you are 60 years old, learning the languages without an understanding of the Science behind the field is just not going to cut it.
[alk]
Since you're going to be reading Plato, you should also look into some Aristotle. He goes into the nature of education and the idea of liberal education. Note, that this is not liberal, like Michael Moore liberal. You should also read about John Dewey's ideas on education, for a more modern view. It's very interesting stuff, and your school probably offers a philosophy course that can help you with your question.
Are you implying that people who program in Basic don't define their own data structures? There's no mechanism in Basic that designs, so it's pretty much up to the user to define the data structure.
'object oriented programming' 'structured programming' blah blah. What will be the buzzwords twenty years from now?
I agree, there are a diverse number of tools for program development. I'm just not content to toss around buzzwords oriented around 'concepts' that are universal, if not 'Universal.'
Sometimes some of us program micros that have 2-8K of program memory and 64-256 bytes of RAM. Obviously, in a specific Assembly Language.
Data structures? Yep. Nice tight data structures. Every bit of every word counts.
resigned
Or... instead of understanding the "mathematics" behind languages, realizing that msot of them in common use are based off of a common syntactic metamodel (i.e., basic, c/C++/Java/C#, fortrash, pascal, etc) makes it a lot easier. All of these languages have basically the same syntactic constructs and conventions: functions/subs/procedures, variable definitions, if-then-else, for-next, do-while, answer=value-op-value algebra (left-to-right order), etc.
Now, throw a C/C++/Java programmer at Prolog, Lisp, or a functional language (Haskel, OCAML, etc) or a stack language (BF, Forth, PostScript, etc)...
...by telling them that you go to university "to get a better job."
The courses you listed are indeed useless for "getting a job" as they are in nearly every undergraduate major at major universities. And, contrary to what most high school students are told, the more elite the university, the less your degree will be helpful to you in just "getting a job."
Universities do not claim, and do not intend, to create workers. They do not provide "job training." They are not designed to find you a place at a company, but rather to give you the skills that you need to establish for yourself a place in the world.
Mere job-seeking and work as "an employee" requires that you limit the authority that you take for yourself and your actions; job seekers must order their universe using the already existing structures of the marketplace and the companies within it, and must order their daily lives and work according to dictates from above, in whatever company the end up working for.
Universities by contrast, in particular the elite ones, develop individuals who transcend marketplace, corporate, authority, and governmental structures. Their goals are to produce amazing people who will someday create those structures for others (i.e. the job-seekers and employees) rather than efficient people to populate them.
Many people are not suited to life outside of the employer-employee relationship. It implies a higher level of initiative, a greater amount of responsibility, a greater amount of culpabilility, greater stress (and possibly uncertainty) in life, and the requirement that you always think globally, flexibly, and adaptably, across a number of fields, criteria, consequences, and fronts, rather than just locally within your current task or field.
Young slashdotters: if you just want "a good job that pays well" with a minimum of other responsibilities, entanglements, or with guarantees about wages, responsibilities, and futures, you should be thinking about trade schools and vocational schools, not university, especially not top universities.
You simply do not go to a top university "to land a better job." Unfortunately, too many students do just that and then find themselves sitting around afterward unqualified for "jobs," unable to find "work" (because they are actively looking within the existing marketplace and corporate infrastructure of society, which universities by and large do not address), and saddled with debt.
For the right segment of the population -- bright, creative, self-directed, wanting to change the world rather than to work in it, willing to be flexible and to forego promises and stability -- university is precisely what the doctor ordered. For the 75% of the population that doesn't care what they do so long as it pays well, gives them a 401(k), health insurance, and the chance to climb the authority "ladder" within a single company, university is a colossal waste of time and money.
STOP . AMERICA . NOW
Reading over this thread has made me become even more uncertain about my education. I am taking a Computer System Technologist Program at a Collage which transfers to 3rd year of Software engineering at a university. People in the industry have given me mixed opinions on whether getting my Software Engineering Degree is worthwhile; for example if I spend the 2 years it would take me to get my degree programming at a company will I be better off? I used to be in a science program, before I decided to go into computers, so I do understand the arguments for having a broad theoretical background, but I don't want to invent the next Java or C++, I want to solve real world problems. So, I understand his frustration because I share it as well. I know a few people that have degrees but I am astounded as to how narrow minded these people are. Real-life world experience has made me a more rounded individual not theoretical classes.
I see nothing wrong with the CS curriculum, however, a student should actively pursue the following weak points which Dan pointed out in his article:
Well, probably because you can't transfer data from XML do (SQL) DB without some loss of data in general case. And those folks with PhDs are often maximalists and just want to provide general method, not just the method that suits your particular problem.
It is true that, once you know one or two languages, you can essentially pick up the syntax of a new one quickly. But, simply understanding the syntax of a language is only the beginning.
These days "knowing" a language also includes a knowledge of the libraries and frameworks that are available. Not to mention the different styles and techniques that are used.
TODO: come up with a clever sig
Spoken like someone who thinks Java, C# and Visual Basic.Net are the only languages on the planet.
I don't care how good you think you are, you can't really learn a new programming language from scratch in half a day, or even a week, and be writing code to a good standard after that time. Sure, you can learn the basic syntax, but to write good code in a language you also have to appreciate the syntactic idioms, the libraries, the standard gotchas, how to use the underlying design ideas (structured programming, OO, functional programming, different kinds of type system, whatever), where to find good sources of extra information and additional libraries, etc. Even if you've programmed a broadly similar language using the same (buzzword warning...) paradigms before, the rest takes time, and not just for learning another library.
The GP post was right on the money about this. One of the problems today is that so many people think that because they know one or two languages, they're some super-programmer who's interchangeable to any other and can be as productive with a new language almost immediately. It just ain't so, although the world is full of crappy code written by people who thought it was.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
I have worked with a lot talented people in my day but the IT sector is a very unforgiving place without a four year degree and once you have that you still find that you need a more advanced degree. For example I work with a guy right now that have far more experience and talent on our network but I was offered a promotion over him simply because he didn't meet the stringent rules of the organization when it comes to degree requirements for certain positions. I know it sucks but the fact is that in the tech industry the practical programming/infrastrucure stuff that organizations are looking for are just not the point and aim of a four year institution's class schedule. This is an important reason too, I mean if there is some guy out there that really wants to do some serious number crunching on super-computers in his graduate years he most certainly doesn't care about a bunch of classes that teach him how to make a web-page pretty and easy to get/send to a backend DB. It just seems to me to be a really double-edged sword. akuma624
... if music be fruit of love, play on
You'd be a fool to ignore the theoretical aspects of computer science, as they are completely independent of the platform you end up programming on. The knowledge you gain from these courses will aid you in the future by helping you design algorithms and prevent you from making poorly functioning or inefficient code (hopefully).
As far as learning the skills you need to get a job, if you don't take your coding projects as serious exercises in software design, then sure, you will most likely not be competitive when you begin interviewing. However, if you attempt to create smart designs instead of just "getting it to work", then you should learn much of the necessary software design skills on your own that will greatly help come interview time.
Ultimately it comes down to doing what you like. Do you prefer the theoretical aspect of CS? Or do you love getting your hands dirty on some code? If the first sounds most appealing, just continue your education after you finish your undergrad courses. There are plenty of research oriented jobs out there for a CS masters student or PhDs. If the latter sounds like your bag, baby, then realize that it is most likely going to be up to you to learn good software design skills. It also wouldn't hurt to throw in some object oriented courses (preferably one that teaches patterns) and a C++ STL course while you're at it.
I've had this debate before. It depends on the type of job you want.
Do you want to work on rev 6 of commercial software which is on rev 5? Add a feature or two, port to Vista from XP, etc.? Just polish the existing product, treading no new ground?
Or do you want to work on the cutting-edge? Working with the latest processors, memory controllers, and applications? Do things that nobody else has done ahead of you?
Put another way: I do the later. When I interview job candidates, if they can't explain n-way cache associativity off the top of their head, I'm not interested. Same goes for the Halting Problem. I need people who understand and can THINK, not just code monkeys.
That's not to say that there isn't a place for code monkeys. It's just not in my shop.
--MD
I couldn't agree more. Allot of software companies hire CIS grads...mainly because they are cheaper than full CS grads. What happens when a software company retools and moves on to new languages? Either the employees 1) Move on to other companies or professions out of frustration with having to learn a new language, 2) Get canned because they are no longer in need, or 3) Ante up and push through to learn a new language. Unfortunately, 1 and 2 are usually the direction things go. CS grads on the other hand have the theoretical knowledge to move between languages with a fair amount of ease. CS grads are the ones that don't rely on the fancy gui's or pre-built code snipits and controls to do all their work...they know how to do this in code....while many CIS's do not. For me...I can look at pretty much ANY modern language and tell what its doing...get a syntax reference book, and start editing. CIS grads that I know...would just freak...because they were taught more business skills instead of theory. I don't discount the CIS degrees, I just don't think they are very practical for the true-blue programmer or shall I say "engineer". I have recently been struggling on whether I should push through and get a masters in computer science or take the easy way out (for me at least) and get a masters in CIS. I keep having to remind me of these facts...over and over... CIS curriculum teaches "Java" or "VB", while CS curriculum teaches "Data Structures" and "Operating Systems". Sure..languages (c++) are taught in these classes..but the focus is on language structure...not the language in particular.
just make sure that you work on interesting projects while you're in school. find out what projects your professors are working on and see if you can help with them.
are you interested in robotics? see if your university has a sony dog soccer team.
are you interested in web development? find a department with a really crappy website and give them a free upgrade.
does your school have a darpa grand challenge car? a solar car? are there any big FOSS projects that you can help with?
be proactive about finding cool things to actually do that complement all of the cool things you learn.
Also like art is the fact that if you don't know anatomy, for example, it doesn't matter how cool your drawings are, they still are going to be technically wrong.
You see this a lot with artists who learned from drawing from magazines, bad photos, or even comic books. They never got formal training and are only building their education on what they glorked from these tools rather than formally learned.
If you are a so called "script kiddie", you are probably going to think you know it all, until you actually find out otherwise.
I am in both boats. I am an art minor and a cs major who started out as a script kiddie as well as learning to draw comics from comics. Now with 4 years of college under my belt at the university of minnesota (decent school for art and excellent school for cs) I can look back and say that I have learned a great deal in both fields because of the formal training. I didn't suck at either before college and could probably have gotten some sort of job in either without college. Now however, I have academic skills in art which aid design (and my illustration) and have fairly advanced training in math and cs.
The say "when you learn to draw, you can draw anything"... and this is true to for cs related stuff.
If you not learning this stuff in class, pick it up on the side. I did, and in spite of not learning XML, for example, in class, we studied link lists, etc as a data structure. How is XML DOM not an implementation of link lists. etc etc.
To the main poster: Stay in school, and learn as much as you can while you are doing it and try to have a social life so you a) don't get overloaded and freak out and b) you have the social skills when it comes down to dealing with a variety of peoples in a work envrionment - outsourced or otherwise.
Programming is a craft. You only learn it properly by being a defacto apprentice for a while. Computer science gives you the theoretical underpinnings required to give you the potential to be an excellent apprentice.
Something that has been troubling me lately is the fact that when asked "what do you do?" or "describe yourself?" people answer with something like:
"I am a ______. I went to ______ University."
In other words, you are what your job is and you owe your job to the school you paid to educate you and give you credentials by which you got your job. So what. There's a great way to make your mark on the world. If you are shopping or reconsidering your Computer Science program, search for one where you get the foundation that lets you answer "what do you do" or "who are you" as follows:
"I'm a father of ____ who enjoys (non-work stuff). I'm involved with building ______,_____ (insert interesting topics) for _____ (company)."
Don't be a robot when you grow up. Have an identity that is greater than simply what you do. Don't focus your education on the job so much. Study something you want to know about and will be able to use your tallents and abilities to further the field - either in it's application or in the core body of knowledge.
One other thing - most of the people that don't make it in the real world (at least working for me) identify themselves as being their job. Their highest order of value in life is the work they perform. They do great work and are easy to work with until one day the parameters change or what they do becomes less relevent and valued. Then all hell breaks loose - and they becom almost a cancer, finding fault with everyone who suggests they change or that what they are doing is passe. Those who realize their job is one small part of their identity deal with change better and often are able to better prepare for the future.
-- $G
Universities are just a waste of time. Take it from one who's been there, graduated, and went to one of the more well-known / "prestigous" places. Focus on the degree helping you to provide a living. And what I mean by that is that many occupations / "professions" require certain degress or other college accredation. Get that qualification / accreditation, and forget the rest which is just stupid bs. Unfortunately this accredation / qualification requires a dgree and you'll have to put up with it. Even if the only reason is for a bunch of dumb proffs justifying their own existance. If you really want to learn, you'll do it on your own a lot better.
i would not have my current job if i hadn't worked my ass off taking the extra theory and math classes. i end up using almost all my math and ai classwork on a daily basis. the stuff i did in my os and networking classes also come back to haunt me on a fairly regular basis (which is pretty damn galling --- i despised those classes, but i did well in them anyways). i find myself regretting the fact that i didn't do any ee beyond my required digital logic class on an almost daily basis (so much so that i'm looking around at local universities to see about maybe starting a part time m.s. in ee). then again, i teach robots how to see — i'm pretty convinced that i have about the most awesome job ever (the only way it could be more awesome is if i had the budget and what not to research and develop whatever took my fancy).
so, in summary: if you'd like a job that's easily off-shorable, take dan's advice. if you'd like career that keeps you excited and has you in a position to solve challenging problems on a daily basis, you're going to need a different plan.
why would you want to go to school for a degree in computer science and then get a job developing proprietary software that takes away peoples freedom? become a waiter instead!
I was going to write a critical response to the article here, but it's so completely missing the point that I didn't know where to start.
I'm sure you're right, that a few CS courses teach material that isn't really needed below research level today. OTOH, I've seen people who thought they were great programmers write this:
and not even realise why it was flawed. I've seen people who thought they were great programmers use a quicksort on data that was known to be nearly sorted already "because it's O(n log n) silly!" and not even realise that it's not, never mind knowing why not and when it is and isn't an appropriate choice of algorithm. I've seen numerous similar examples of incompetence during my professional career.
No-one who understood the underlying ideas -- basic CS material -- should be making those mistakes, and no-one who doesn't understand those ideas should be writing serious code. I don't care whether the knowledge itself comes from a formal CS education or being keen and learning it on your own, but that knowledge is important for real world work.
The fact that the guy writing this article is naive enough to think that knowing XML and design patterns is more important than this sound underlying knowledge of How Stuff Works demonstrates why he's totally unqualified to comment on this subject better than anything I could possibly write in a critique.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
That is not the reason. And the situation was that the PhD wasn't thinking about the problem in a general manner. I wouldn't be suprised if you yourself would have problems writing a program of this type, A.C. I consider it trivial.
If anything, you have just demonstrated the parent's point. Sure, LISP/ML/Prolog are different at their core from C/C++. But that is exactly the issue. IF you had taken a theory of languages course in a respectable BSCS program, you would know that the first two are functional program languages while the latter is a logic programming language. C/C++ and all other c-like languages on the other hand are imperative languages. IF you had the correct academic experience, you WOULD be able to understand why the first two mentioned paradigms exist and why they are so important (ever heard of lambda calculus???).
From the blurb, I was expecting Zambonini to be mostly wrong, but it seems he's just putting the blame in the wrong place (mostly).
This sort of courses may not be useful to get a job, but they can be vital to doing your job well. And therefore, keeping it.
The information from courses like TOC and Algorithms, for example, are used regularly on the job: pretty much every time you code.
That does not mean you go and provide correctness-proofs and a full analysis of every code-path you write. That is too costly in most industries.
What comes 'for free' from someone who has this background is the ability when they look at the problem to discard many bad solutions before attempting them, identify costly/intractable problems that need better specification, and solving concrete problems with very general (proven) solutions.
He's right that there are other less-academic skills you can use to land a job, but I'd disagree that this is the responsability of a CS program. For many of the issues he brings up, it wouldn't even be the responsability of an Engineering program.
The career-path is the choice of the students, and their responsability. Although keeping the academic courses relevant is important, I wonder if there are as many complaints about Math majors learning too much Math and not enough business/management.
Assumption:
The role of a science university degree is NOT to provide all the information you will conceivably need in the industry (which is too broad and changes month).
Its role is to provide the student with the fundamental background and the skills for the student to identify what is specifically important from all that knowledge, be able to learn it by themselves, and then make new contributions to that knowledge.
Considering that:
- If students cannot educate themselves on technical specifics (a programming language, xml, etc) outside of the college curriculum, they will face difficulties in the real-world regardless of whatever courses they took.
- From the courses listed, one cannot say for sure, but it sounds you are in the right CS program.
Just make sure to complement your academic education with practical skills if your goal is to get an industry job.
- He's right about databases. They're vital in and out of the industry, and they put to use some skills otherwise often neglected.
A good CS curriculum will include at least 1 course in database fundamentals, with at least a non-trivial practical project.
- Taking a course because it mentions XML is total non-sense. There is no new deep theory behind XML, only minor technical decisions that certainly do not take a university course to learn.
While XML makes sense as a case study for a number of related areas (parsers, SE, databases, etc), there is nothing unique a student can't learn in a few hours.
If a new CS college hire cannot tell when to use DOM vs SAX after a 5 min. explanation on what the acronyms mean, then the problem is less with ignorance about XML and more with lack of those 'useless' CS fundamentals.
- He's right about students not going into SE, but that is as much the student's fault as the university. In my experience, SE courses are not very popular with undergraduates where they are offered. If your aim is to be a Software Engineer, use the options available in your school. Take them if that is what you want to do with your degree.
I don't know if this is just more common in the US, or my 'sample' was less random: but from what I have seen many universities provide either an SE program/sub-program or corresponding electives
If they're not available, learn on your own and do projects that use that knowledge. The main benefit of the SE courses I've seen is identifying the big problems and pointing out old solutions. The interesting stuff you have to learn by yourself anyway.
- Get real-world experience: internships, co-ops, part-time jobs. The most important
Freedom is the freedom to say 2+2=4, everything else follows...
> Grammar, punctuation, concise and clear writing.
Indeed. I have noticed, among CS students in general, and self-appointed geeks in particular, a very common tendency to have a smug attitude when it comes to grammar and spelling: "I am such a good programmer that I can spell any way I want."
Well, when it comes to interviewing candidates, good spelling and being able to write clearly are just as important, in my books, as technical knowledge. I would be loath to hire anybody who is unable to tell when to write "its" and when to write "it's" - if they do not have the minimum brain power to understand the distinction, or they lack the interest and curiosity to find out, I do not want them working with me.
I am a CIS major, but what means is basically a computer science major sans 2 extra math courses. I spent a lot of time my first 3 years learning silly things like "how to do loops in c," "how to do loops in VB," "how to do loops in Cobol (SHUDDER)" Only in my senior year have I learned "advanced" topics such as linked lists, stacks, heaps, and all that discrete math stuff. What is the lesson to be learned? Your degree is about teaching you how to learn, forcing you to learn how to think, exposing you to a wide variety of topics, and making you realize that "computer science" isn't about spending 3 years learning Java or C++, but teaching you how to think like a computer, no matter the language. I went into college with a wide variety of skills and talents, and I'll leave college with a few more facts, a few new ways of thinking, a lot more maturity, and the knowledge that anything I dont know now, I can know tomorrow, or at most by next week.
First: the school's main purpose is not to teach you your job; it's to teach you the parts of the job you wouldn't be able to learn by yourself. Mastering a couple of languages and patterns is something you'll learn at your first professional position, every code monkey can do that by himself. You'll be allowed to think of yourself as fully trained when applying for your 2nd or 3rd job.
What you won't be able to learn under the pression of real-job-conditions is more fundamental: it's about having those abstraction capabilities, which allow to understand a problem, turn it into a formal model, find appropriate algorithms to handle this model. That's maths. Indeed, you'll probably never write a computer-vision system or a ray-tracer for a compagny. But by having been drilled on such problems at school, you'll [hopefully] have acquired some skills in complex problem modelisation and solving, that you'll need to write everything but dumb PHP interface to a DB. And you know what? These dumb code monkey jobs are going to become Indian or Chinese long before Duke Nukem Forever is released, so you'd better be able to work on smarter stuff.
I know, it hurts to admit that mathematical thinking abilities are a must for decent programmers when you're yourself mathematically-challenged. It must be unpleasnt to realize that a lot of tough training is required to acquire these skills. But just translate this attitude to an other field and you'll see how stupid it is: "I want to become a novel writer, so I don't see the point of studying ancient authors: nobody speaks/writes that way these days. I don't want to read war stories or poetry either, as I don't plan to write any. I don't want to hear about mythology, classical litterature theories, or whatever. What I want to be trained at is grammar (spelling is useless now that we have decent spell checkers) and type-writing".
Perhaps not if you drive a database, but they certainly will if you're working on any sort of scientific or engineering software. You can have the most trendy, pattern-based, OO design you like, but if you still compare two floating point numbers for equality without a tolerance, you're not worth the first day's pay.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
"I want colleges to train my employees for everything I need now. Actual education is a waste."
Quite honestly it's shortsighted antielitism like this that's been fucking our industry and country over for the last decade. Man, I've gotta start looking at foreign software companies...
Care about electronic freedom? Consider donating to the EFF!
This is a good point -- learning languages that use the same paradigm as one you already know (such as procedural or OO) is fairly easy, but learning a new paradigm is hard.
But guess what? The typical CS coursework does teach you different language paradigms, because that is a fundamental part of computer science. For example, back when I was in school, the introductory "Artificial Intelligence" course was really a "functional programming with Lisp" class. There was also a specific course on ML, to educate on a lot of the new language concepts that were being introduced there. And one of our professors was doing research on multi-paradigm programming, so you could take his class to broaden your foundation even more.
All of this means that you get grounded in the theory and concept, which you can then take and apply to any specific language you need to use.
Btw, my suggestion for a rounded CS education: get a good CS foundation from your course work, but also make sure to do an internship and/or practical coding on your own. For example, there is a lot of opportunity these days to get involved in open-source projects, and being able to put this kind of experience on your resume (with code you have written that someone can actually look at) is a big plus.
I'm a C and VB programmer, and I picked up Brainfuck pretty quickly.
to learn on your own time what isn't taught in your CS course, then it's time to consider another career.
Programming is hell if you don't love it.
What are you talking about? I'm a Helpdesk Manager, and I already get treated worse than the janitor.
As opposed to myself, my primary job these days is programming in perl. Do you think I was ever "taught" perl? No, we did C, C++, Java, etc.
:-). This hasn't exactly prevented me from getting gainful employment.
My undergraduate studies (which started in the mid-80s) basically taught me Pascal, Modula-2, and Oberon (guess which school I attended
On the other hand, I wouldn't be able to do my current job without Linear Algebra, and there are many days I wish I'd have paid more attention in all my math classes.
Sure, these courses may not be essential for getting a job. However, they're quite handy when it comes to keeping a job. Just about anyone who's read a tech book can code. Knowing how to write code that is computationally efficient, and knowing how common concepts work, will get you much farther. If all you've done is learned a bunch of languages but not the theory behind them, you have a lot more catching up to do when the next language comes along.
-- I prefer the term "karma escort."
Have you programmed in ML? Lisp? What about Prolog?
;)
Yes, Yes, and Yes. Non-Procedural Programming was one of the requirements for my CS degree
Which is one of the major benefits of a truly good CS program; it will expose you to a wide variety and languages and language types, along with giving you a good grounding in theory. The more languages (from as many different styles as possible) you're already familiar with, the more trivial it is to pick up $NEW_HOT_LANG, especially given how similar so many of todays "must know" languages are (If you have any experience with Java, C# is an afternoon of messing around at worst, for instance).
I doubt I'm the only one saying this, but let me reiterate:
* A Computer Science degree is not primarily about getting a job
* Understanding theory does in fact make you a better, and more employable, programmer
There's more to working in software than just knowing specific languages. Process, patterns, communication and cooperation. If CIS can give you a significant edge in those areas, consider it.
"I didn't learn C# in Comp Science but I could learn it in an afternoon.." I'm a young guy (22) and I've been programing professionally for nearly four years and I can tell you that this is simply false. Make no mistake about it, I'm still no coding grand-master and probably wont be for another ten years.
I think your statement here sums everything up nicely in favor of university degrees. You don't have such a degree, you can't learn new languages fast, can't recognize that ability in others and after four years you're still not an expert at the one language you do know and use daily.
Aside from the exaggeration of "[one] afternoon" which I agree is insufficient. You believe it's impossible because you yourself are unable to accomplish it due to your limited vocational training. Then you falsely project your own limitations on to others. As other posters have replied: yes. with a well grounded backround in theory and fundamentals it is possible to pick up yet another language in a very compressed period of time. (Though some of us benefit from an advantage in age over you.)
I have been proficient in the past with Fortran, Pascal, Modula-2, LISP and various assembly languages. I am currently proficient in Perl and shell and an expert in C, C++ and Java. (not trying to brag, a lot of /.ers have similar, or larger, skill sets and will relate to the rapid shifts in technologies that result in such sets.) The last job I took
up required teaching advanced data structures in Java; a language I hadn't touched before the first day of class. Within one week I was productive in the language, within two proficient and within a month I was expert and using most of the advanced features of the language. I can't count the number of times my employment positions have put me in such a position where the programming requirements of the job have changed abruptly. I have always been ready to adapt to the challenge in a very, very short time frame and I believe this is due to my university-based education. I'm not afraid to change jobs or be fired because I know I can adapt and be valuable and productive in any new environment.
Here's two more examples:
- Never during my education in CS did I expect to become a programmer and systems administrator for a Nortel phone system. But it did happen. I was ready for it and saved my company a lot of money in consulting fees because a dedicated technician didn't have to be called in to fix little issues.
- Second example: One of my students obtained a job with an aerospace company and it was my responsibility to monitor them for a year to make sure everybody was happy with the arrangement. I asked what they were working on and they replied "debugging HPL programs. I've never even heard of HPL! How am I suppose to know this?". I said "neither have I. How are you doing at it". They said "Fine."
They were "fine" because they had the necessary theory fundamentals squared away. I would trust this student to pick up anything new and previously unknown in a short time period. In general, I would trust university educated people to have this adaptability more than vocationally trained peopl.I'm really sorry for all the excellent, creative problem solvers you turned away because of your bias towards a single answer. "I don't know" is a perfectly acceptable answer (in any context) and doesn't, in itself, indicate an unworthy candidate. "I don't know; but I can learn it real fast" can indicate a truly flexible, useful person. Your loss; not the candidates.
I will never live for sake of another man, nor ask another man to live for mine.
wisdom speaks.
This is a fair point, but one which I think most CS programs deal with well. Most CS degree programs require one or more "programming languages" classes in which students study and analyze the major language paridigms.
For instance, the languages class that I took as an undergrad CS major not only studied functional, logic, OOP, and imperative languages, but we actually wrote interpreters from scratch for a small language of each type.
I feel that this cirriculum prepared me well to learn both new languages, and even new language paridigms (although almost all languages fit into one of the above categories)
I got my CS degree in 1984. It's still useful, because they taught me theory, The languages they used (Pascal, PL/1 and LISP primarily) aren't.
My enthusiasm got me jobs. The degree only helped.
When I went to law school, almost everything I learned was theory. When I started the practice of law, I knew virtually nothing about actually running a trial. Now, I'm writing the book, and a publisher pays me for it.
Much of what I learned from the practice of CS and of law could have been taught at a trade school. 95% of the time, my work would be competent.
But that remaining 5% distinguishes between a tradesman and a professional. As a prosecutor, cross-examining the defence's psychologist or engineer, I have the advantage of knowing the basic theory behind their disciplines, because of the courses I took at university. I only tinker with writing software now, but I grok the new languages fast enough (when I get the chance to turn my mind to them).
I don't knock the trade schools. Enthusiasm to learn takes some people all the way through the theory they need to be pros. They don't need a university degree to be good.
And uninspired university graduates are so useless that should not be permitted to do anything important. I wouldn't hire them.
I remember that IBM used to hire only people with university degrees. Not just CS. Any degrees. IBM wasn't interested in what they learned at university. They wanted people who had the the enthusiasm/fortitude to slug their way through dry theory. A degree proved that the kid could work. Isn't that what an employer wants?
So what do you want? A job or a career? How much do you want it?
Isaac Asimov wrote a short story about this very issue. I read this in the sixth grade, and that was about 40 years ago. Here's what I remember about it.
It's about a student who is depressed because he has to take general studies classes while his friends get to take specialty stuff. It turns out that his friends have a tough time as their specialized (and shallow) knowledge becomes obsolete. He, on the other hand, has been being groomed to help design these new technologies with his more generalized (and thorough) education.
Can anyone remember the name of this story? I'd enjoy reading it again.
I agree, but vocational doesn't even really teach you how to code, or at least to code well. If you know your data structures, understand algorithmic analysis, understand processor utilization and memory management... Computers are dumb, they just do what we tell them to. If we understand how a computer works, we can tell to do more things more efficiently. That means that in a production environment, trained computer scientists can save a project money by getting more done with less, faster, and with fewer bugs.
Focus on substance, not on trends. FWIW, I don't have a CS degree. I stopped taking certification exams three years ago (I will be taking the PostgreSQL CE exam by SRA merely as a way to help them improve the exam). FWIW, most of my background is in history, but I have a fairly strong math background as well which helps a lot. Heck, I make my history background work for me too but that is another matter (Occam's Razor makes a great software design principle, but you have to know what William of Occam attually said for it to make sense in this context). The computer science I have learned, I have picked up from discussing technical issues with CS professionals.
I see nothing wrong with your program though. I run across way to many people who either have CS degrees without a real understanding of the theoretical underpinnings, or a real desire to go and figure something out using the training they have. This is probably the reason why so many end up in jobs outside CS. Yet those I have known who *do* deeply understand the theoreticals and really want to figure things out often go and do very interesting work. Again it depends on the person and whether CS is really what they wanted to do.
If you want to have a buzzword complaint resume, by all means change course. However, this is very short-sighted in my opinion. If you really want to go deep into CS, then learn the theoretical underpinnings, get internships to flesh out your resume with real experience (or maybe contribute to FOSS software like PostgreSQL) and go for it.
LedgerSMB: Open source Accounting/ERP
>> So why can't computer science graduates tell me when to use SAX and when to use DOM?
Because you haven't explained to him what the latest, faddest acronym in (originally) java land means. If you were to ask the CS graduate when to use a 'streaming' vs. when to use a 'buffered' API, I'm sure he/she would come up with the right answer.
To get the skills you're wanting, you'll have to work through college. You should do that anyway to put experience with academics for a more well rounded resume.
You should go to college to make sure you mature intellectually beyond high school. In educational learning theory, you're developing your metacognition so you're able to critically analyze your progress in whatever you do. I'm convinced going to university won't give you skills, it gives you a club card that allows you access to the levels of other elites. Unless you own your own business, nobody will really ever respect you in the job world with a high school diploma and a trade school (where you would actually learn skills) degree.
It occurs to me that if you take courses in computer science, then end up not using any of these skills... ...it is simply poor planning on your part.
If you are just a gruntbugger maintaining other people's code designs, it's a little different than an software architect that designs systems... where surely one would apply knowledge gained from a variety of courses?
The parent of my post was saying, essentially, "You learn one language, you've learned them all," which is what I was refuting.
In case you were being non-rhetorical, by the way, I've TA'd (and guest lectured during) two separate semesters of the programming language theory course you mentioned. But when I was first learning Lisp, ML, Prolog, etc., I was an EE undergraduate student, not a CS graduate student, so I hadn't yet been exposed to the sort of coursework that would teach me about different programming paradigms. In other words, I've seen things from both sides of the fence (wrestling with programming languages whose syntax is only the beginning of their differences, to later understanding why that can be so difficult).
I took all the CS theory I could in school. I coupled this with hands-on experience as a co-op at a local company (bonus: The job helped pay for school, and having access to the computing resources at work didn't hurt, either).
Jobs are great at teaching you everyday mechanics and social stuff (how to check in code, how to negotiate compromises in products and actually ship stuff). CS is for making you a good problem solver. Don't expect anything lasting out of the "Sams" courses -- for instance, once you've taken a good course on compilers, you'll be able to pick up (say) VB in a few days (assuming you want to at that point).
Any sufficiently advanced technology is insufficiently documented.
Oh come on, perl practically _is_ C/C++/Java... It's not like it takes a massive leap to jump from being proficient in C/C++/Java to being a decent perl hacker.
"Learning to Learn" is the kind of BS people use to justify the fact that they wasted a shitton of money on 4 years of useless, simple crap and then had to teach themselves in order to hold their own in the real world.
You're totally right about being able to learn XML from a book, but you certainly don't need to go through 4 years of college to learn how to read, do you?
When seing "my college doesn't teach me anything useful" debates, I am always reminded of Robert M Pirsig's description of a university in Zen and the Art of Motorcycle Maintenance:
;)
The real University, he said, has no specific location. It owns no property, pays no salaries and receives no material dues. The real University is a state of mind. It is that great heritage of rational thought that has been brought down to us through the centuries and which does not exist at any specific location. It's a state of mind which is regenerated throughout the centuries by a body of people who traditionally carry the title of professor, but even that title is not part of the real University. The real University is nothing less than the continuing body of reason itself.
What you IMHO should learn in university is to become part of that great heritage of rational thought. Or as other poster's have described it: "To learn how to learn".
PS. Great book BTW. It's really worth a read.
PPS. This might be a bit lofty view, when you have to get up at eight in the morning to go to classes
Here you can find out how many experts think a undergraduate program in computer science should look like. http://www.computer.org/portal/cms_docs_ieeecs/iee ecs/education/cc2001/cc2001.pdf
ok, first off, dont take this as me bragging, but, to illustrate a point, I will compare, me and my brother, since the background is similar.
Me and my brother are almost 4 years apart. We both grew up on computers, and we both used them a lot. My brother is in his 2nd year at a university studying cs. My brother did better in school then i did. I have not yet been to a school after highschool.
I recently said to my brother , "My friend is building a dual dual core opteron box" and he asked me, "what is an opteron"
I mention other hardware stuff and he was completely clueless as to what cache was, or a system bus. So, i will give him the fact, maybe he is a software guy, and not a hardware guy. I have a friend who makes 90k/yr programming at ms, and he couldnt install the heatsink on his p4. I had to do it. go figure. So i start talking about software stuff, and he is completely clueless about that. so, here is where i begin to worry. he doesnt seem to know a lot about computers, and after further probing, he really doesnt know much at all. and I wonder. we pretty much spent the same amount of time on a computer, why is he so clueless?
One word: Passion
I have a real passion for computers, you can hear it in my voice when i get über excited about the 2gb of ram I just installed. or the one kilo fanless heatsink i just installed. He doesnt. He just says, cool. I never hear him get excited about anything tech wise. I can code ok. SO, can my brother. only in java. Im a linux monkey, he is a windows mouser. So, who do you want? Someone in school? or someone who cares about what he does? Do you want someone who actively partakes in the programming community and is productive with his computer or do you want someone who as soon as the homework is done starts playing games?
I love my brother, but, I honestly dont understand why he is taking cs. But, this was to just illustrate a point. My brother is not the only person like this. I know many cs grads that need my help in fixing their computers. or how much they dont know overall.
My last roomate was a technical recruiter. Everyday he would come home from work and say, hey - i have the perfect job for you. We would always talk about tech stuff, and I could always answer his questions. without any problems. Funny how that works. anywhoo... there are plently of uneducated computer junkies that know a lot. there are also plently of uneducated computer junkies that dont know sh*t. there are plently(mostly, from what i have encountered) cs grads that dont know shit. there are also some who do.
My point is this---Education doesnt matter, the person who takes advantage of it, or doesnt. Do they grow from it and use the knowledge? or does it become statistical junk? Do they become an individual or do they become just another product of the wonderful education system of the USA?
It is trivial to do trivial things in any language. It is not trivial to do engineering in any language. "the 2nd coming", apparently believes syntax and libraries are the only differences between languages. That is wrong.
... but they are meant to be production languages so the seemingly trivial differences loom much larger.
Many people mistakenly believe Java and C# are practically the same. Unless you are talking Scheme vs Lisp few have as similar syntax. Yet there are many differences, and the implications of those differences for engineering in each language is much larger. Java and C# are the same if you are not doing engineering in them
Will a day of learning syntax help you understand the difference in how generics are implemented in Java 1.5 vs C# 2.0? Do you think the difference won't matter in how you should use generics in the language?
Learning a production language at university is a distraction, because you are trying to _learn_ useful long term principles. You are not trying to _apply_ them to a production system. Eventually will need to do that in a job, and the path from junior to senior engineer is the time to do that learning.
Don't take a class at school about C#, or Java, or C++. Learn it yourself, by making and maintaining a long term hobby project. Just don't underestimate how deep is the problem space around learning to be effective in a language.
The problem with University education is not the lack of learning production tools. A University is not a trade school. The problem is the lack of perspective given to students about what will be important if their goal is to be a software engineer. You don't need to learn at school all the details that come with experience. However, it is a disservice that most students leave school with the wrong idea about what their future path of learning needs to be.
Of the dozen or so MIT computer science courses at MIT, most of them are now useless because the field changed a lot in a couple decades. But the important point was to continue to learn . At MIT maybe I learned 15 computer languages, none of them commmerically useless. I estimate I picked up another 15 since then, probably about four them commercially useful. And still get paid very well for this semi-useless learning.
IF you had taken a theory of languages course in a respectable BSCS program, you would know that the first two are functional program languages while the latter is a logic programming language.
My teacher in our computer science class in 12th grade here in Germany taught us that.
> Now, I do not know of any CSers that are
> unemployed...
Are you sure you don't want to retract this
or clarify? It sounds like you're trying to
say that anyone with a CS degree can get a
job right now. Of course we all know that
isn't true and there are tons of people with
CS degrees who are unemployed right now (mostly
because of overseas outsourcing and H1B and L1A
visa programs).
Well of course. If computer management fouls up, then in the worst case no one can do any work and has to go home early. If, on the other hand, janitor fouls up, the bathrooms are going to become truly vomit-inducing places...
Janitors are more valuable than computer staff to employees, altought not neccessarily to employers, so better treat them better.
Forget magic. Any technology distinguishable from divine power is insufficiently advanced.
Simply put:
Complete all the CS courses to become a developer.
or
Quit your four-year program, enroll in a two-year program where they teach you one language and become a code monkey.
These courses are fundamental for you to think like a developer.
I got my B.Sc. in 1991. Back then people argued about whether Pascal or Modula-2 was the right imperitive programming language to teach. It's obvious that your degree cannot be about details like programming languages that will change totally before you're even a third of the way through your career. If you want to learn programming languages, contribute to open-source projects and do internships.
What you should be learning in your degree is stuff that will still be true in 20 or 30 years time. That means things like computational complexity, logic, numerical methods, and so on.
It also means learning skills like "design". This is much harder to teach. If you're concerned about your employability when you graduate I'd suggest you focus on this sort of thing. Do a really good ambitious final-year project. Ideally make it a group project with about 4 to 6 people contributing. Show your employer that you can work efficiently in a team and produce good documentation. This will be much more impressive to them than the number of languages you can list.
Learning a programming language isn't a big deal after you've learned a half dozen or so. But today, each one comes with an API of several thousand buggy functions you have to learn. That's the hard part. And it's so unrewarding.
I don't know about C#, but I learned Tcl and Python in about two days each. I do the following:
That takes maybe 3-5 hours. The rest of the time is spent coding with the API reference at your side. I'm only just started my third year of a CS degree (along with Chemistry).
The fact of the matter is that most languages you'll be using are object-oriented imperative languages. Once you've played with languages like ML and Prolog, you'll realize how similar they all are. The "intricacies of writing code" are mostly design and algorithm choices. Figuring out how to execute the design in your language of choice is trivial.
LOAD "SIG",8,1
The science/engineering dichotomy makes some sense. The Physics and Chemistry undergrad 4-year degrees are preparation for graduate school (Masters and Ph.d), while the engineering degrees are preparation for work or for grad school.
After decades of trying, Software Engineering has finally split off from Computer Science as an undergraduate degree in a meaningful way. Unfortunately, the theoretical stuff is too theoretical and the practical stuff may not last very long. While lisp and RPG programming are still alive (and both were said to be obsolete in the 1960's), lots of technology dies. XML may be gone in a few decades, and hopefully Java, too.
No matter what you do, when you go for your first job do NOT put the word "Test" on the resume (CV) anywhere. If they ask you whether you tested your software, tell them no, it just worked. And that in team projects the other guys did the testing. Most CS grads do not get jobs writing software. A lot get shoved into testing, which is not what they want. If they offer you a job in testing, just say no. If you once get a job in testing on your CV, you can never leave it.
In order to answer your questions in further detail, we have to know more about you, what your plans are, and what your goals are. If you're after money, go into business. If you want to code, take as many coding AND CS courses as you can. Even SQL.
In any case, try to code in as many different languages as you can. And languages that are different, not just variations on the theme of OO.
Some topics are only prep for grad school, you won't get a job with only a 4-year degree: AI, robotics, graphics, computer vision, machine learning, and probably game programming.
The following are immensely practical: automata theory, compilers, set theory, predicate calculus, Boolean algebra, algorithms and data structures, searching and sorting, SQL, and specification systems, among others. And by all means learn what TLA stands for.
And do consider learning Hindi, as the guy said.
For the last several decades, employers want somebody with 2 or 3 years of experience. Any more or less and they won't hire you. Not everybody, of course.
I18N == Intergalacticization
I'm getting sick of this line of question... only YOU matter. If you're smart, you'll get a good job. If you're dumb, it won't matter what courses you take. It'll all balance out in the end.
Steve
Dan's point isn't that CS is not useful, just that CS degrees don't cover everything that is really required to be a true software engineer. I don't think that he's making an argument for CIS or "vocational" programmers, we all know what road that leads down. I have my BS in CS and my masters from Carnegie Mellon in Software Engineering and I think that it is combination of the two that really qualifies me to be a good developer.
The fundamental problem with CS degrees is that there is ZERO focus on the business aspects of softare: management, design, process, etc. They teach the (very very important) fundamentals of programming languages, computer theory, etc. but they don't teach process, or give any sort of business sense. Students don't learn anything about development lifecycles or software architectures. This means that the average CS graduate is only suited for the build phase of development, often times, they don't have any realization that there is any other phase!
The solution for this is not to add vocational training to CS curricula but to add courses in software design (architectures/patterns/uml), software processes/lifecycles (waterfall, spiral model, evolutionary dev., CMM, ISO-9001), and software project management (business tradeoffs of software, business reasoning).
These courses should be in addition to the fundamental courses in operating systems, computer architectures, data structures, programming languages.
The addition of this sort of coursework would provide the foundation required for CS students to enter the workforce as Software Engineers capable of working on all phases of software development projects.
I think the Numerical Analisis is the only must have form the list. Not for getting the job, but for performing it. Whatever you will do, you will stumble onto floating point sooner or later, and there you have to understand precision, errors, numerical instability, floating point matrices etc. Whatever AI and machine learinig you may need you can learn it yourself. There is not much practically usefull theoretical staff there.
But it's not science. It could be argued that a typical computer science curriculum doesn't teach much science either. Quite possibly the coursework needs to be strengthened, though I know from my modest contacts with curriculum development that in practice it very much depends on how fast students can absorb the material and consider its implications. Faculty discuss this challenge all the time. To get the basics of computer science in four years is, not surprisingly therefore, about the same process, and about as hard, as doing the same thing in chemistry or any other scientific field.
So it seems inevitable that improvements to the computer science curriculum will move it some distance further away from Zambonini's shopping list than it is already. Science, after all, is a systematic discipline for discovering the nature of the universe.
I notice that Zambonini is not in the least concerned about that. So why look to a science degree to deliver something that's not in fact about science? You're shopping in the wrong store. Learning how to program, for example, is like learning how to operate a mass spectrometer. Of course you have to master the tools, but in science that itself is strictly not the goal. In a technology diploma it pretty much is.
Parity: What to do when the weekend comes.
I agree. I have a CS degree and I've been programming professionally for over seven years. Occasionally I find myself having to learn a new language or tool. I've done it enough times that I've even got an algorithm for it. I basically read up on, in order:
:)
1. all the major constructs of the language, e.g. working with variables, functions, flow control, etc.
2. handling exceptions (if such exists!).
3. Interacting with a database, including how to work with transactions
4. Interacting with the network
5. GUI design (if such exists)
6. Any gotchas the other programmers know about
Once I've figured out these items, which takes a week or two really, I do writeups of all of them and stick 'em in a folder (and on a PDA) for future reference.
Someone without a CS degree (or any production experience) tends to think about learning a language in terms of reading a 2,000 page book, memorizing it, and so on -- rubbish, of course.
If they knew better, they could focus their efforts much more effectively. It's all about knowing what to look for, and that comes with education and age.
Heh heh, being an older programmer myself (35 this month) I deal with a lot of arrogant little shits at work. They think they know everything at 22, then they turn around and build a huge, bloated system all the users complain about bitterly. And I laugh.
Farewell! It's been a fine buncha years!
The academic-oriented stuff is tuned for the so called "alpha-geeks". That label may only apply to roughly 1 to 10 percent of your class-mates (depending on your university). And, you may not know ahead of time whether you will make it. Getting A's may not be enough. The vast majority of CS students will need more practical "cubicle-warrior" skills.
Unfortunately, universities tend to ignore this larger group because catering to it harms their reputation. And, business programmers tend not to publish scientific papers because corporations consider most of your work there trade secrets or proprietary. Thus, that group does not boost the universities reputation: their biggest percieved asset.
However, it is important to understand office politics. Here are some suggested readings:
* The works of Sun Tzu ("Art of War")
* Dale Carnegie's "How to win friends and influence others". It can be considered Brown-nosing 101. Dale just finds kinder-sounding euphemisms for that.
* Dilbert comic strip
Table-ized A.I.
You may find you change your mind after trying Prolog, Haskell, or APL.
Unless it's your mission in life to be on the government dole^H^H^Hpayroll working for a defense contractor or some federally funded science project, a degree may do very little for you in the long run.
...All of which begs a question: Why do you really want a degree? Do you really have goals in your life which can only be accomplished with a degree? If so, well great! Go for the degree!
If you already have computer skills & talent, you could quit college now and make as much money or more in the private sector immediately. By the time your classmates graduate, you'll already have some real life work experience and therefore a superior resume, and may even find yourself as the interviewer when they apply for a job.
This is basically what I did, and I was able to retire at 39 as a millionaire without ever having taken a single computer class in my entire life. Not one. Ever.
Had I taken the well-worn route of getting a paper degree and going to work for the government or some defense contractor, I'd still be an employee (though likely in top management) with little hope of retirement in sight, and it would have been far less likely to achieve millionaire status so young.
A degree is only useful to the extent that it says something about you. It's true a degree will open some doors especially in the short term, but there are other ways to open them, and an impressive work experience & a legendary reputation will open far more doors than any piece of paper ever can.
Can't a person have both a degree and experience? Sure! But as a practical matter you can only effectively work on one at a time. Once you have work experience, your degree will become increasingly irrelevant.
Or perhaps is it due to all that very impressive marketing of the educational system? Do you feel a need to get some paper degree to validate yourself? If so, then this marketing has been successful, and you're basically just deferring your REAL education - which will only begin when you start working.
There was a time when people went to university (college as you Americans call it) to become educated. When did it turn into a vocational/job training school for people with more money and better marks?
Seriously, I have no doubt that the CS degree I'm earning will expand my mind and prepare me for life either as an academic or an industry person. There are a section of people at school who always complain that we aren't learning the latest and greatest technologies, to which I respond "go to DeVry if that's what you're looking for". There's no shame in wanting job prep, but a university level education will ultimately prove more valuable with less potential for obsolescence.
When life gives you lemons, you CLONE those lemons, and make SUPER-LEMONS. -- Dr. Cinnamon Scudworth, Ph.D
Here's my two bits:
:)
Theory of Computation is one of the best possible topics you can be exposed to as a CS undergraduate, in my opinion. It will help you to understand what computers really are and what they are and are not capable of. This understanding, if and only if you apply it, can change the way you think about interacting with these machines.
Data structures is another super-essential course. Understanding fundamental data structures and algorithms can and probably will change the way you write code-- and will do this because the understanding will change the way that you think about problems.
As to the others, they may or may not be useful to you. What you have to ask yourself is "what kind of programming do I want to do?" (I think the author of that article was also heading down this track.)
The reason is this: Yes, there are indeed a lot (perhaps even the majority) of programming jobs out there that you don't need any sort of understanding of proper computer science to do. That's the truth.
However, start paying attention to who's saying what-- most people who say this don't have degrees. Or, they were able to apply themselves in situations in which a degree did not matter (think about ultra-sucessful college dropouts).
So what you need to be asking yourself, in my opinion, is "am I going to take the knowledge being offered to me and do something with it or not". If you just want a good job, forget about college.
Commit to learning whatever the popular language-du-jour and its tools are, focus on writing business applications, and I can about guarantee you will find steady work if you continually apply yourself.
If you want to really understand something significant about computers and view developing software as a type of craftsmanship, then I absolutely and without hesitation suggest that you entirely forget about worry about whether you can use computer science knowledge to make money or not: Because you will learn things that you absolutely in the long run increase your understanding of all aspects of computing.
Pay attention to the really good programmers you know. Entirely regardless of whether or not they went to a university to learn it, they have a good understanding of data structures, don't they? They probably have at minimum a strong intuition of autonoma theory as well, I'll bet.
Don't forget about the other numerous benefits of a good college education. Forget about your CS classes, how about all those other things you get the chance to be exposed to? Even the ones that you will hate have value.
Ultimately, however this "value" is completely something which you must make yourself. I know several 'A' CS students who can't write code worth a damn. I know a number of people who went through college and felt that everything that wasn't in their major was a complete waste of their time.
And I know others who mined that opportunity for all it was worth and made something of it.
It's your life. Have fun!
What you would recommend then? Does SE or CIS somehow make you 'jump' up to the 'middle rung'? Are they really valued so much more than the apparently lowly CS majors who study what's actually happening and can hopefully apply that to any programming task, even those problems best-suited for a SE or CIS student? Or are you implying that programmers are no longer needed in the US; that the entry point to the field has been cut off? That seems bogus to me. I do not understand the implication of your post and would appreciate clarification.
antarctician is correct - dont confuse the different types of disiplines.
... model-checking, theorem-proving, AI & ML.
each is important, but each is different (yes, of course there is some overlap).
at the risk of over-simplification: scientists discover new laws; engineers apply them; technologists help both do their job.
so if you are not interested in knowledge for its own sake, then yes you should quit CS and switch over to a vocational track. there is a great sense of achievement and satisfaction in solving practical problems that make an immediate impact upon people's lives (bridges, damns, roads etc - these are not trivial things).
but if you want to actually want to understand the way the universe works - which includes man and machines - then you should not even blink for one momment at studying theoretical subjects.
most people are not suited by talent or temperment to be scholars of any kind (in the sciences or otherwise); they enroll in science (instead of engineering or MIS) for the same reason that many enroll in university instead of community college - because it is a status symbol. They really have no business being there. The entreprise of inquiry is not their passion. they should be at a good polytechnic school instead (where this idea is taken seriously elsewhere in the world, it produces amazing results).
So dont fret about it for a minute.
In fact, the one aspect that is really missing from your cousrework is lots of courses on logic, the most basic subject any educated person must study (whether in the arts or science) - you will need this in order to appoach all the important issues in computer science
If you want to start looking at cool stuff for your AI classes, then check out the debate in knowledge represenation as between those who believe in low-order representations like Genetic Programming vs mid-order representations like Bayesian networks versus high-order representations in second order monoadic logics used to model agent languages like BDI (belief desire intentions).
If the big stuff (like AI) intrigues you, then you will relish university for the chance to think clearly & deeply about the way man constructs (himself and) the world - especially through his machines. One of the key issues you will come to terms with is the nature of representation in general; the issue of of REFLECTION will become an important subject for you as you try to understand everything from why meta-classes are crucial to how Godel's incompleteness theorem. Any system that can (not) describe itself in its own terms is (not) a powerful way of constructing the world. So you will truly have a momment of clarity when you learn learn how the meta-circular interpreter wroks in LISP; and the joy you will experience reading Sussman's classic textbook (MIT) will awaken your mind to the whole subject of language & thought are related.
most of all - have fun! dont be afraid to be wrong or stupid.
next to love, the carrer of the mind is the most important journey you will ever take in your life.
cheers: dlf
ps: sorry for typos - in a huge hurry.
This has been the biggest question I have faced in my life. Is a university Degree really worth the money? I mean what do you get out of it? Is it going to help me in the real world? Well i have some partial answers that you might agree or disagree with. I think ill start out with non-educated people vs educated people. Now, If your a CS Student or CE student, and you walk into a job interview with ONLY your CS/CE Degree, the chances of you getting that job are 0. Now if you were a non-educated programmer, who walks into the job with a portfolio with 6-7 projects in it...Yea your going to get the job. Limitations of the walk-in, with projects is that he/she is going to lack the theoretical background to understand the "big" picture. I always liked to think the educated people are Big Picture thinkers. They have the ability to understand and relate to where everything fits in. The Educated person has the upper hand in the long-run, as they will be able to adapt to new changes in the CS environment. Not to say the un-educated person will not. Basically it comes down to 1 thing in the real world. EXPERIENCE If you come out of a degree program with 0 experience, nothing in your portfolio...hell ya you are going to have a difficult time getting a job. So for all of you reading this taht are currently sitting on your butt, and do not have side-projects, i highly suggest that you get off your butt and find some work. Webpages, basic databases...anything like that. You would be suprised how local businesses, actually run their business. There are a lot of good opportunities for students to come into a business setting and pitch better ideas for data-organization. I have worked with several companies re-organizing different aspects of their business for a reasonable price :)
This type of work is invaluable, especially when it comes to getting your first job out of university.
So does the degree reallllllllly help you get a job? No.
Unless you have experience using your degree-IE Portofilio...Then you are most likely not going to score your dream job.
However the degree does give you all of the knowledge to understand and design code with more structure.
For example, most of you will take 2-3 courses in data structures...Binary Trees, Heaps, Queues, Stacks...stuff like that...
You are also taught when to use those structures.
However an uneducated person most likely will not have formal training in datastructures...so that they might find other ways of doing things in a more complex way that takes longer time.
I am only in 2nd year, but i can still tell successful CS students from non-successful ones. Most of you can probably relate. Educated people ask different types of questions than un-educated.
This is the difference...The CS or CE Degree that your doing now, is providing you another level of knowledge. This is why you are doing your degree, because you are not satisfied with the teacher just telling how it is, you seek true and full understanding of the whatever concept. By knowing everything there is to know about something...if another technology comes out based upon that concept then it is easy to understand.
The CS/CE Degree is all about the future...By having this degree it is ensuring that you will be apart of the computer community for a long time to come as the basics of computing have not changed alot.
its still only 10's,
just as the good saying goes...
There are only 10 types of people in this world. Ones that understand that and ones that dont ;)
Glenn Eggleton
-2nd Year Comp Sci Student -Currently has learned nothing -Is School a Waste? - Na Theres lots of chicks!
You sir win my award for butchering the spelling of "a lot" the most.
Dan Z writes: "I look at the list of modules they've studied, and although they sound very interesting, there seems to be little relevance to the current jobs market: neural networks, computer vision, artificial intelligence, robotics, compiler engineering, machine learning, quantum computing, Bayesian networks, embedded systems..."
Let's see - pieces which have been used to develop molecular modeling software:
neural nets: used for non-linear model building/property prediction. computer vision: used for protein/ligand docking codes. artificial intelligence: not so much, although things like machine learning (supervised and unsupervised) are of interest. robotics: not in modeling, but combinatorial chemistry's all robot-driven, and many companies have built their own. compiler engineering: err, no, got me on that one. machine learning: see above - model building's a huge field for us. quantum computing: way too blue sky. Bayesian networks: assuming this it learning-related, back to model building. embedded systems: not so much.
Oh, and having 1-2 semesters of chemistry is a huge win - it's way easier to work with developers with some domain knowledge, especially those with more than the minimum. Even better if they can read the literature! Oh, and we work on at least Linux and Windows, so make sure you're up on platform-independent methods. Math skills are a big win, too.
Remember, if you're "just a developer" you've got to differentiate yourself from the crowd - otherwise, I'll get somebody else or do it myself.
But I had the background to learn it on my own, because I learned how to learn
It always makes me very sad when people think they need to go to college to "learn how to learn." I know plenty of people who could beat any CS grad in practically any coding challenge that you could think of, who yet haven't even set foot in a college. They'd code circles around people like you, who seemingly have to go to college to be able to understand XML from a book.
things like "learning XML" can be done from a book if you know the relivent background about languages and such schemas.
You know what? You can learn it without the "relivent [sic.] background" too, whatever that is. XML is a piece of cake to anyone who's moderately intelligent and has some programming experience.
"We didn't learn Word, we learned Word Perfect." So? If you had the theoretical background you could figure it out, find the relivant connections between the two.
HAHAHA! Thanks for that little tidbit. You were able to figure out word because of your "theoretical background"? Give me a fucking break!
Look, a college degree in CS is fun, and it is useful. But take a moment and reflect on the kind of platitudes that you're spewing out and to what extent they actually reflect reality. You're just as brainwashed as people like Dan Zambonini, except in the opposite direction.
Computer science is not a vocational course to make you a good programmer. Computer science is the study of computing machinery. Therefore a lot of effort is placed in learning formal proofs, finite automata, turing machines, etc, which define what is possible with computing machines. A computer science degree should help you become an expert on the fundamentals of computing machines capabilities and uses, not make you a better web developer.
Vote for Pedro
Do yourself a favor, and stick to the theoretical subjects. Your university years are about getting an education, not about getting a job. And yes, you will still get a darn fine job with a proper education. I did a perfectly useless CS PhD, and got a perfectly nice job in industry nonetheless. My friends who took the "vocational route" back in univeristy are on average certainly not doing better, not financially, and not in terms of having an exciting job.
"You STILL haven't stopped "signing" every paragraph of whatever you post with your initials." - by StarKruzr (74642) on Sunday September 11, @12:42PM
Hahahaha...
Now, look @ that score of yours, vs. APK's of +3 and then tell us who was worth listening to here in these replies: himself, or yourself.
It seems the moderators here scored him +3 for interesting & informative.
What did you get scored?
My God. (Score:-1, Flamebait) - by StarKruzr (74642) on Sunday September 11, @12:42PM
Big difference there and so much for your opinion of:
"No one listen to this guy. He spent several months on Ars Technica trying to convince everyone he was some kind of super programmer, but it fell apart pretty fast when it became clear that he actually didn't know his ass from his elbow." - by StarKruzr (74642) on Sunday September 11, @12:42PM
He literally kicked the shit out of every arstechnican @ your forums consistently and at other forums where you followed him around as you did here, & on technical issues in this field, each AND every time you tried him.
No wonder you deranged lunatics follow him around and try to pester him, you're all still hurting from the beatings you took from him. You just do not bat in the same league.
The most hilarious part is that in the end, as your score there notes (and contributes nothing to this topic here no less), you only have yourselves to blame, and end up having to realize how stupid you look doing it and yourselves in each time.
Just like your score above (lol, below zero) indicates.
To help get a job, suck it up your Jr year of college and get an internship (hopefully paid, but I took an unpaid one) it led to a job with that same corporation and other job offers... experience matters but you need to the coursework so emplyers will know you have been exposed to the basic concepts and theory...
Uh, well, not any language.
Here's a counterexample: Intercal
Use 'slashdot stuff' in the subject line in any email you send me if you want to get past the spam filter.
First, college isn't trade school. As long as you excell at what you do the money/employment thing will take care of itself. Don't forget the degree you're interested in is called computer SCIENCE not "easliy exported to India low level apllication developer." If you are not a high end guy with the science part you're in jeopardy of having your position shipped to a low wage country. Stay focused -- you'll do great.
Lets look at who is Dan Zambonini. His background is a masters in
astrophysics, not computer science, nor software engineering, nor computer
engineering. He is a member of a garage-company of about 20 people who do
grunt-level web programming.
Is this the guy you want to listen to?
I would bet that 90% of the posters on Slashdot are more knowledgable in
computers than Dan.
I think you need to ask yourself, "Do you know what you want to do in 5
years, 10 years?"
If you aren't sure (which is my guess), the smartest approach is to take
the CS bachelors courses and also to get summer jobs at high-profile
computer company like Sun, IBM, Microsoft, Google, etc.
Then you will have the option to do anything.
Right now, here in Colorado, I do not know of any CSers that are unemployed (that may be changing soon). Within the /. arena, there probably are some. But the level of unemployment for CSers is much lower than the level of unemployment for CISers.
In addition, when jobs thin, almost all of the jobs will require a CS, CE, or EE degree. They will not admit a CIS due to the technical nature of what is probably going to be the last bastion of jobs here. Many of the jobs that are going to India are business programming.
I prefer the "u" in honour as it seems to be missing these days.
You see, when people tell you that the skills you learn in a CS program will be out of date in five years, they're absolutely right. So what do you do? You don't go to school for skills. You go to school to learn how to learn. You go to learn the science that undergirds computer science, which is independent of any particular technology, programming language, computer, what-have-you.
Theory of Computation was my favorite course as an undergrad -- and it was again when I took it as a grad student. Now, a lot of what you learn in the beginning of that course -- regular languages, context-free languages -- is really practical in a real job, particularly if you ever implement an interpreter or compiler. (If you don't think that happens, I have an uncle who developed a special purpose language specifically for energy futures traders.)
But the stuff you learn later in that course -- computability, complexity, and all that good stuff -- it may not be as practical, but it's sure a hell of a lot of fun, and it becomes practical because it influences the way you see a computer or program. It enhances your theoretical understanding of what a computer can and can't do. You tend to waste a lot less time trying to develop an (efficient) algorithm to solve an unsolvable problem.
Here's the way I see a university education in CS: if you wanted to be an auto mechanic, you'd go to a trade school for a couple of years to learn the skills you'll need. If you want to become an automotive engineer, you go to a university for an engineering degree: it requires a different kind of understanding to be an engineer than a mechanic. The same is true of CS. If you want to be a "programmer", go to a community college and get your MCSE. If you want to be a professional computer scientist, you go to a university and get a CS degree. It's all a matter of what you want to do.
That said, a university is certainly not the right place for everyone. There's nothing wrong with going to a community college. But you have to understand the benefits and costs of doing one instead of the other.
If it's not one thing it's your mother.
This is why I am studying "Software Engineering", not "Computer Science".
n year.asp?plan_id=172&coop_type_id=2
Dispite already having 3+ years professional software development, I am a student at Drexel University. Computer Science, which was my original major, is the traditional university scientific approach, but Software Engineering focuses on more real world application development stuff.
You can find the software engineering recommended plan of study at Drexel here:
http://www.drexel.edu/provost/catalog/dynamic/pla
More universities should make this distinction.
http://brandonbloom.name
Hi there, if anybody hiring suggests to you that a vocational school is just enough, then ask them what their education is? Chances are, they are academically trained. After all 40% of top-tier managers in public companies have a PhD and much more have academic training. Why would that be? In the odd case you find a boss, that has only vocational school, you should ask yourself, how does he/she know the difference? I'm not here to say people that proclaim these things are dummy's. No, they are simply out for their own interests and not for yours. It is cheaper to have any new hire learn the programming languages and procedures on their own time (= money). However, it is in your interest to get an education as good as it gets. First, if you know how a programming language is translated into executable commands (compiler building), you'll understand a programming language that is new to you much faster (as mentioned before). If you have implemented some device driver in your OS class, then you'll understand what security levels are and what memory management is and why you need to use resource-locks and mutex and can translate it into your algorithms. If you have studied databases (not just used MySQL in a web application - no pun intended), then you'll understand the difference between queries that work and queries that perform as well as transactional dead-locks and how to avoid them (hopefully). An academic training does not only pursue particular skills. More importantly, it does train you in the basics of a field. A good academic institution does challenge your intellectual ability up to a certain point (batchler, masters, PhD exist for a reason). I personally profited more from being forced to proof a mathematical theorem, than from learning any of the 20 odd programming languages in my master of CS. It taught me to understand concepts, rather than only procedures. It gave me the ability to challenge my own thinking and to learn new paradigms, because I know that what appears to be truth is merely a/my model of things. Yes, it is true an academic training does not prepare you for a job. There is much more then skills to a job. You need to learn to follow instructions, social skills and effective communication. You also need to learn dress codes and company procedures. You need to learn to accept impossible dead lines and budgetary constraints and office politics. You will learn sooner or later, that your boss gets the promotion for your brilliant idea, while you are stuck with a non compete agreement and no part in the royalties the company gets for your patented inventions. You better learn how to read and negotiate contracts and to take advantage of company benefits and how to save some money for your future. You also need to learn how to balance work with personal life. That all is not taucht in universities nor is it in vocational schools. However, if you study long enough, you might just learn these things later in life, when it is harder to do so. The bottom line is if you want to study not just for the next job, but for life, you'll better go for an academic education, assuming you like the studies and can master them. If you ever want to get out of the entry level programmer job, you better have learned more than the OS/language/database/library/paradigm/pattern-set of the last five years. If you don't believe me, ask yourself, which school teaches you the language that is in demand in three years (after you finished the program you are about to start)? If you want to maximize your job skills, take internships, where you can get familiar with the social world of the work place and try to make as many different internships as possible (small company vs. large corporation, robotics vs. business programming, start-up vs public institution, ...). It allows you to get a sense of what you would like to do after the diploma is on your wall.
Good luck!
Busy helping non technical users of OpenOffice.org - http://plan-b-for-openoffice.org/
I think he is right. The data structures is the most important. If you cannot explain what object oriented programming is or build a small application during an interview on scratch you pretty much shoot yourself in the foot.
I work in a group where my job goes from troubleshooting hardware and reading assembly for a PIC to writing front end software on the same project. Then I find myself writing ASP code for another project. In college I never specialized in any particular field e.g. embedded systems. I tried to broaden my skills by understanding the basics of programming and language design. Backed by many software engineering classes. Building software really is not about being a code monkey and pounding out 5000 lines of code in a day. It is about understanding what the customer wants. Even if you work in a company where you do not interface with a customer one on one, your manager, your team members, the people who give you the specification act as your customer. You should understand how to communicate efficiently with them. Communication is key.
Now, you ask if these classes are going to affect you for an interview or later in your career. I say I think you would be doing yourself a great diservice if you did not take something like embedded systems or machine vision. These classes usually have a project that consumes a large percentage of your grade. As an employer I am going to be looking for a project you did at school with other team members. That gives me two major pieces of information. It tells me that you can face a technical problem and solve it. And it tells me that you can work in a group. When it comes down to it, that is all I really care about. Are you going to do something, and are you going to be a pain in the rear end to work with if I hire you.
If you are interested in software engineering, a degree in electrical engineering is a great option. Electrical engineering might seem very different from computer science, but it requires a very similar set of logical skills. I have worked with many software engineers who had degrees in electrical engineering.
In addition, once you have an electrical engineering degree, you have many options available. You can go into software engineering, embedded systems, IT, digital design, or traditional electrical engineering.
An electrical engineering degree, in my experience, will give you more job options than a computer science degree.
Our university teaches software engineering. The professor who teaches most of the software engineering courses is an idiot. For my project, my group and I wrote a pretty kick-ass app with some pretty kick-ass code. How? We snuck in some agile methodology, which just seemed perfect given the size of the group and the size of the project. Even though our project was the best in the class, we got a C because the specifications weren't complete, and she wasn't convinced that our automated tests would really test the code. (The other groups who got A's for testing wrote some very non-specific paragraphs about how they might test their code. None of them actually did any testing)
What this proves to me is that software engineering is easily the most useless discipline in computer science. I have never had a good experience with it. I've never known anyone who said that software engineering really makes things run smoothly. It's a business-centered/management-centered unrealistic approach to software development. It may make your boss feel all warm and fuzzy, but it won't get the software out the door on time, nor will the developers have any degree of confidence in it.
If it's not one thing it's your mother.
I've spent the last 10+ years building teams of people who understand the basics and the fundamentals enough that they can learn any technology in a few days.
And dismissing all those people who may know the latest technology but don't understand it, or know how it compares to what went before (or what will come after).
I get hundreds of CV's from people like Dan, and they all go in the bin - they know something today, but in 12 months they'll be behind the curve without the ability to even know where they are, never mind the self-knowledge to know where to go next.
So ask yourself, do you want just one job, or a career ?
I spent a lot of money on booze, birds and fast cars. The rest I just squandered. - George Best
...are computer science. You signed up for a Computer Science program, not at "become a programmer" program.
If you wanted to go to a trade school, you should have.
Consider yourself lucky. The rigor of that kind of study is going to suit you well after you leave school. I've been programming for money for the past six years now and am elated to find an occasional new hire with a classic CS background. The crap where a school teaches you a programming language, or teaches you about database modelling or network topologies, that shit is the low-grade thinking.
I agree with this as well. But to keep from sounding like an AOL user, I'll make a suggestion. If you're in a formal CS program and are worried about getting a job school is over, keep up your school work and find a project that will show people that you have the ability to manage and organize lots of information, complexity, or people. Work your ass off on that, and put it proudly on your resume when you're done.
After all, I am strangely colored.
On the other hand, I wouldn't be able to do my current job without Linear Algebra, and there are many days I wish I'd have paid more attention in all my math classes.
;-)
As someone who teaches Linear Algebra, I'm very curious -- what kind of job do you have? (I figure it may be another motivator for my students.) And don't say you are a Linear Algebra teacher.
It's all about knowing what to look for, and that comes with education and age.
And online documentation at our fingertips makes up for our failing short-term memories, enhancing the advantage we get from education and experience. It pays even more to see the big picture when you don't have to memorize arbitrary details...
Obviously you have been paged out for a while now ..
Does not mater whether your courses are vocational or college level, there are no CS jobs anyway.
Sorry.
But today, each one comes with an API of several thousand buggy functions you have to learn.
;-)
If it weren't for those bugs, we would be so productive there might not be enough work to go around
database software engineering bioinformatics network security Having just concluded a job search, these are topics that appeared in most of the postings I saw. Look through job openings at cra.org and see what is hot/desirable.
word.
Who said that each and every course that you have to take at the universities must be relevant to a particular type of job?
This is the right idea, it reminds me of something from Donald Knuth's website, when he is asked, "Why does Knuth replace MIX by another machine instead of just sticking to a high-level programming language? Hardly anybody uses assemblers these days?" anyone interested should read what he has to say under the heading "Why have a machine language?" at http://www-cs-faculty.stanford.edu/~knuth/mmix.htm l
The short version is programming languages come and go, right now Java is probably the en vogue language before that C++, before that C, and so on. The point is not to become dependant on any one language and learn the (as Knuth puts it) "timeless truths." Dont learn how to implement a concept, understand it, and once you gain that understanding you should be able to implement in any language that need be.
I can only assume your experience with academic coding is fairly limited, then---any serious programming projects in academia are generally ugly, containing large parts that are hacked desperately together in the last few nights before the deadline.
Questions of maintainability, dependability, and even bugginess are often not merely secondary, but entirely ignored---getting it done now is often the over-riding concern. If anything, I would expect academic coders (at least those with research experience) to have to be trained out of this "make it work" approach.
> I'm still no coding grand-master and probably wont be for another
> ten years. When somebody says that they can learn a language in an
> afternoon it doesn't make me think they're lying, it just makes it
> blatantly obvious how ignorant they are of intricacies of writing code.
Most code ain't all that intricate.
A sharp kid with a CS degree couldn't learn all the clever details of C# in a week, but he could certainly learn enough of it to write functional, workman-like programs. He won't be a "coding grand-master", but, frankly, most coding projects don't require one. He won't be able to exploit all the features of the language, but he should be able to write mostly-language-independent parts of the intended functionality, and gradually move into more and more areas where the language has specific tools or constructs that should or must be used.
Really, most imperative languages (C/Pascal/Fortran/Java/Perl/...) are pretty much the same, with a little bit of syntactic difference, at least in my programming-for-money experience with them - the only trouble I had moving from one to the other was learning the syntax. The algorithms are all basically the same, and all that's required is to figure out how to express that algorithm in the given language.
> I think that having a CS degree is no real advantage over
> having a physics, chemistry or maths degree.
I can't help but wonder if that kind of attitude lumbered MapQuest with an O(n^3) algorithm early in their development, when an O(nlgn) algorithm is easy, and an O(n) algorithm is possible. (Yes, my officemate worked there; his was the nlgn version.)
It's certainly true that "computer science" and "software engineering" aren't the same thing, and much of the former is very rarely useful to someone with a job doing the latter.
It's also true that a great deal of programming isn't all that complicated, and the vast pool of theory of computer science is pretty much irrelevant.
It's again true that most programmers don't really need to be computer scientists---expressing pre-designed algorithms and requirements in C# requires mostly skill in C#, not computational theory.
It's not true, though, that a CS degree is no more useful for programmers than any other degree. Admittedly, if you just want a programming job, a CS degree is really kinda overkill in many cases---anyone who knows how to program and has proved they can work (i.e., a degree or experience) would probably be sufficient. Design, architecting, and tricky algorithms, though---physics and math don't touch those at all, and somebody in the company needs to be able to do them.
If you want that person to be you, then maybe you want a CS degree.
He's a Linear Algebra student.
Shin: a device for finding furniture in the dark.
curriculum leaves everything to be desired.
IOW I think that what this boils down to is that Mr. Zambonini wants technicians, but he want to avoid the associated unions, etc. Why? The types of courses are exactly what I would expect a technician level employee to have taken. For example, XML does not by any stretch of the imagination really require its own course if the student has a modicum of intelligence, the same goes for various languages etc. On the other hand I suspect that technicians wouldn't be quite as bright, (otherwise they'd be in a University and not a trade school) and require the structured environment to assist them in picking up new material, etc.
His commentary is merely an attempt to trivialize yet another scientific discipline, making it little more than a business+ curriculum, or slighlty above underwater basket weaving...
I went to school at PodunkU, but it had a very good theoretical CS program. When I found myself in around the MIT and Stanford grads, I didn't have any real problem keeping up with them on the theoretical side of computing. Throw in a healthy Midwest work ethic, and I had a real advantage.
The guys who suffered the most were those who were self-taught. They didn't understand simple concepts like bit manipulation or queue theory. Now while I'll admit that I don't often think about Dijkstra's algorithm, I have had a practical application of it recently. So I don't want to pick on anyone who doesn't have a CS degree because I've seen some really good work, but I do tend to see a difference in those with a CS background and those without.
If you don't want crime to pay, let the government run it.
I tend to think that an university education should stress scientific topics over vocational ones...
(emphasis mine)
They could probably stand to add some grammar topics as well
There was nothing in your course lists, that would suggest finding a job is going to be a problem.
I think it is going to be a problem, in fact a much larger and more difficult problem than what you will face in your 4 year degree program.
I would also like to point out, that do to the technology and nature of this industry, millions of extremely qualified graduates in India, China are going to be competing for your job as well.
Don't forget, as well. That unless you are going to a little community college, the bank is going to want its money fairly soon out of college.
Right now, it takes about 2-3 YEARS for college grads to find jobs when they graduate from tech fields such as CS in the USA, worst case.
I wouldn't want to be a 20-25 year old and certainly not anyone over 40 in that field looking for a job in the next 10 years thats for sure.
-Hack
Got Geometrodynamics? Awe, too hard to figure out? Too bad.
As I imply, I've done Prolog and ML. Sure, they took longer than two days to learn well, but they're not that difficult either. I'm certainly not fluent with functional idioms, but I know enough about the concepts to pick up the rest of it if I ever have to.
LOAD "SIG",8,1
Generally agreed, but once you have your BSCS (i.e. already have the theoretical underpinning), and are a working professional in the industry, going for an MS in CIS, or, even better, SE, over an MSCS might be better. I've looked at the local universities' CS grad programs, and being 12 years out of school, I'd have to go back and re-learn a lot of the theory stuff, like the mathematics behind SQL, which just isn't relevant to me (never really was, actually). I wish there was a good MSSE program near me, maybe something like this (no language courses in there).
Attention zealots and haters: 00100 00100
Is it just me, or is Slashdot trying to fill it's monthly "My computer science degree is useless" quota with this one.
I left the engineering program at my school because I realized the only reason I started in it was because I had convinced myself it was the only way to get a good job. Now that I'm in the CS program, I'm confident knowing that I came to college to get an education, not to learn a trade.
Stick with what you enjoy.
By 'Computer Information Systems', do you mean 'Management Information Systems'? My university's business school refers to it's MIS program as CIS.
Absolutely. In addition, there are many "CS" programs that are actually CIS/MIS. The right answer is, if they focus on the local business need (which is for small business, how to program), then it is probably teaching C, C#, COBOL, RPG, .neyt, etc. If it is a proper CS program, then it is a one language program that typically will teach A language course, Data Structures, and discrete mathmetics in the first or 2'nd year (normally first). It will then focus, on theorey, with you the student providing loads and loads of programs weekly as labs. BTW, if they do not teach Discrete mathmatics, it is almost certainly a CIS program. Discrete is the entire core of CS.
I prefer the "u" in honour as it seems to be missing these days.
If you're interested, this is an industry-based (albeit, mainframe oriented) degree that I'm studying in Australia as part of an industry-sponsored mainframe traineeship. I think you need to be careful not to do a pure computer science degree. Soft skills are now more valued than technical skills, at least to begin with, because technical skills can be picked up on the job, whereas soft skills, such as good documentation, management, and leadership skills, take longer to learn and are important from the beginning. In short, make sure your degree is well balanced.
Computer Science != Software Engineering just like Physics != Mechanical Engineering.
If you want to work as a computer scientist - which many places do, but usually with a small cadre of employees and usually heavily stacked toward Ph.D. then you're fine - provided you get the M.S. or Ph.D.
If you want to direct a software project, then you're in the wrong major and should seek out one of the unfortunate few Software Engineering programs around the country. Keep in mind that you will be expected to work with people a lot of the time.
If you want to slug through code, that's increasingly becoming the work of the coder, the software equivalent of a tradesman and either DeVry or relocating to Manipal is sufficient.
no shit that's why i dropped out years ago !
You forgot to sign this post.
lol, below zero!
Also, I love your username.
+++ATH0
I just searched-from-top-of-page, and you're the only other instance of "TEAM" - everyone else must be living under a rock ! Ditto the internship advice - my worldview changed radically due to each of my two internship experiences, the incestuousness of the "teacher's college" academic paradigm so easily gets out of touch with reality.
Harvard is not a tech/trade school. Their graduates don't seem to have any problems finding jobs in the real world.
There is a definite trend where employers are looking to hire people with a broader educational background. They may not start the job with all the necessary skills, but will definitely be able to learn those skills rapidly, and adapt to whatever is thrown at them.
Alas, I do not attend harvard, but am currently attending a similarly-minded public institution, and can already see how this applies. Rather than being enrolled in exclusively compsci/physics/engineering courses, I'm taking a smattering of courses this semester, each from a different department. Although I have no intent to become a psychologist, I can easily see how what I'm learning in the class would apply to UI design. The english course I'm taking certainly isn't going to help me write better code, but will certainly help me document that code.
I believe that all but one or two of our CS courses are predominately theory-based. Although useful, learning the language itself is peripheral to the overall theory.
-- If you try to fail and succeed, which have you done? - Uli's moose
Most people think that you can just be sat down in front of a computer and taught to "program". What is the essence of programming? Is it the language? No. Is it the operating system? No.
It's the *CONCEPTS*! Computer Science teaches the concepts behind the programming and why you should do certain things. It teaches you to discern for yourself how complex systems act. People who have certificates have reduces this profession to something most people think of as a "vocation" which is a crying shame.
A vocation is something that people learn to do without much understanding of the science or technical justifications behind what they are doing? Do you think a mechanic knows the physics of how a car works down to the smallest level? No, he only knows that which he needs to get the job in front of him done. And guess what, when he needs to learn about a new car he has to go back to school to learn about it.
Computer Science gives you the tools you need to get the job done AND it provides you with the knowledge you will need in the future to adapt because you have a deep undestanding of how things work, instead of simple rote memorization.
Understanding the concepts is what give Computer Science and, indeed, any science or engineering discipline it's power over a simple "vocation."
Don't listen to the guy who wrote the article (I already forgot his name) he sounds like he doesn't know what he's talking about.
Later, GJC
Gregory Casamento
## Chief Maintainer for GNUstep
I wrote a Go Fish program in LISP. I actually love LISP. I am a double major, CSC and MTH and LISP fits right in who how I think mathematically.
I picked up LISP quite easily.
I am the Alpha and the Omega-3
Perhaps the best thing for me to do is drop my current course load and switch to computer engineering. Fortunately, I'm at a point now where I can go either way with a minimal loss of credits and money.
I worry a bit that you're conflating the academic background associated with CS departments with a piece of paper that certifies one has done time near a CS department and paid the appropriate tuition. (I paid the requisite tuition but did my time one door to the left and so have a degree in math)
I agree that the academic side of CS is at least interesting, even if I find precious little application in my day job. However, I'm not sure how important the undergraduate CS curriculum is as an introduction to the area of study - in CS, there are today so many cutting-edge academic papers available freely online, and so many wonderfully readable introductions, not to mention newsgroups, discussion boards, wikis, etc. that any motivated student needs only a web browser and time.
An unmotivated student isn't going to learn the theory if you sit over them with a whip and a chair, or is going to have forgotten all their academic CS work within 3 years of graduation.
I suppose that there is a middle category of partially motivated students for whom a CS degree program will make some difference, but I wonder how big that category really is - I tend to figure that after a few years away from college, these students will have migrated into either the group that continues to learn, seek out, and read about CS theory or the group that ignores it. There might be a difference after two or three years in the workforce between someone who went through a CS degree program and someone who didn't, but after 5, 10, or more years your major won't mean squat. What will matter is whether during that time you have tried to become a better programmer, and whether you have continued to learn, study, or think about CS since you left school.
Actually, I was not intending to say that. But I guess I sort of did.
I was meaning to say that learning the theory of languages makes picking up a language very easy.
hmm, yes that definitely sounds better than what I said at first.
I am the Alpha and the Omega-3
Uh, huh. So all those people who went to ITT for an EE, and learned about math, and physics (both regular and Solid State) are inferior how? Did the rules of math change in the intervening years? Is the ITT math inferior to the university math? How about solid state physics? Are the university "holes and electrons" superior to the ITT "holes and electrons"? How about ME? The ITT "hydraulic rules" inferior to the University "hydraulic rules"? And let's hear it for the ITT english. Get with the program and use university english. It's da bomb. Oh and I hear their history is worse than university history. The ITT CEO was the first president of the United States.*
*So basically everyone's exposure to real ITT (or DeVry for that matter) education consist of "I read a brochure once".
Linear algebra is extremely useful in many engineering contexts. Circuit & structural analysis come to mind off the top of my head. While much of this just boils down to Gauss-Jordan elimination, you can sometimes save a lot of time or prove some things by using some of the more complex linear algebra topics.
In my experience, knowing the theory is crucial if you want a good software career. You will still need to focus on becoming a programmer, and the best thing to do for that is to practice on your own.
A few years ago, when XSL came along, and was the latest catch word of the day, I was one of the few people who get actually get things working properly because I had programmed in LISP in college. The other programmers who only had C++/Java experience took about a year of constantly asking me questions to get proficient at doing complicated things with it.
"People like Dan Zambonini are absolutely wrong, things like 'learning XML' can be done from a book if you know the relivent background about languages and such schemas."
Agreed completely. When the original RFC for XML hit the scenes, I downloaded it, and read it my own damn self, and later studied up on what to do with it. Who in the hell wants to waste their tuition on stuff like that?
The technology flavor of the month is the WRONG THING for a university to be teaching. If that's what you want, you can go to a community college, or some tech training school, and save yourself some cash. Theory lasts way the hell longer than specific technologies do. Any university that isn't giving you the fundamentals is wasting your money.
As an employer, I'm often hiring people for positions which require unusual skillsets. Because it's highly unlikely that I'll find anyone who has the full set of skills they need to do the job, I'm always on the lookout for people with strong theory and fundamentals. They will be more likely to be able to figure out the things they don't know than the guy who studied whatever was hip at the time.
Most MIS/CIS programs get a little business management, a little marketing, a little math, and a little bit of classes such as what is a VGA monitor. In addition, they have a class in either cobol or basic (typically == to about 3 weeks of a CS language course). Good examples of this would be that most CSers take 1-2 semseters of engineering based calculus. A CIS takes a business calc. class, which typically introduces the student to derivates and integrals (their class is ~= 2-3 weeks of a engineering based calc) Basically, not much.
Now, as to wether to take CIS, CS or CE, that is your business. I have 2 degrees, one in microbio/genetic engineering and another in CS (both from Colorado State). CS has served me well. But if I had to do it all over again, I would look at a CE degree. It includes the core of both CS and digital EE. That will allow you to work at Intel, but also at a business place. There are times, where I wish that had been available back then. It would be useful right now to me.
Something else to think about. Most CSers can find jobs right now. But in the future, they will be tough. Your best bet is a start-up. A CE degree gives you a good rounded education and will enable you the best shot at. esp, if you already have the core business work done (management, legal, marketing, etc).
Good luck either way. Personally, I do hope that you stick with CE. The world needs more engineering types and fewer middle men.
I prefer the "u" in honour as it seems to be missing these days.
I graduated from UCSB and here are my thoughts... The first 3-4 years you get a broad range of required classes. I had almost no CS experience coming to college so I learned a lot. After (mixed in with) these courses you take 4 CS electives. I choose a networking, 2 database and a security class. There were some logic/theory classes that I though were boring and had no coding invloved but they do help in teaching you how to think a certain way. Even the classes I hated, looking back I can see how they help. I do think there are other things that could be cut back on. Do we really need 5 quarters of calculus, 2 of statistics, and 3 of physics (3 quarters = 2 semesters)? Sure for some it helps, but not most. Making some of that optional and allowing us to take more electives would be better I think. Plus as far as I know, there is no scripting languages (Perl, PHP, etc)or XML classes offered. I graduated and managed to get a job doing web programming. I had learned Perl before hand on my own and done some perl/mysql websites. For the job I picked up PHP, XML and more perl/mysql. Honestly if you know any language picking up new ones is infinitely easier and perl/php and easy to learn. Some classes would have been nice though. -Jesse
First post! (just in case I am...)
I mostly agree. Just a couple of points. First, I've found that math majors make fine developers. Second, there are many programs now that call themselves "CS" that are really just overpriced vocational training in fad-du-jour tools.
Well, yeah. I mean my alma mater (MIT) has their CS program online ;-)
There might be a difference after two or three years in the workforce between someone who went through a CS degree program and someone who didn't, but after 5, 10, or more years your major won't mean squat. What will matter is whether during that time...
Even twenty years later, there will be a difference between someone who learned about inductive proof and someone who didn't, even if the one who did never kept up with current research.
My reply may be a dup but I ran out of steam before I got to the end of the 500 or so replies... The way I see it, understanding the theories behind what you do will get you much farther than just knowing a few languages. If you have a good understanding of principles of design/analysis/structure etc (whether it be OOP or relational DBs etc), you can apply it in any appropriate language - and the next person can work with it. If you throw a bunch of code together and play with it till it works, its likely to become a mess that cannot stand one revision, let alone the major changes that come along all the time in both scientific and business applications. AND... you can take a look at the various languages available and decide which one is most appropriate for the methodology you are following (or vice versa - pick a methodology that can be supported by the language(s) you have available.) Theory is NOT "history of" and is definitely beneficial. But, you have to figure out which theories are most beneficial to learn. Coders are a dime a dozen. If you want a career, you want enough solid education behind you for a sound foundation, regardless of where you get it. Once you have this, you can build on it out in the industry, and you can learn to apply any language. JMHO Good luck to ya!!
In today's market where everyone uses IM speak - a four year degree from a traditional university is an enormous asset. All those term papers and endless hammering on language fundamentals will help separate you from the herd.
---- "Logoff! That cookie shit makes me nervous!" - A. Soprano
While a "university" education can be very useful, think about the people like myself, who learn better and faster by reading materials and trying it themselves, than learning from an instructor who has to stop to make sure everyone understands.
I tried the whole higher edication thing, and found myseld bored out of my mind. I do, however, read many technical books and reatain the information. I am a fast reader and learner, but I felt held back by the pace of structured classes. I am not saying I am a genius, but that I learn differently than some people.
I have been declined jobs for not having a degree, but I have also landed jobs where the hiring managers said a degree was absolutely required.
for the most part, college is an extension of high school, and you lose at least 4 years of real life experience while you are there. I know because I built my first home long before any of my college graduate friends, and I am doing at least as well as all of them.
it works for some and not for others. Decide how you learn best and head in that direction. If you have the motivation, you can make it with or without a degree.
No, you are in the wrong SCHOOL.
Actually, you are wasting your time, and money. You are basically paying someone to train you for a job in 4 years, that you may or may not have.
If you are really interested in copmuter science, then you need to place yourself in an environment where that will be your focus throughout the day. Not pay someone to tell you what you need to know, which more often than not is what the large contributors to the technology school would like you to know.
Experience in technical matters and solutions will carry far more weight for you in the real world than whatever a PHB might think about what school you attended for 4 years of your life.
Your initial pretense is right though, school should focus more on science than vocation. Perhaps you are in the wrong program if all you want is a job. Hell, why waste any more time or money? Just sign up for a correspondence course for your 'piece of paper'.
Although, if you havent figured out by yet that most schools in the US are nothing more than employee factories, than you might be better off just aiming for a 'job'. Probagbly a job with someone who didnt waste their time and money and just started up a business 4 years ago, and is just waiting for you to graduate for the cheap labor and mind numbing tasks you are about to embark upon.
Enjoy!
I have even worked in developing software that is designed for highly quantive purposes.
I have degrees in math and computer science. Virtually everything that is taught in those theoretical courses is useless.
Comptuter *science* might be a good for actual scientists. People who go on to get a PhD, and work in very high-level R&D for NASA, or something. But for 99% of real world work, it has no value.
Academia is totally out of touch with the real world. Academia stresses theory, real world demands experience with specific products, i.e. Oracle, Java, ClearCase, etc.
I agree entirely. But, when an employer wants to hire a Java programmer; that employer doesn't give a damn about how much Lisp or Prolog you have studied.
In fact, in many cases, the employer prefers that you haven't worked in other languages. Because if you have worked in other languages, then you are not dedicated to Java, and you not a Java specialist.
Sorry, but that is how things work in the real world.
Yes, I'm aware of the applications of linear algebra to circuits and structural analysis. I also do a simplified version of google page-rank using eigenvalues in my class, and adjacency matrices, error-correcting codes, applications to biological models, economic models, traffic flow through networks, and Markov chains. But I'm still curious what kind of job murr has.
College is not a requirement for IT employment- experience is. Drop out- get an entry level IT job and go back if you want an education- while you are working. You'll learn more on the job than you will at school- but, if you want the paper, you'll at least be usefull to someone after graduation.
Having gone through a University to get my BS CS degree, and have over 20 years in the business (yes, I'm an old fart who actually used punched cards and such).
Do not discount the Economics course. Programming is fun, but you should understand some business basics.
As others have said, make sure you get some solid courses:
Operating Systems, where you actually write some code for Linux or a pretend operating system. This will teach you how and why O/S's do what they do - which can give you an edge over a simple code monkey. After all, if you are scanning a 100,000 by 100,000 element array, who cares if you do it row or column major, right???
Data Structures - others have commented on it, and I fully agree.
A Database Course, should be practical Relational Database theory and operation. Back in my day, they wouldn't let you actually screw with databases, but the knowledge was very valuable. Nowdays, anyone should be able to hack a PostgreSQL/MySQL database and do some real useful stuff.
Assembly Language of some type(s). You should know what the system is really doing. This also complements the Operating Systems course.
Some Software Engineering course where you work in a group on a "Project". Projects that are simple games are more fun, and his class helps you learn to work with a team.
My best advise is to get a part-time student job at the Computer Center. I got my best experience in trouble-shooting, doing real system maintenance, learning languages and practical knowledge outside of the classroom. As a side benefit is you sometimes help students solve problems or debug programs that you haven't taken yet - so when you take the course, you have an advantage.
Damn good point. Why get a nearly useless BSCS, when for the same nickle you can get a degree in engineering and be considered a real professional, with pay to match?
I'm a Helpdesk Manager, and I already get treated worse than the janitor. are you black? :(
I'm doing a Bachelor of Software Engineering (graduating this November) at the University of Canberra, and virtually the entire degree has been a joke. The actual coding skills you pick are rudimentary at best -- you spend the majority of your time doing Project Management and Information Systems Management without learning anything significant about the major programming languages. I personally hope to become a games programmer, and I've had to learn virtually all the skills for that profession independently. So in short, my experience at Uni has been pretty crap. Don't know if that's the general trend, but as someone who wants to become a programmer, I've found the majority of it totally useless.
Here's how it worked out for me. While the various and sundry theory classes in CS weren't immediately useful in the first several years of my work, they provided me with a valuable base; this allowed me to outstrip my peers in later years, as I actually had an interest in and retained the fundamental bases of CS, pushing me to the top as they foundered.
Long term planning, fellow. Don't worry, capture this stuff, and move into an environment where it is appreciated.
C//
They should have two CS curricula. One scientfic/theory one for the person that plans the study of CS or OSS and one pragmattic curricula for the joe that just wants a damn job in computers.
The scientific/theory path badly needs some additional courses for it's grads to help them cope. Classes I see needed include:
1. Your parents basement - Getting the most out of it.
2. Sunlight - not all bad.
3. Corporate America - not as evil as you think, remeber kids that's who your parents work for so that's who provided the basement you live in.
Software Engineering is basically the bits of computer science which get applied in the real world, plus the team, software methodology etc aspects you need to actually develop software. To take a hard-line view there's no realy reason for a coputer scientist to be interested in unit testing, because it's not 'science'.
That said, more and more computer science courses are more like (software) engineering than science courses these days anyway.
Obviously, isn't aware that I am finishing up a Bachelor's in Biblical Studies. However, that's still a more useless degree than CS. Unless of course you start a huge church and pass the plate a lot. :)
I finished my computer engineering degree in 2000 and took a programming/engineering job. One year ago, I quit and became a grad student at one of the big four.
..." It was a sad and painful realization that I was nothing more than a digital carpenter.
When asked "so, what can you do?" a year ago, I would answer, "programing C/C++, UNIX/Win32 environments,
When asked in a year, "so, what can you do?" I will answer, "solve hard problems."
I question whether the typical slashdotter knows what a "hard" problem is, I'll tell you it's one that can't be solved by simply (although with great skill and time investment) digging further into documentation and sourcecode. Since the vast majority of programming jobs require no solving of hard problems, I can understand the confusion regarding what a CS degree is for. Perhaps the best way of becoming a programmer has more in common with becoming a plumber than becoming an electrical engineer.
There's nothing wrong with being a programmer, but that's not for me.
char *mySig;
Therefore a lot of effort is placed in learning formal proofs, finite automata, turing machines, etc, which define what is possible with computing machines. A computer science degree should help you become an expert on the fundamentals of computing machines capabilities and uses, not make you a better web developer.
Who would you rather have doing your web development, someone who uses methods that they've theoretically proven to work or someone who just does whatever seemed to work pretty well in the past? Who do you think is going to have a better grasp on how to fix things when they go wrong? This is the difference between a CS major and someone with a more vocationally oriented education.
"I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
Yea, thats kind of my delima. However, there are some great courses in some of the programs I am looking at for a MSCS. I actually "want" to learn this stuff...artificial intelligence, computer vision, etc... IN response to your MSSE quest...I have heard good things about Auburns program .. it is distance.
Here is a link: http://www.auburn.edu/distance_learning/programs/e ng_mcse/
This is one I briefly considered in the past. The two programs I am trying to decide between are Columbia's MSCS program and Boston's MSCIS program...which looks very nice.
Hope that helps!
Thank you...I feel honored a lot! Actually, its one of my commonly mispelled words/phrases. In my haste to reply, and forgetting its slashdot, I neglected to proof and/or pay attention...therefore the error. I can assure you it might not happen again. :)
If you're out to get a job in business then a good db background is very helpful. That's what people are paying for anyway.
I did. Having graduated from collage, I now realized I knew enough going in to do most programming jobs out there. Computer science is a branch of mathimatics. If you just want to program without learning anything, take MIS, and quit cha bitching.
autopr0n is like, down and stuff.
Unfortunatly most computer science students end up coding in software teams, for commercial organisations. But there are other fields, such as research and development that make greater use of CS skills. For exmpale, I did Theory of Computation last semester. Hard subject, but i thought it was great. It gave me a back ground on computers in general, the P vs NP problem etc. But is also went into completeness, analysing problems etc. A very important subject from a computer science point of view, but maybe not from a coders point of view, which is what most CS students end up doing.
Giving IE users a taste of their own medicine since 2005 - http://pods.-is-a-geek.net/
If you're just trying to "get a job" maybe this Dan guy is right, but I wouldn't listen to him.
Who are you? Are you an okay student, bright enough, and want a job as a 'programmer' for a few years? Then just take Dan's courses, but don't be surprised when your job moves off shore or you never move up.
If you're ambitious, smart, and want a well paid career doing interesting work, then take the time now to understand your field deeply and set yourself apart from others. Mastering data structures is relatively easy; find skills that make you unique.
AI, machine learning, and numeric methods are at the heart of my company's work, and the last thing I want is to hire another vanilla programmer.
Well having said this, I could poke holes in it, but we'll leave that to someone else.
You are right. I was a CS major 20+ years ago and I'm sure happy I did not wase my time learnning the "technology of the day needed to get a job" COBOL on punched cards would do me no good today. But I did study the exact same subjects you will "theory of computation, machine leaning and so on. You should be studying the theory of language design and not any one specific programiing language. The theory of operating systems, compiles and databases was not changed from the 1970's when I first studied those things. Yes we did lots of programming but hte profs would not waste lature time explaining how to write a "foor loop" the TAs did that in the lab or we read up on our own. If they start teaching basic programming to CS majors what is next? Classes on how to use MWS Word for English magers? No, programming is something you just have to know before you can study CS.
Given several names in the industry have noted that college degrees are little more than Java certifications these days, I'm pleasantly surprised to see that computer science is still taught instead of being yet another language-specific implementation set of courses. The sad truth is that while there is nothing wrong with Java as a language, per se, most college graduates come out knowing little else than how to program in Java. Many of them that I've spoken to or have worked with didn't get much in the way of data structures, or any other advanced topic because the coursework seems to be focused specifically on programming, not learning the theory behind the programming. Of course, their justification was that they wanted to get a job right out of college. It's sort of sad, because we have a generation of "Java Programmers" who will be lost when the next disruptive language/paradigm occurs because they won't have the background to deal with it.
Thanks for being a professor. I enjoyed my CS degree getting experience and will always appreciate having the degree. I never cared for the jobs I got, but I'm moving on to law school now. I still think that my CS degree was completely worth it.
Do you really need to create your own datastructure?
No, he doesn't. He specifically said he wants the "knowledge to see quickly if the standard Java libraries have this structure already built".
And it's important to have the knowledge of the underlying data structures before choosing them. For example, for a List, should he use an ArrayList, a LinkedList, or a Vector? (Or maybe a LinkedHashMap works better for the problem at hand?)
If you haven't taken a data structures class, or studied the issues in your spare time, you likely couldn't come to a proper decision. Proper decisions involve efficiency (therefore you should understand Big-O notation), and oftentimes threadsafety. If you don't know Big-O notation, the sentence "The add operation runs in amortized constant time, that is, adding n elements requires O(n) time." from the ArrayList JavaDoc would be gibberish. And you wouldn't know that by switching to LinkedList, you would get O(1) time for insertions because the LinkedList JavaDoc doesn't explicitly state that. (It ASSUMES you know the underlying data structure -- and unless you've taken a data structures class, you probably don't.)
Therefore knowing the Java Collections Framework exists and knowing how to use it properly are two completely different things. If you're writing Java apps as a hobby, using ArrayList all the time will work well enough in most situations. But once efficiency and threadsafety enter the picture, understanding data structures at a low level gives you a major leg up.
my blog
I worked a nine-month internship with a software company that writes satellite tracking software. One of the first projects I worked on was to re-work our hard-coded compiler control software--written in C#--to use an XML "script" to control the compiler operations. I'd never touched C# before, and I'd only worked with XML on one other short project.
Employing some techniques I'd learned from a semester of "programming theory"--a course that relied heavily on ML but assumed you'd learn the language yourself as the semester went on--I banged out a functional-style codebase using first-class functions, one function per grammar element in our scripting language. I then hammered out a script that did what our previous hard-coded engine had done and a DTD to validate the script (the DTD was superfluous, but hey, I'd just taught myself everything I needed to know about XML from two websites, so I figured I'd put it to good use). Final verdict: better than the original.
Could I have executed that bit of magic without a Comp. Sci degree? Hard to say. Would a technical curriculum that taught me XML and C# have also suggested to me that using functional-programming style to mirror the data-driven design of the language in the parser itself makes the parser easier to maintain by creating a one-to-one conceptual mapping between adding phrases to the grammar and adding new functions to the parser? I suspect not; I think that seeing such conceptual interrelations is a skill that only comes from experience--or a good science course. At the end of the day, identifying, deriving, and verifying patterns is what any science--Computer Science included--is all about. I somehow doubt that I'd see that if I'd been taught XML and C#, but never general programming theory or functional programming.
Of course, the plural of "anecdote" is not "data..." but anecdotes can be fun.
Take care,
Mark
There is a solution...
I have a similar experience. In my college years, I learned TCL, Java, and Scheme, over a weekend each. TCL/TK, I learned while a passenger on a road trip to Florida (to visit my school of choice). I learned Java in a glorious cram-session on the first weekend of the semester for my Java class.
;)
Was I a master at these languages? Of course not. I was pretty confident I could write programs in these languages, provided I would need a reference handy. After two weeks and being throughly bored of playing with Java's ClassLoader, I suspect I reaching that goal (of mastery). I asked questions my professor didn't have answers to, eventually discovering the answers myself. Sometimes I'd already have the answer, but I'd ask anyway
Now for me, C# is a slightly different story as it touched on some topics I hadn't dealt with in some time, or invited new concepts. I also wasn't as focused (older, etc). I still wouldn't say that I know it, only because I haven't used it enough.
The theory of computing is what gives you a real competitive advantage over Chubb school people. If you can look at an algorithm and classify it based on N, N log N, N^2, N^N, then, you have a huge advantage over people that really just don't know the difference.
Similarly, once you get that all computers is are is twisting trees and networks from one shape to another, everything sorta falls into place.
This is my sig.
It amazes me the number of times I see posts about the futility of a CS degree in its' ability in getting you a job in the IT industry. I don't suppose people bother reading the classifieds anymore but most full-time postions, that pay anything, require a CS degree. Or put another way, READ THE BLOODY CLASSIFIEDS TO DETERMINE WHAT SUCH AND SUCH A COMPANY REQUIRES!! Why on earth would you put any stock in what some pin-head says on his web-blog or what have you. This moron is already employed you are not. Do you want a job? Then go out into industry and ask them what they require. Don't ask jerk-wads on slashdot or what have you. Back in my day when I was in high school they had these things called "Career Fairs," where people from different industries would come and you could talk to them and ask them what they do, what's it like and what kind of education/training was required for their position. IT'S CALLED RESEARCH! This is high school guidance counseling 101. So yes maybe a CS degree is not required for certain types of IT jobs. Yes maybe some companies will hire you without a CS degree. But you are not going to KNOW THAT unless you ASK THE COMPANY doing the hiring!! Or better yet READ THE FREAKIN' JOB-ADD!!!
I agree with much of what you say--though a CS degree in particular may not suit every IT job. I can't tell from the original posting what type of job the poster would prefer, but I find CS majors often do not have a well rounded enough education to fit in at my place of work. I hire people to do more than just programming--should I need a full time programmer, I would probably look for a CS guy/gal.
I prefer college educated candidates, and give extra bonus points to non-CS majors who have learned significant CS skills on their own. A CS major candidate would have to demonstrate the ability to learn new skills outside the CS field for me to be impressed.
I myself have a degree in math and physics. I've even found a humanities degree holder who is great at learning new technical skills. The weakness I've seen in all the CS majors I've worked with in the past is the breadth of their education (despite the fact that CS is often located in liberal arts colleges on many campuses). Like many companies, the one I work for is a medium sized company that has a handful of geeks running an IT department. Web programming, database applications, network management, phone systems, end user support, etc are the main focus. While a CS major could handle any of the technical requirements for these skills, I have found it difficult to get them to learn/understand:
1. How their CS skills can best be used to improve business processes.
2. How to work in a team with members from non IT related departments.
3. How to communicate IT/CS concepts to non IT/CS people.
4. That the company they work for does not exist for the sole purpose of propogating an IT department.
Companies that have good IT departments tend to have the above points figured out. Those companies that have bad IT departments tend to be missing the boat on one or more of the above points.
So I suppose the argument will be advanced that I should hire MIS people. I find that MIS folks tend not to be very creative and too conservative.
Any way, I don't exclude CS people from consideration, but previous experience makes me be more careful. I'd love to see a candidate with CS + just about anything else. CS + one of humanities, arts, math/physical sciences, etc
would definitely impress me--the more dissimilar the second major to CS, the better.
When reading TFA, I initially thought this guy may have a point. Then when he recommends a course on "Cleaning And Preparing An Ice Surface For Pleasure and Competitive Purposes", I'm like, WTF? Then it dawns on me. This man may actually be a Zamboni. Never trust a Zamboni.
Anybody want a peanut?
if you want to learn how to program, to go a tech school. if you want to learn *computer science*, get a BA and be happy you have it.
I've never been asked for my high school degree in my entire life and that's all I have.
I can out engineer any "corporate" engineer (electronics or programming) and always go to the president of any company I want to consult for, that is when I feel like coming out of retirement.
The engineers at these companies are always threatened by my skills and really try to mess me up every chance they get. It gets old fast.
Just see if this makes sense:
Either you got it or you don't. In my case it comes natural. I am into figuring out how things work, I take apart everything, that's how I learn.
You only remember those things that are important to you. I remember IC numbers and their pinouts, but I forget birthdays. Why? Because the ICs allow me to design new and cool things, so I remember that stuff.
So do this, go play with stuff, get yourself a linux box and program it. See if you like it or not. Go with what is natural.
Then, if you like, go take only the courses you think you need help in. The rest, learn on your own.
You can do it 20 hours a day and are un-restricted by other idiots that are just there to get some stupid paper and a paycheck raise.
If you were president of a company would you want the guy who can actually do something useful or the guy who has some paper that says he went to school?
If you are going to be a doctor, ignore all I just said, the government doesn't let you be a doctor without papers, sorry.
As someone who teaches Linear Algebra, I'm very curious -- what kind of job do you have?
I work in speech processing and use Linear Algebra for some speech synthesis related issues and for junk mail filtering.
As the author of the original weblog entry, I just thought I'd put some additional comments here, and respond to some of the criticisms (and hate email!) I've had.
I think one of the main criticisms is that I've confused Computer Science with Software Engineering. And I did a little, and just gloss over the differences. But as I hinted at in the original post, my main worry is that - at least, here in the UK - the majority of 'computing' courses on offer are Computer Science, which may not fairly reflect the current and emerging IT job market. Maybe I'm wrong.
Many have also pointed out, correctly, that University is mainly about 'how to learn', 'how to work', and so on, and not about particular skills. I concede this point, but the bottom line is that the act of going to college/university teaches you most of this, not a particular course. So, they have to teach you _some_ specific skills in a computing (I won't say Computer Science!) course, and my personal opinion is that these could be better aligned with (what I perceive to be) the job market.
My original passing comment on XML has also been taken a bit too seriously! OK, so XML may not be around in "20 years", but so will most of the specifics that you're taught - this is I.T., where technologies change on a weekly basis. Who's to say that the Bayesian Network and Computer Vision techniques won't also be outdated in 10 years?
Many of these skills could be learnt on the job, but for most small/medium sized companies (which perhaps make up a fair proportion of the market?), a 3 month induction/training course isn't viable - we need graduates who can come in and hit the ground running. It's a shame, because - as someone has said - students can't be geared up for every type of IT job out there.
Just a small couple of justifications on some of my choices... Code Reading: absolutely, I stand by this. How much of a daily 'programmers' job (whether in web, software, science, or whatever) is taken up with code maintenance - 50%? 70%? The ability to read code is therefore just as important as the ability to write code. Nutrition? Ok, I put a question mark after it in the original post, as it was just a minor thought... But concentration is important for programmers, and a fast food and soda diet (ah, the old IT cliche!) are related to the ability to concentrate. Economics and Business Studies? Sure - I wouldn't want a nurse to attend to me without understanding the need to prioritise patients and how the bigger, healthcare system works. Similarly, I think it's important that a programmer understands that not all 'neat' functionality can always be delivered, and that not all problems can be fixed. None of these have to be 3 month courses, they could just be hour-long lunch-time topics. I'm just throwing ideas into the air, really.
I'm glad this has given rise to a debate, it's extremely interesting to hear both sides of the argument. But, if you're going to post a comment, please read the actual entry - note that the 'draft' list of topics I list are just a 'stream of consciousness', not a finalised module list!
As a final point, for those that assume I'm anti-mathematics... I studied a masters then a PhD in astrophysics, mainly due to my love of maths. It's not that I don't think maths is important, it's just that differential equations, integration and fourier transforms are possibly not as important as some of the other topics that could be studied.
Probably because you didn't do any CS-like learning is why you think learning C# in a very short period of time is 'simply false'. (Another poster mentioned libraries so I won't belabour that point. It took me about 45 minutes over lunch one day to get up to speed with the syntax and features of Objective-C having never written a line of ObjC in my life; it will take a lot longer to know Cocoa (the class library) inside and out. But you can just look up library details on the fly, especially if you have an existing project to look at. I wager it would take me no longer than 45 minutes to grok the syntax of C# too - all it is is a variation on a theme, and again, I can just trawl the library documentation).
:-)
You will probably learn this with time. Of course you don't say what languages you do use - but if you're monolingual, perhaps that's why you think that. A CS student is likely to have been exposed to many languages, and in the course of this has recognised that really what is important is not the language but the principles of computer science and will already realise that picking up the basics of a new language of a given type is really a 45 minute job. Your dismissal of CS graduates (who generally will have this skill) just shows you still have an awful lot to learn yourself which you may have done if you had done CS
Oolite: Elite-like game. For Mac, Linux and Windows
The guy is clearly a code monkey and doesn't understand what an education is for.
I mean, FFS! LEARN XML???? Why the fuck do you need to take a course to LEARN XML???
Here's a hint: thousands of people working in IT now use XML without having taken courses in it? How are they capable of this amazing feat of knowing about something without having to have taken a course on it? Because they have a decent education and they've learned how to learn. They have a good theoretical base in the art which makes new technologies easier to absorb and understand.
I repeat: the original article author is a code monkey.
It doesn't matter what IT, IS, CIS or other computer science fiction courses you sign up for if you don't combine them with the ability to analyze a problem, write a cogent sentence, understand history, make a little small talk and do a good job presenting. Community colleges often offer the most practical applied coursework for things like data structures.
'The longing to be primitive is a disease of culture' George Santayana
Based on my experience of having a Masters degree in Computer Science, I would say that for "education" you need to be taught concepts; "training" will teach skills that you need in your day-to-day jobs.
.... and some more ....
I don't agree with Dan Zambonini's list for many topics (and I am sure that many would not agree with my list that follows).
My suggestions for CS undergraduate courses would be:
1. Data Structures.
2. Algorithms (Basic and Advanced, 2 courses).
3. Theory of Computation.
4. Discrete Mathematics.
5. Basic courses in Physics, Chemistry, Linear Algebra, Numerical Analysis, (now) Biology.
6. Some courses on Literature, Languages, Report Writing, Technical Communication, Psychology.
7. Some Courses on Economics and Management Principles.
8. Basic courses in Electronics (atleast two).
9. Operating System (atleast 2 courses).
10. Compiler Design.
11. Computer Organization and Structures.
12. Computer Architectures (one covering uPs and one advanced concepts).
13. Atleast 2 programming languages (one of which is C).
14. Atleast 1 scripting language (Perl).
15. Internet Technology and Practices.
16. Control Systems, Instrumentation and System Design.
17. DBMS related (2 courses).
18. Networking and Computer Networks.
19. Data Communications.
20. Grid Computing / Network Computing.
21. Projects and Seminars under various courses.
22.
-- Raj
is people are stupid. You can go to a class that teaches theory. or you can go learn how to strictly code. which one is better and will turn out the better programmer? Neither. I have a combination of both, college theory and my own learning. The problem with on your own, is people only care about the "RIGHT NOW" idea.. the "I need to learn this because it's what I need to complete this task", then it's added to their basket of tricks. The problem with the theory students? it's all they've got. they know about some douche-bag that make some theory that they try to make everything fit into. My way of thinking, either you've got the analytical and logical processes to do the job, or you don't. Just because you can get a degree in the field doesn't mean you're really cut out for it. The degree just gets you in the door. But that's me, and I just happen to hate people. Degree's don't impress me, and never will... exceptional thinking, creativeness, and the like are impressive, and colleges don't teach people how to do that. They just teach you regurgitation processes.
Good for all of you, I know a rotten University in the Philippines where almost *all* of the teachers on computer engineering department (they are fond of calling themselves engineers) are incompetent about computer subjects they are teaching. With regards to computers they are *mediocre* at best. They teach students how to use windows, word, excel, powerpoint, etc. They even go as far as teaching html and javascript on subjects designated in the curriculum as "Advanced Programming". By the way, the name of this university is Rizal Technological University. gah!
I have a Bachelors in CS myself, and could honestly say that if I had all my limbs hacked off, I could still effectively count how many times an employer has asked me to write a compiler. Its just not a "real-world" skill.
That being said, I have also worked with many IS majors. We refered to IS at my school as "CS for dummies". Basically, they had mostly the same general programming classes, but while were were in ODE, Fundamental Physics, and Calc 3, they took Intro to Business, Economics, and Business Writing courses. There is nothing wrong with this track, but I can honestly say that the quality of people who enrolled in IS over CS were not of the same caliper.
I am not knocking IS at all...most of my best friends were IS majors, but they are not the geekiest of the geeks. While I was building a mame machine or some other geeky project, my IS friends just looked at me like "Why would you want to do that?"
Now, fast forward to today. I am a Software Developer, and I still work with IS majors. And even though I have never written another compiler since school, I HAVE used the skills I learned in doing so, like languange parsing. Plus, knowing how the internals of a compiler works helps understand what certain errors mean. The same is true for most of the other classes.
I guess my point is, take what you can from the classes you are in. The knowledge may not be directly applicable, but you can apply anything.
I have nothing against Universities teaching people a curriculum that broadens there minds. However, with the cost of college tuition these days, I think college students would be much happier to see a return on investment right out of college. I'm a senior software architect/programmer for a medium sized company. We interview a lot of people fresh from college. I have no doubt that they are all intelligent people with an abundance of knowledge that helps them to be a well-rounded person. However, when we are looking for programmers we look for criteria that is similar to what was listed in the original article that spawned this Slashdot article in the first place. I've provided the link to the article below as well as the criteria mentioned in the article. http://www.onlamp.com/pub/wlg/7757 If you are a student going to college make sure that you are getting the following curriculum from your expensive, well-rounded education: * The basics of Programming (variables, data types, references, pointers, scope, error handling, iteration, core algorithms - searching, sorting, etc.) * Basic mathematics, basic statistics * Patterns and Anti-Patterns (With real world examples, not just theory) * Real world Databases (Normalisation and De-normalisation, SQL, Indexing) * Basics of good code architecture: Loose Coupling, etc. * OO Design, Interfaces, etc. * The importance and tools of Planning: Spec'ing,, UML etc. * Architectures: client/server, SOA, P2P, etc. * A 'Big' language or two (Java, C#, C/C++) * A scripting/'agile' language or two (PHP, Perl, Python, Ruby) * XML (DOM/SAX, XSLT/XPath, etc.) * Economics, Business Studies, Costing Projects, Commercial pressures * Copyright, Privacy, Data Protection * Project/Time Management * Internationalisation, Localisation, Encoding, Unicode * Grammar, punctuation, concise and clear writing * Interface Design, Usability, Accessibility, HCI * Security * Code Reading * Common Protocols (TCP/IP, HTTP, SMTP, FTP) * Testing, Debugging, Performance, Re-factoring * Problem analysis * Source control, change management * The typical Software lifecycle * Metadata, Information Architecture, etc. * The basics of GIS * Touch typing * Health and safety (nutrition?)
If all you want is to write code then you can go to ECPI or get a book and learn to write Java. If you want to understand Systems and set the foundation for a career in Computer Science, study the fundamentals and work in a job on the side that teaches implementation.
Education is for both preparing you to make a decent living, nothing more, *AND* also for making you a good, educated, thoughtful, ambitious citizen as well.
We lack this second type of condition in the population. It is why we are at war right now, why we are plundering the planet right now, why children are not a focus, why people are dead & dying in the central south of the US right now.
Prepare to be a good citizen. Read a book on the Trojans and their compulsory citizenship.
I do not yet have my B.Sci but am working on getting one from a reputable state school's distance education program. UofMd. University College. They had a true "Computer Science" bachelor's program but I decided to go with the "Computer and Information Sciences" degree, which is about 50% computer science and 50% information science. Classes include network and system administration, C++/Java/OO programming, discrete math, data structures, and your typical electives.
I have spent the last eight or nine years as a system admin/engineer and done a bit of web development freelance, as well as C/C++ programming on my own. I took 2 years of computer science in high school (Yay Pascal!), and feel that I have a well rounded knowledge of programming/networking/operating systems. Do I really need the degree? Not currently, but I feel that it will complement my current skill set as well as bring me up to speed on the theoretical side of computer science.
After I am done, I plan on taking a couple years off then going back to get my masters degree.
Anyone else done similar? -gft
At U. Kaiserslautern, I mostly learned Modula-2, LISP, Fortran ("voluntary" - hah) and C (not taught - pick it up or die, 90% of 3rd-year+ work required it).
Stephan
I haven't gotten my US RDA of irony yet.
This might help, though:
Slashdot moderation is an absolute arbiter of my worth as a human being, knowledge, and intelligence!
+++ATH0
Machine Learning is a hot topic in software engineering jobs that involve factory automation. AI is a hot topic if you ever program for NASA. These classes are only irrelevant if you're just going to be a menial grunt-work coder.
No, I will not work for your startup
...not just a better employee.
One of the most valuable courses my University had was a required survey course that exposed everyone to important ideas, and the "big questions". Essentially a philosophy course, but more accessible.
The only time you're going to encounter anything like that - something to change people's opinions, force them to come to terms with their beliefs, and learn something about everyone else and other fields of study, is in an academic setting. You'd be doing yourself a disservice if you went to a college and only ended up with the ability to be a good 9-to-5er for some corporation. A lack of respect for knowledge is common these days, but being well-rounded and exploring all your options will give you a fuller, richer life.
Major in CS or CIS, but take courses in literature, biology, history, philosophy, education, interpretive dance, or whatever else you can. You'll be happier for it.
I yearn for you tragically. A. T. Tappman, Chaplain, U.S. Army.
Why don't you tell us all about APKTools and how they are the power user's wet dream?
Flipping those registry values sure is hard work, isn't it?
That's all anyone needs to see! The evidence speaks for itself! APK is my master! Iraq DEFINITELY has weapons of mass destruction!
+++ATH0
I started programming in Machine Language, and collaborating with others in a forum via dial-up modem (which developed EXTREMELY important technical writing skills) when I was eleven years old. It was the only way to accomplish my goals on a computer as "slow" as the Apple II. I transitioned to C and C++ in about a month, when I took up a summer job for a DoD contractor and bought a PC. Finally, three years later, I bootstrapped my way into the UC system as a CS major ... and was greatly annoyed.
Why? In college, my fellow CS students were being fed the theory and the details as though both were new, and running off on all kinds of bizarre tangents because, on a fundamental level, they still didn't really know what the computer was actually doing with the instructions they gave it. Upper-division compiler design and basic circuit engineering courses were supposed to correct this ... I think ... but when I encountered them (and breezed through them) I was struck by how far out of sequence the knowledge was, relative to the supposedly "easier" CS 101 stuff (where students were asked to make an object-oriented version of that ancient data structure, the doubly-linked list, before they could really appreciate the reasons for using an object-oriented approach in the first place.)
Because my immersion in computers had occurred during a period when "high level" languages were inaccessible, this had forced me to drill down and cultivate a thorough understanding of the details of computer architecture, and paradoxically, that created such a solid foundation that the overarching theory became obvious - second nature - to me. For example, I picked up object-oriented programming in a week - secure in my understanding of exactly what exceptions to the rules the advanced compiler was allowing me to make in my programs, which illuminated the unique ways in which object-oriented languages could and should be leveraged.
Based on this anecdotal evidence, I think that in Computer Science as a field, the only difference between teaching "theory" and teaching "details" is in THE AGE OF THE STUDENT.
You learn your first language, that's almost all details. You graduate to upper division, OR get a different job, OR get a new computer -- that compels you to learn a second language. From then on, the ratio of details to theory shrinks. My "official" CS education only served to fill in gaps of an understanding I'd already cultivated. In the job world outside and beyond college, I continued to rely mostly on the flexibility I'd developed before stepping into that first college class. I DIDN'T LEARN that flexibility in a classroom, nor am I convinced that the classrooms I sat in could ever adequately instill it.
However, if I was to point the finger in any one direction, to identify what made that flexibility possible, it would be the time I spent learning Assembly Language, and learning how to use it to do everything from graphics to sound to databases. That's the point where the actual hardware meets the actual programming logic, after all. Go up and down from that point and you're entering separate universes.
So why isn't the first CS class we take, an assembly language course in an emulated Apple II? (Aside from the whining voices of the students declaring its obsolescence?)
Why don't you tell everyone about how highly rated you are on ZDNet?
Come on. Surely you're down to only one star by now.
+++ATH0
I'm not trying to hide the fact that I have no respect for you whatsoever. If I gave the impression that I did, my apologies.
In point of fact, I am a doctoral student in computer engineering at the University of Notre Dame, and this coming semester I will be implementing a real-time (m,k)-type scheduler which uses smart i/o-bound job dropping to achieve better power management. We'll be investigating the prospect of dynamically scheduling by looking at the i/o usage history of processes and projecting that usage into future predictions of i/o behavior. In this way we can drop jobs which occur in-between i/o-bound jobs, push them together and eliminate the overhead of switching i/o devices off and back on again (rather than dropping them just based on plain (m,k)-firm constraints).
However, none of this was about me, really - it was more about me GREATLY enjoying trolling the hell out of you because you're an imbecile who enjoys belittling others. Don't think we forgot why you were banned - and it's clear you haven't changed. The 3rd-person mockery post proved that. It must have been a significant effort to restrain yourself from putting "apk" at the end of every sentence.
+++ATH0
I think you had best read this, start-to-finish, for your OWN good:
First of all, My question to you, last post? It simply went unanswered (as I knew it would):
"What have you ever written that others can use in the way of programs featured @ websites online that have done well over time?" - APK
NOTHING/NADA/ZIP - you are either lazy, or just a talker.
Now, You also stated in your replies to me that you were "intelligent"...
(Personally? I don't think so based on your over use of profanity & such as well as attacking your betters)
New News: Well, you can be the MOST intelligent person in the world, but if you are a talker & lazy? Not worth a wooden nickel.
What is the old saying? "Genius is 1% inspiration & 99% perspiration" or something like that... & talk IS cheap. Both apply to you hugely. After all, I asked you to show me something you have done others can use online... what did you show me? NOTHING.
"I am a doctoral student" - by StarKruzr (74642) on Tuesday September 13, @02:15PM
LOL, above all? You're JUST a student: ONLY A STUDENT!
Well, so you say, @ least. BUT, let's assume you are @ the levels you state. Think you get MY respect? LOL... good enough of an answer from me? Here goes, as to why:
(And, not ONLY are you JUST A STUDENT, but a typical 'thinks he knows it all arstechnica blowhard student', no less!)
Hey, I can say I am Bill Gates for all you know, couldn't I? Not that it'd matter, because deeds speak more than just words.
You do a set of tools as large & comprehensive as my own that have done as well as they have over time @ various websites & such rating well (mainly amongst my peers @ a site that BORLAND THEMSELVES ALSO HOST, who program Borland Delphi there, receiving their TOPMOST rating, from programmers in this field who are pros no less, & not just 'student wanna bes' like yourself here:
http://www.torry.net/pages.php?id=583
(2nd product down, rated "HOT" their topmost rating & the ONE THING I am proudest of, of all accomplishments that are public I have done in this field because it was rated thus by my peers... not just end-users, & there IS a difference of range of knowledge there! So, so much for your putting them down!)
Also, You do that? We'll talk then. OK?? Until then? Well, I will let others do the judging! Just as the moderators here rated my init. post here a +4 & your Mr. Phd Student, a -1... lol!
(That programs toolset is one example, along with many others as well in publications over a decade now in this field... for example, like "Windows IT Pro" magazine issue April 1997, entitled "Back Office Performance" pg. 61 for the products SuperCache & SuperDisk (on paid contract for them, even later, I improved the primary program up to 40% in efficiency & speed) rated EXCELLENTLY, no less, back as far as 1997!)
Now, in addition to that? Their own technical editor, a Mr. John Enck, was featured on that companies' website for a decade beside myself... but was it HIS theories that took them to Ms' Tech-Ed 2000 & 2001 finalist placement in said hardest category? NO... mine did, right here, as to how to use one of their tools to MAXIMUM ADVANTAGE, & in the very field I make a living in (Databasing/dataprocessing, the bread & butter end of this field where there is always work):
http://www.functional-it.com/ramdisk.htm#t6
(Once more, for you: Talk's cheap... Have you done the same? NO!)
Want more? I can provide it, because that is just a SMALL SAMPLING. That ramdisk article took that same company involved thru research I did for them to 2000 & 2001 Microsoft "Tech-Ed"'s finalist placement in the hardest category - SQLServer Performance Enhancement, 2 years in a row... you have yet to, if ever, do such things. Personally? Judging by your demeanor here? You NEVER will... mark my
That must have wasted an enormous amount of your time, opening up with both barrels of insanity on me like that.
Hey, here's a good one.
"APK: "Thanks for the ammunition I suppose, this will help my attorney alot, Ken "Caesar" Fisher"
The New York Bar lists three attorneys named Ken Fisher. Which one is yours so I can call him and ask him if he really represents you. You ARE aware that it's illegal to file false charges, aren't you?"
HAHAHAHAHA
Nice job at barratry there, pal!
Man, reading through the rest of this WindowsITPro article it sure looks like you spammed the hell out of their comments system. Pages upon pages of fake 3rd-party posts by people who don't exist that you made up to support you. Did you ever actually register as a user there? I can't find anything posted by "APK," just page after page of anonymous posts. Is this because you were worried about getting banned?
You can't make this stuff up, folks.
I LOVE that you finally invaded Slashdot. I can't wait for the REAL trolls (I am but a padawan, as you say) to get to you.
GNAA 4EVA
+++ATH0
http://slashdot.org/comments.pl?sid=161862&thresho ld=-1&commentsort=0&tid=146&mode=thread&pid=135492 82
:)
Just answer the questions there "BOY"... what's the matter, can't 'face the music'?
You started this show, I will let you finish it... and, yourself along with it.
LOL, you're just a MERE STUDENT (allegedly, from his own mouth, supposedly etc./et all), however, one who thinks he is "John Carmack's second-coming in this field" no less from how he talks...
So, answer my question above in that URL, that's all... I am a "show me person", so... show me!
Why are you avoiding that question & others I asked you?
My reply, after all, merely asks a SIMPLE question... one a BOY like you can manage to answer I imagine, with proofs backing it up, correct??
(It's not some unsolveable equation, after all).
After all, you ARE 'the intelligent one' as you said, right?
WELL, what's that 'intelligence' of yours done for you in this field we ALL can see that rated well & is useful etc. as I gave you a SMALL SAMPLE of what I could in that URL above... simply for comparison. After all/again:
You ARE 'the arstechnica intelligent one', right?
(The diff. between being a MERE STUDENT, & being a pro in this field, it was right there, for your OWN good & was shown you there in that URL above)
That was the POINT!
(& you just don't get it apparently, & are not as "intelligent" as you think I suppose)...
HOWEVER, since you are such a profanity artist, & b.s. artist to boot?
Well, let's see you answer my questions that just asking for samples of what you've done in this field of note vs. the tiny sampling I have...
(Again, so we can compare!)
After all, a "STUDENT BOY" of your "arstechnica intelligence" must have done SOMETHING of note we can all see & verify, or use, right??
*
LOL! (not...), and now, in the 'usual arstechnica style' he has resorted to calling me 'insane' etc. & what-not...
Yes, yes - he must ALSO be a PhD (or a student & therefore "master of") psychiatry &/or psychology as well, eh? LOL...
APK
P.S.=> Instead of attacking us seasoned pros, as you have me here starting up with me?
Perhaps you can learn something from us... instead of being an 'arstechnica blowhard' who likes to start things with others as you have myself here attacking me in your initial posting to mine, where the mods rated me +4 & you, a -1?
Gee, wonder WHY that is... lol!
apk
Why is this all so important to you?
And ask yourself the following question: Why do you think you are the only "pro" I feel the need to "attack?"
Also, what is this "profanity artist" crap?
I note the "usual Ars Technica style" seems to include OSY and WITPro as well. Gee. I wonder why that is.
You are a very, very sad little midlife crisis, aren't you?
+++ATH0
No one cares about whether or not someone says "crap" or even "fuck." Language is a tool, like a Swiss Army knife, and sometimes it is amusing or an expedient to use the toothed sawblade of vulgarity to express yourself.
You, on the other hand, are TERRIBLE at expressing yourself. You repeat yourself ad infinitum and believe it amplifies your "points." You can't organize thoughts. You don't know the meaning of the word "paragraph." You claim "victory" in "wars" in which you are the only combatant and everyone else sits by and watches you flail and slash at the air.
As for your all-important question, "What have you ever written that others can use in the way of programs featured @ websites online that have done well over time?"
Answer: Nothing! Yay! You apparently believe that is a testament to your superiority as a computer scientist and human being. I do not. I feel there are other metrics of a person's worth and intelligence, such as how well they can compose their thoughts into words.
I would *love* to see a publication written by Alexander Peter Kowalsky. Please, Alex. PLEASE write a paper and submit it to a conference. You need the drain on your ego desperately.
Here is an example of a software system produced by the academics you love to deride. If you ever produce something of even slightly comparable quality or utility, get back to me and I'll be properly chastened.
(Hint: Comments on ZDNet do not a high-quality piece of software make)
+++ATH0
"(Hint: Comments on ZDNet do not a high-quality piece of software make)" - by StarKruzr (74642) on Thursday September 15, @12:01AM
No, maybe not, since YOU (with no visible accomplishments to your credit we can see/verify in this field no less) say so... just like you speak for ALL OF SLASHDOT below which I note in my p.s., but, we can get back to THAT point, later.
HOWEVER, above all?
The 5 of 5 star rating my wares got @ ZDNet &/or CNET circa 2000-2002? That's FAR more than you have that you can show us that YOU have done w/in this field, now isn't it?
YES, or NO??
BUT, I guess that's NOT enough for you... and, as usual, you'll 'evade' that like a coward. You've proved that to us here already.
OK, then fine! We know you're a coward, big talker/blowhard (& probably also a COMPLETE liar about being a doctoral student as well no doubt).
So... since you say that's "not good enough"? WELL, read on McDuff:
Let's "rehash" some of what I wrote you earlier, which you evade to NO end like a coward (since I asked what you had done better since you called me an imbecile, and started this all out saying I didnt know my ass from my elbow, almost verbatim on that at this URL next):
http://slashdot.org/comments.pl?sid=161862&cid=135 32123
So, now here in this reply? WELL, You asked for data from publication I have been involved in?
Sure, no problem!
Here tis, for a company called EEC Systems/SuperSpeed.com, no less, whom folks @ these forums will NO DOUBT be aware of:
"Windows IT Pro" magazine issue April 1997, entitled "Back Office Performance" pg. 61 for the products SuperCache & SuperDisk (on paid contract for them, even later, I improved the primary program up to 40% in efficiency & speed) rated EXCELLENTLY, no less, back as far as 1997!
Now, in addition to that?
Their own technical editor, a Mr. John Enck, was featured on that companies' website for a decade beside myself...
But, was it HIS theories that took them to Ms' Tech-Ed 2000 & 2001 finalist placement in said hardest category? NO...
However, mine did!
Right here, as to how to use one of their tools to MAXIMUM ADVANTAGE, & in the very field I make a living in (Databasing/dataprocessing, the bread & butter end of this field where there is always work):
http://www.functional-it.com/ramdisk.htm#t6 [functional-it.com]
(Once more, for you: Talk's cheap... Have you done the same? NO!)
Want more? I can provide it!
(Because that is just a SMALL SAMPLING).
Fact is, that ramdisk article took that same company involved thru research I did for them to 2000 & 2001 Microsoft "Tech-Ed"'s finalist placement in the hardest category - SQLServer Performance Enhancement, 2 years in a row...
You STUDENT BOY? You have yet to, if ever, do such things!
QUESTION FOR YOU TO ANSWER:
So... what have YOU done, professionally, academia boy, that's better than that?
NOTHING/NADA/ZIP!
Now, how about a site that BORLAND themselves host in Torry's Delphi pages then, since ZDNet/CNET are not enough?
Where, rated by my peers in Delphi coders, my wares their TOPMOST (ratings done by programmers, not end users?) right here:
http://www.torry.net/pages.php?id=583 [torry.net]
You ever done a set of tools as large & comprehensive as my own that have done as well as they have over time @ various websites & such rating well (mainly amongst my peers @ a site that BORLAND THEMSELVES ALSO HOST, who program Borland Delphi there, receiving their TOPMOST rating, from programmers in this field who are pros no less, & not just 'student wanna bes' like yourself there)
?
(2nd product down, rated "HOT" their topmost rating & the ONE THING I am proudes
None of that was peer-reviewed conference or journal writing, it was random unrefereed text posted on a web site. I could do that quite easily if my time wasn't usually taken up in research (tonight I can spare a few minutes to laugh at you).
...
Research is not glamorous; this much is true. Most of the time, anyway. It's the results that you get from it that are what's really worthwhile.
This has gotten boring. You're repeating yourself again. I note you still didn't actually rebut anything I said about RT systems, btw.
You don't "eat full Ph.D.s for lunch." Your employers tolerate you because you're an experienced programmer for the work you're doing. The people you "destroy" either get angry at your foolishness or sit there and roll their eyes at you, perhaps pausing to check their watches to see how long you can rant.
"You're nothing in this field, & never will be, paduan learner. You talk the "jedi talk" but show us, walk the "Sith Lord WALK", ok?"
APK, really.
Who writes your dialogue?
+++ATH0
3 enumerated points, vs. your own:
(With verifiable examples (one even from professional on the job experience, what the hell, so you know what I am talking about with names & companies you can call & ask about exactly what I cite in fact vs. PhD's & such)):
As far as this statement by you:
"None of that was peer-reviewed" - by StarKruzr (74642) on Thursday September 15, @01:36AM
1.) Oh, really? The Windows IT Pro Magazine article about SuperDisk &/or SuperCache (which I improved by 40% on the latter on paid contract to do so once prototype work was done & 110%, & helped them realize how to use the former TO MAXIMUM ADVANTAGE in dataprocessing, for EEC Systems/SuperSpeed.com, to make it to Microsoft Tech-Ed 2000 & 2001 iirc, as a finalist in the HARDEST CATEGORY THERE, 2 years in a row?)??
I'd call that "peer review" my boy, professionally & in publication, ESPECIALLY THAT PUBLICATION, which is (in case you haven't known this, a widely known one in this very field)...
Great review there for wares I worked on & improved up to 40% in one, & using the other to take that company thru ideas I wrote up for them to a finalist position two years in a row in SQLServer Performance Enhancement (the hardest category @ Microsoft's OWN "Tech-Ed").
Both @ a programming level, for quality, & also @ an IT/IS/MIS level on how to use their programs to increase the speed & efficiency of SQL Server & other backend industrial strength grade DB engines.
Now, in addition to that? Their own technical editor, a Mr. John Enck, was featured on that companies' website for a decade beside myself... but was it HIS theories that took them to Ms' Tech-Ed 2000 & 2001 finalist placement in said hardest category? NO... mine did, right here, as to how to use one of their tools to MAXIMUM ADVANTAGE, & in the very field I make a living in (Databasing/dataprocessing, the bread & butter end of this field where there is always work):
http://www.functional-it.com/ramdisk.htm#t6
(Once more, for you: Talk's cheap... Have you done the same? NO!)
Kid, not only am I a programmer/software engineer/analyst (whatever title you wish to assign, I have held them all) but also Tech/Team Lead, Project Lead (currently), & have been a Network Tech/Administrator over the years as well. In this field, you wear many hats. Especially professionally from 1994-2005 in my case (doing ALL of those, coding's been since 1996 as a pro).
----
2.) The review of my apps @ Torry's Delphi pages, a site which is also hosted @ BORLAND no less & has been REPEATEDLY CITED by publications (such as Delphi Informant) as a TOP Delphi coders page?
Who do you think does the ratings there??
http://www.torry.net/pages.php?id=583
(2nd product down, the one you put down, seemed to have gotten their TOP RATING of "HOT" years ago, in far older versions than the current model I supplied you a link to no less)
Programmers who host the site... they are pros, write & ask them, yourself. In fact, ask for Maxim Peresada, ok?
Please, do so.
----
(So much for those comments by you to me - you with NO professional experience no less, especially after your initial post to me insulting me here no less which I cite below in my P.S., now, here is the one YOU want to see most no doubt, ok? Get ready, put on your mental seatbelts, you'll NEED them).
----
"You don't "eat full Ph.D.s for lunch." Your employers tolerate you because you're an experienced programmer for the work you're doing. The people you "destroy" either get angry at your foolishness or sit there and roll their eyes at you, perhaps pausing to check their watches to see how long you can rant." - by StarKruzr (74642) on Thursday September 15, @01:36AM
3.) Ahem - First of all, either you SKIM badly, OR perhaps not your f
that they haven't taken.
Who's running? Not me. I couldn't care less where you work or what IT applications you've worked on, to be quite honest. I have a hard time believing you've done what you've said you've done, if only because you've been known to lie in the past (and the posing-as-other-people thing REALLY detracts from your credibility).
If you actually have done what you said you have, bravo, honestly - but your behavior takes away any possible respect I would have for you about it.
That's the truly sad part - maybe you could be a productive member of an online community only on the merits of your experience and knowledge, but your narcissistic personality disorder prevents you from being taken seriously or communicating your ideas in a useful way.
Get help, APK, before you die lonely and twitching at a keyboard, firing off one last flame++2035 v6.9 SR71.
+++ATH0
"Get help, APK" - by StarKruzr on Thursday September 15, @03:49AM
Don't need it against you, all I need are facts, like the question of mine you avoided for @ least 10 posts now. You attacking me first here & your name calling of me? Proves that point cleanly!
"Who's running? Not me" - by StarKruzr on Thursday September 15, @03:49AM
OK - Then, answer my questions here, or do you need to continue lying as you have been:
http://slashdot.org/comments.pl?sid=161862&thresho ld=-1&commentsort=0&tid=146&mode=thread&pid=135492 82
(The main one's RIGHT @ the top of that page!)
Just answer it & HERE publicly, that's all I ask... you have evaded it thru @ least 10 posts by now. Do you realize how POORLY that alone makes you look?
(After what you said to me & about me here which I note in my p.s. below? I would, just to admit I was wrong were I you)...
Then again, if you do answer it? YOU LOSE FACE HERE, badly. Which is WHY you have avoided answering that question like the plague it seems!
LOL!
(Kind of a pickle you put yourself in, eh? Like I said earlier - you arstechnicans? So easy to maneuver into a corner you can't escape by using your OWN words no less, everytime! Just like @ the Windows IT Pro mag forums I cite below as well!)
"you've been known to lie in the past" - by StarKruzr on Thursday September 15, @03:49AM
Where, show us all, where? Prove it please. I show you evade questions I have been asking you for @ least 10 posts now.
Such as the Windows IT Pro points/examples from there about arstechnicans you mentioned no less as well which you now avoid like the plague also.
(There, though? Their forums mods AND Dr. Russinovich, the PhD lol, first edited out my posts wholesale since PhD Mark Russinovich couldn't disprove my points which toss his article into the wastebin, along with its namecalling of other software authors like myself).
Now, where they once edited out my points ENTIRELY (which I exposed them for here, which shamed them & they stopped doing it... an 'ancient jedi mindtrick' but an EFFECTIVE one nevertheless, lol, well? NOW, they disabled my account there so I cannot blow away the last point of theirs I wanted to on LOBS/BLOBS).
That however, is NO biggie - Tomorrow, I can just post from the job to put the final nail into their coffins factually. There's NO stopping that, as I have not posted from there yet to that page I cite below yet from work.
(That's JUST to get my last point in on LOBS/BLOBS, & blow them away for this latest antic of theirs of disabling my account now, & get the better of them yet again, on technical issues there).
Anyhow, on THAT note & that site? WELL now, if anyone lies and loads of them? I can PROVE it's your arstechnica crew, easily. Including yourself with your last statement in the title of your post no less... bad move!
E.G. -> The Windows IT Pro URL where I ran your pals off, Jay Little & Jeremy Reimer whom you mentioned earlier??
If ANYONE was caught lying, it was arstechnica people like yourself... The VERY arstechnicans you yourself mentioned in Jay Little specifically in fact & Jeremy Reimer:
http://www.windowsitpro.com/articles/index.cfm?art icleid=41095&cpage=124
(If you have to deal with their cookies & ads? Just see the last page, 124 specifically, & the 2nd post on it for the facts)
Jay Little's (another arstechnican like you who made the mistake of attacking me, email harassing me non-stop with Jeremy Reimer, also busted for that too, & libelling myself & violating his TOS with his hosting provider) own lies ran him right out of Windows IT Pro forums in fa
Get thee to a grammarian, go!
Sustainability and energy independence essay
we should make a distinction between "getting run off like a bad dog" (as you said of Mr. Reimer) and "getting bored with navigating through 3 feet of APK insanity."
Also, I answered your question in the negative, and stated that it was more or less irrelevant, a couple posts back. I leave it as an exercise to you to find it.
+++ATH0
Moderators cannot see any personal information about anyone on this system. That is not the way the moderation system works. Mods are chosen at random from the set of users with positive karma (like myself, as opposed to you with no karma) and rate posts according to how they feel about their usefulness.
Also, I'm not Jeremy Reimer, but you can keep thinking that about me if you like.
Is it possible to get a SHORT post out of you that doesn't involve you cutting and pasting what you said over and over again?
Anyway, I gotta run to go talk to my advisor; I think I have a good lead on an EDF scheduler to use for this project.
Sham on, APK. Sham on.
+++ATH0
... between useless karma points and useless ratings on ZDNet?
The reason I mentioned Jeremy and Jay is because a simple Google search on your name turns up tens of hits regarding people who despise you and wish there was a court order requiring you to never be connected to the internet again.
Hey, what kind of English is this? "You just need to grow up, & learn 1 thing: "Brick not hit back" but, apk do!"
Speaking of English, you're sure one to talk about profanity, aren't you? Nice bit of anti-Semitism on you, too. Don't you just hate it when your past catches up with you?
(Oh, and please don't try to tell me how terrible my past is - I have Excellent karma, thanks very much)
I also find the fact that you consider the word "student" to be a pejorative to be a sad commentary on the history of your life.
Didn't do so well in school, did you? Barely squeaked out passing grades? Became embittered at the fact that your professors didn't think you were anywhere near as brilliant as you thought you were? A sad, but all-too-common story. You're not special, Alex. There's lots of people out there like you (academically, at least - your particular combination of poor academic performance and narcissistic personality disorder is quite unique, I'd say).
You make mention many times of how I'm "paying the price" or "being destroyed" or "reaping what I sow" or etc. etc. yadda yadda ad infinitum et nauseum.
Er... what exactly is HAPPENING to me here? Are you sawing off my legs and somehow I'm not noticing? I have to tell you I really don't feel any different (other than extremely amused).
And finally, something about you that truly, truly bothers me is that you actually think people have "betters." Must tie in with your anti-Semitism problem. Again, I implore you - seek help.
+++ATH0
Posting without punctuation and carriage returns is a neat trick, but your writing style and verbiage still shows through.
I just don't care enough to keep posting this crap, sorry. I was busy having sex with a beautiful woman all weekend.
+++ATH0
You're getting even more bored with spewing your psychotic babble than I am responding to it!
Game, set, match.
+++ATH0
I was just written about THIS b.s on your part yet again directed MY WAY from you by a friend of mine who comes here & in fact, intro'd me to this site...
Ah, man, only to have myself pursued & attacked first everytime by you & yours from Arstechnica/OSY, etc. (only as per usual, to your own detriment).
Well, is about ALL I have to say in reply:
http://slashdot.org/comments.pl?sid=161862&cid=135 32123
Are your own words, that entire exchange where you only got what you deserved.
(& I will let others do the judging, as they have... note my rating of my post, & yours where you attacked me outright for NO reason?)
Yes, sure: You're "winning" alright!
You're now down to -2 moderation (down another -1 you fool) rating, for your starting a fight here with myself there. Your "karma points" (useless b.s. imo), have you up to ONLY, lol, a -1 total score.
What did my parent post to yours get rated again? Please, refresh my mind & that of others here?? Thank you.
Some "win" on YOUR end.
Your own rather unbelievable arrogance & blatant disregard for others only did you in. Fact is, judging by your demeanor & attitude?
I am certain that in YOUR life, this isn't the first time, & won't be the last that things like this happen to you STUDENT BOY.
Once more - Learn a lesson, or just get burned by YOURSELF, continually into the future of your life.
(A "win" on YOUR end? Hehehe, Man... You must be delusional, blinding yourself in your arrogance (for what though? Being a mere STUDENT/ROOKIE in this field?), or otherwise mentally challenged/troubled)
Hey, keep it up, believe-you-me:
I don't care - keep it up, you arstechnica/OSY forums people?
LOL, everytime, you only do yourselves in miserably each time, everywhere you do so.
It's only your rep after all.
BUT, from your standpoint in this field? One that doesn't exist??
LOL, YOUR non-existent one in this field, after all.
I asked you to show me "who you are online" & you couldn't put on 1 SINGLE NOTED WELL ACCOMPLISHMENT... not a single 1.
I put out 3, could have done MANY more, including making a "Freeware of the Year" candidate back in Windows Magazine in 1996-1997, but that was overkill vs. yourself. You're just a rookie/noob/student still w/in the confines of THIS field (comp. sci.).
Yet again StarKruzr - Time to send you to school, again & FOR YOUR OWN GOOD:
LOL, & this last reply of yours about/to me?
Mr. ALLEGED "PhD STUDENT", for your OWN good/seriously, above all - Learn a lesson:
* Respect your elders & BETTERS in this field, & this life... or, you'll just keep getting 'disciplined' as you were in the url above.
Anyone can read this entire exchange in the URL above I posted, in which it appears yet another moderator has, & he/they just burned you even MORE for your initial reply to myself (picking a fight doing it, & being soundly beaten by facts you couldn't dispute)!
Your being modded down yet another -1 on your TOTAL SCORE, lol, which in a way, I am sorry to see, but you need this...
No doubt in my mind, or apparently those of the mods here as well... after all: They DO do the judging here, not myself.
Here endeth the lesson...
APK
P.S.=> YOU, bottom-line, started ALL of this! Right here, in THIS post of yours to me:
"It was more about me GREATLY enjoying trolling the hell out of you because you're an imbecile who enjoys belittling others." - by StarKruzr (74642) on Tuesday September 13, @02:15PM
I never "belittle" anyone, or attack anyone, until first attacked...
After all - You attacked me first here, did you not? True, or untrue??
Need refreshing? See the URL I posted above. That's for YOU, & others like you that have tried to 'get my goat'? JUST like you here?? I fin
You lose at the internet, APK.
Also, you can't get a -2 rating on Slashdot. That's a nice try, though.
"STUDENT BOY"
You really are out of your mind. A shrink would have a field day with your inferiority complexes.
Ask yourself this: if it is so easy to disprove what I am saying (and by the way, what AM I saying? what is my primary argument? Hm?), why do you feel the need to dump rant after insane rant on everything I post in reply to you? If you've already "won" - and one of the things I am trying to demonstrate to you is that it doesn't matter who "wins" an argument on THE INTERNET, for GOD'S SAKE - then why are you compelled to dump pages upon pages of repetitive text on me over and over?
It's because there's something wrong with you, Alex. Very, very wrong.
+++ATH0
"you really are out of your mind. A shrink would have a field day with your inferiority complexes." - by StarKruzr (74642) on Wednesday September 21, @03:27PM
First of all: Care to show me & anyone reading your PhD in psychology OR psychiatry, those "precise" field(s) of endeavor (NOT)?
(You know - the one you don't have??)
"Also, you can't get a -2 rating on Slashdot. That's a nice try, though." - by StarKruzr (74642) on Wednesday September 21, @03:27PM
You know? LOL, probably not: I just got a +4 on the one you received a -2 for... that's good enough for me!
After all - facts ARE facts.
"If you've already "won" - and one of the things I am trying to demonstrate to you is that it doesn't matter who "wins" an argument on THE INTERNET, for GOD'S SAKE - then why are you compelled to dump pages upon pages of repetitive text on me over and over?"
I thought you said "I win"? And, to answer YOUR question (though you evaded the 1 I asked & we BOTH KNOW WHY)?? To teach you a lesson: Can't you comprehend what you read???
Fact is, I was just written about THIS b.s on your part yet again directed MY WAY from you by a friend of mine who comes here & in fact, intro'd me to this site...
Ah, man, only to have myself pursued & attacked first everytime by you & yours from Arstechnica/OSY, etc. (only as per usual, to your own detriment).
"It's because there's something wrong with you, Alex. Very, very wrong." - by StarKruzr (74642) on Wednesday September 21, @03:27PM
Ah, the PhD STUDENT BOY "expert of all things & master of ALL things mystical online" + speaker for ALL of "\.", (and now? mistakes) speaks out!
"why do you feel the need to dump rant after insane rant on everything I post in reply to you?" - by StarKruzr (74642) on Wednesday September 21, @03:27PM
Uhm, lol: I already told you that - To teach you a lesson in humility, for starting up with me here. Simple. Does your brain memory capacity fade after 2-3 days or something? Or, are you just "blocking out" the fact you beat yourself into the ground here, with your OWN WORDS, & attacking me & failing BADLY??
Well, is about ALL I have to say in reply:
http://slashdot.org/comments.pl?sid=161862&cid=135 32123
Are your own words, that entire exchange where you only got what you deserved.
(& I will let others do the judging, as they have... note my rating of my post, & yours where you attacked me outright for NO reason?)
Yes, sure: You're "winning" alright!
"Also, you can't get a -2 rating on Slashdot. That's a nice try, though." - by StarKruzr (74642) on Wednesday September 21, @03:27PM
That's FUNNY, because your TOTAL score @ that URL, IS A -2... you somehow managed the IMPOSSIBLE, lol, being impossibly badly rated... hilarious! I'd take a look @ that page, CLOSELY, & see your overall scoring by the mods here... lol!
Yes, that's RIGHT: You're now down to -2 moderation (down another -1 you fool, lol) rating! See the 2nd line, from that URL above:
Starting Score: 1
point Moderation -2
50% Flamebait
50% Overrated
Extra 'Flamebait' Modifier 0
Total Score: -1
(Argue with the numbers STUDENT BOY & as a former student (& 13 year pro in computers, whereas you are JUST a noob/student? I'd brush up on your research + math also! lol...)
For what? It was for "flamebait" & for your starting a fight here with myself there. Your "karma points" (useless b.s. imo), have you up to ONLY, lol, a -1 total score.
"I am trying to demonstrate to you is that it doesn't matter who "wins" an argument on THE INTERNET" - by StarKruzr (74642) on Wednesday September 21, @03:27PM
So YOU say STUDENT BOY! I suppose you 'know all', right? B.S.! That much you've already demonstrated by your lack of accomplishment in this field alone (comp. sci
do you think ANYONE cares about your "discipline?"
It's words on a page, Alex. None of any of this means anything, a fact you must be acutely aware of since you enjoy masquerading as your own supporters. You claim to be "teaching me a lesson in humility." Consider that I may never learn the lesson you are trying to teach. Why, then, do you persist?
You are indisputably my elder, but your concept of "better" fascinates me. What makes one man intrinsically better than another?
My goodness you make a fascinating case study.
P.S. Moderation on Slashdot means nothing. I would not be at all surprised if you kept a number of logged-in accounts whose posts you valiantly struggled not to "sign," and after collecting enough karma with them to get mod points, modded me down. It would be precisely your modus operandi.
+++ATH0
"do you think ANYONE cares about your "discipline?"" - by StarKruzr (74642) on Thursday September 22, @04:54AM
Who cares about it? I do for one, as it appears others have as well posting in my defense!
Fact - YOU started this with me, did you or did you not??
See the URL below in my P.S. here, to anyone reading this, it's all you need to see in regard to my statement to this person. Just facts, & all I need.
You need it imo, & deserve it after all the crap you've tossed my way... including name calling & worse.
I mean, to me?
It seems as if YOU think you can go and startup crap with people with impunity & not get any retaliation from them.
WRONG! And this time?? You STUDENT BOY, picked the wrong person to try it with... you needed to be humiliated & exposed for it.
"It's words on a page, Alex. None of any of this means anything" - - by StarKruzr (74642) on Thursday September 22, @04:54AM
OH, really? Then why bother reply?? Why avoid those words & questions of mine as you did & still do???
Ahem (cough) "B.S."...
"you enjoy masquerading as your own supporters." - by StarKruzr (74642) on Thursday September 22, @04:54AM
LOL, against the likes of a talk-alot, start hassles, name calling STUDENT BOY like yourself who has done nothing of note in this FIELD?
LOL, man: Newsflash - I don't HAVE to...
Does this reply of mine & facts I used in other posts here as chastisement of yourself for starting up hassles here with me also include the parent post of mine being modded to +4 & your rather idiotic reply being modded down -1 for it? I am those moderators??
NO! Not yet... but it's in my P.S. below as another backing fact for me to use vs. yourself, your own actions & words here, for anyone interested.
E.G.-> Also, I used facts about myself & what I've done (small sample) in this field of endeavor & then asked you a simple question:
"What have you done like it that we can see/use/verify & that did as well?"
(Especially since you put down some work of mine that did EXTREMELY well & I did not the judging of it @ Torry's Delphi pages for example, either gaining/earning their TOPMOST rating possible for wares programmed)...
I didn't do the voting, no external parties can - Their mods/admins did, who are professional coders also & my peers in this field who rated the same work YOU put down (you being merely a STUDENT BOY/NOOB/ROOKIE in this field no less who is simply out to get my goat & can't: YOU DON'T HAVE A THING TO YOUR NAME THAT SHOWS YOU ARE A PEER OF MINE IN THIS FIELD, & therefore, are someone I can just laugh at to be blunt about it).
Additionally? I masquerade as nobody! That statement of yours takes some nerve, here is why:
Fact is, you give away your very own modus operandi with that statement.
(That's one of THE VERY NOTORIOUS THINGS that you arstechnica/osy idiots are KNOWN for. Do I have to point out the sites like 3dfiles.com, ntcompatible.com, windowsitpromag.com, tweakfiles.com, majorgeeks.com & other spots online where arstechnica forums people did that & admitted it after being caught in that very thing @ them?)
"What makes one man intrinsically better than another?" - by StarKruzr (74642) on Thursday September 22, @04:54AM
Many things, including NOT starting up fights/hassles needlessly with others as you have with myself here for one.
You asked me, what makes another man 'better than another'?
Deeds/actions & Facts - NOT WORDS!
I gave you an example of that, here it is again (hate to 'burst your bubble', but ALL MEN ARE NOT CREATED EQUAL & their accomplishments tend to lend credence to it).
E.G.-> There is probably NO WAY I could beat Micheal Jordan in a game of basketball. He has me physically overmatched, & experience-wise as well. He is one of the best IF NOT THE BEST @ his game.
(I know this already because of what h
You're not fooling anyone. You never have. Your first reply to me was OBVIOUSLY the "anonymous" comment directly under my first reply to you; no one writes in that sentence-by-sentence stream-of-consciousness way. You're a lunatic. Whether or not I have written programs (and I haven't written anything of note! nope! end of discussion!) has no bearing on my ability to observe your behavior and judge it abnormal.
/dev/random.
The original test of your character here was to see how you responded to me calling you out as a liar (something that is essentially undisputed by anyone who counts). You could have chosen to say "I don't flamewar anymore," or "I don't bother with that kind of crap anymore," or any number of way classier responses than the endless stream you direct out of your fingers to the keyboard from
Stop making up supporters for yourself, try being a good person, and above all learn how to let things go.
Maybe someday if you can learn how to express yourself in ways that don't involve tearing other people and their opinions down, I'll be able to say "boy, that Kowalski, he really turned himself around and into an asset to the computing community." That day is not today.
Stop being obsessed with "destroying" people online and try focusing on actually HELPING.
+++ATH0
Those anonymous cowards could be you as well, I could easily state that... but the fact they did berate you & point out facts as I have? They did evidently stick up for me, & blast you bigtime.
5 32123 [slashdot.org]
Why? Well, YOU, bottom-line, started ALL of this!
Right here, in THIS post of yours to me:
"It was more about me GREATLY enjoying trolling the hell out of you because you're an imbecile who enjoys belittling others." - by StarKruzr (74642) on Tuesday September 13, @02:15PM
I never "belittle" anyone, or attack anyone, until first attacked...
After all - You attacked me first here, did you not? True, or untrue??
Need refreshing? See here:
http://slashdot.org/comments.pl?sid=161862&cid=13
Starting Score: 1
point Moderation -2
50% Flamebait
50% Overrated
Extra 'Flamebait' Modifier 0
Total Score: -1
YOUR score there StarKruzr, isn't me doing the judging, & like usual? You did yourself in. Classic arstechnica/OSY blunder.
(Any questions? That's your moderation score here, a -1 for flamebait & starting hassles with myself. I didn't do the judging of you here, others did, as they did my post you posted that to, & modded me UP +4 no less for...)
That's for YOU, & others like you that have tried to 'get my goat'? JUST like you here?? I finish them off, everytime... just as I did you, with facts!
LISTEN, above all:
Don't even TRY to preach to me kid, or sound condescending - you don't have the age, wisdom, skills in this field, or to be BLUNT about it? The wits needed!
In the end? I just level you with verifiable facts, as I have in EACH post reply to you...
Point-blank - You don't have the wits, intelligence you said you have, or the means/information @ your disposal to get the better of me & YOU KNOW IT, I know it, & now anyone reading here... knows it.
All you have is name calling, innuendo & libel, & blatant disregard for others by starting up crap... did you, or did you not, startup with me here?
Yes, You started this for no good reason - I will let you finish yourself off with your OWN words!
Just as I have every other arstechnican who talks a good game, but when it comes down to showing proof of achievement in this field we can all see/use?
Not a one has to date, been able to do so, & you are just yet another one for me to dispose of...
Heck - you arstechnica/OSY forums members only dispose of yourselves, everytime: TOO easy... way too easy.
Keep maneuvering your Arstechnica/OSY forums selves into a corner for me, with your own words & lack of visible/proveable accomplishment in THIS field...
It's FUNNY! apk
You lose.
+++ATH0
Well, the pot's calling the kettle black first of all: Didn't YOU just "cut & paste"?
Those anonymous cowards supporting me could be you as well, I could easily state that... but the fact they did berate you & point out facts as I have? They did evidently stick up for me, & blast you bigtime.
Why? Well, YOU, bottom-line, started ALL of this!
"Stop being obsessed with "destroying" people online and try focusing on actually HELPING." - by StarKruzr (74642) on Thursday September 22, @03:27PM
WTF? Who started this?? Myself OR YOURSELF? You did... care to deny that? I won't back down when attacked: LEARN THAT!
(Especially when I can EASILY prove your motivations, not good ones, so please: Don't try to pull the "Satan turns to Christ" move, ok? It's NOT working, and won't, when I point out your actions/deeds, vs. my own, with you clearly shown every time to have started up with me, first!)
NOW, As to helping others online?
LOL!
I've done that & been at it probably FAR longer than you have been online, & before you EVER had the abilities to do so.
IRC from 1994 onwards in fact, where I was a mod @ a tech channel for Win32 OS there, one endorsed as "the Official Help channel for Windows" by K. Mardem Bey, the creator of MIRC, on Dalnet. There, & before it existed, on other chat channels there, right on up to today in forums.
Especially on technical levels in this field. Noobs, & programmers alike even (ask Jay Loden the author of AIMFix in fact, whom I am helping to better his code right now where I can where he asked questions about it on his site when he hit walls in certain areas that I know how to "work-around" as my most recent evidence of this... as well as being modded up here repeatedly (10-15 times now in a SHORT (relative) time-frame here so far, less than 6 months or so)).
No... your motives are in question, since you've tried this SEVERAL times now on me, & cause the disturbances... proof?
Well, it's not from myself doing the judging on THAT account, but the mods here as well!
In fact, I evidence that, right here, in THIS post of yours to me:
"It was more about me GREATLY enjoying trolling the hell out of you because you're an imbecile who enjoys belittling others." - by StarKruzr (74642) on Tuesday September 13, @02:15PM
I never "belittle" anyone, or attack anyone, until first attacked...
After all - You attacked me first here, did you not? True, or untrue??
Need refreshing? See here:
http://slashdot.org/comments.pl?sid=161862&cid=135 [slashdot.org] 32123 [slashdot.org]
Starting Score: 1
point Moderation -2
50% Flamebait
50% Overrated
Extra 'Flamebait' Modifier 0
Total Score: -1
YOUR score there StarKruzr, isn't me doing the judging, & like usual? You did yourself in. Classic arstechnica/OSY blunder.
(Any questions? That's your moderation score here, a -1 for flamebait & starting hassles with myself. I didn't do the judging of you here, others did, as they did my post you posted that to, & modded me UP +4 no less for...)
That's for YOU, & others like you that have tried to 'get my goat'? JUST like you here?? I finish them off, everytime... just as I did you, with facts!
LISTEN, above all:
Don't even TRY to preach to me kid, or sound condescending - you don't have the age, wisdom, skills in this field, or to be BLUNT about it? The wits needed!
In the end? I just level you with verifiable facts, as I have in EACH post reply to you...
Point-blank - You don't have the wits, intelligence you said you have, or the means/information @ your disposal to get the better of me & YOU KNOW IT, I know it, & now anyone reading here... knows it.
All you have is name calling, innuendo & libel, & blatant disregard for others by starting up crap... did you, or did you not, startup w