Fast Track to a CS Degree?
kyrex asks: "it's been 5
years since I've been working in the tech industry and I've make
great progress. My salary has grown by an annual rate of about 50%
and I'm currently working as a consultant in a leading consulting
firm. But not having received any formal education in Computer
Science, and therefore having no degree will be a problem for
further progress. I've considered many options but they all take
time: at least 3 years. I've been programming since I was 12
(I'm currently 24) and have read hundreds of CS books. I think that I
can easily complete a CS degree in 1 year. I want to know if there
are universities/institutions out there that offers computer
professionals like me a fast track to a CS degree that will be
recognised as such by other universities (so that I can continue
with a MSc afterwards)"
I believe its called clept tests, where you can take a test on the course and if you pass it, you get credit for the course. Ask a university if you can clept tests and how many courses can you clept. Some schools have it where you have to go manditory for so many years or only allow you to clept so many classes, etc. Maybe you can find a school in your area that will let you clept most or maybe even just about every class and then you'd only need to go there for a couple of semesters to get your bachelors.
Does the name Pavlov ring a bell?
There is definetly more to a CS degree than simply being able to program. Other courses in the arts, sciences and languages are usually required. The point of a CS degree is not to produce programmers; it is produce well rounded students who can apply their knowledge to more fields than just computer programming. If you want a quick and easy degree just go to some kind of trade school.
The problem probably won't be the CS classes, if you are a solid programmer already. However, the problem will be the assorted other classes you have to take.
A CS degree (or any degree, for that matter) is not like a certification: it doesn't simply show mastery of one thing, but it demonstrates formal education in several areas, including critical thinking, math, communications (written and verbal), etc., with a specialization in one area (in your case, Comp Sci). You may be a stud programmer, but you will still have to take English, Math, some other basic requirements and some electives. 1.5 years is unreasonable, unless you are going for an Associate's degree, which I wouldn't recommend - it will probably be worthless given your experience.
Having said that, go ahead and spend the time getting your degree. Ignore the people that are sure to be posting ignorant crap about how "I wouldn't want to work at a place that values degrees!! Its just a piece of paper!" Those are, in all likelihood, people that couldn't hack it in college due to a serious lack of social skills, motivation, work ethic, whatever. The basic fact is that in order to advance in the majority of the organizations out there, you have to have some sort of degree.
In all likelihood, you can get your firm to pay for you to get your degree at some local university. Why not take advantage of it and do it right instead of trying to find some way to rush through it?
That's why a *good* CS department teaches theory rather than practice.
Fascism starts when the efficiency of the government becomes more important than the rights of the people.
For CS in particular, any university worth the effort of attending will probably require you to complete the first-year courses in all other sciences - physics, chemistry, biology. Plus first year courses in mathematics. Plus the humanities - literature, humanities, etc. You aren't expected to become an expert in any of these fields, but you should learn enough to be able to recognize when someone is trying to sell you a pack of lies in an election, in a courtroom (as a juror), or as the next-of-kin when a loved one is seriously ill. That's the stuff that ultimately matters, not just knowing how to write LALR(a) grammars.
For every complex problem there is an answer that is clear, simple, and wrong. -- H L Mencken
... did you know that getting a CS degree has very little to do with PROGRAMMING?
;-). Lots of calculus, and the hideous "discrete structures" courses. ::shudder::
I am in the same boat as you, and when I attended [a state school in Florida well known for computer science], I was surprised that the focus is entirely on the Science of Computing. Sure, some classes require you to know how to program in a certain language, but that is not the focus. The focus is on MATH. At least in the first years (that's as far as I got
In short, I don't see how a human could possibly get a CS degree in one year.
"And like that
Smart people don't value the paper, the value what the paper represents. To some it represents time and dedication. When focus on a subject for many years, you do learn a few things that experience won't give you. You don't explicitly learn theories, for example. That's a shame, since theories can help guide you in a different way thatn experience. Sometimes theory is better than experience, sometimes not.
Like it or not, a degree indicates that the person has at least some formal knowledge of material. Formal knowledge is no joke. It helps you recognize good form from bad form. Formal knowledge leads to understanding structures and architectures and other complex things.
Education itself is always behind corporations. It is behind technology in general and it seems out of date, almost immediately. However, the idea is to learn core principles. Tools and techniques for solving problems. Therefore, some of the best technical people will have degrees in areas like psychology and philosophy. (I've seen this again and again. Many technical degrees are inferior to non-technical degrees even though the person is in a technical field!)
Don't be foolish: Degrees are not the only thing companies use to judge people. They also look at pure technical skills, previous work experience, and so forth. A degree is only one part of the equation.
There are also some people out there who simply love to learn. They go to school to learn quickly or learn deeply. This idea is insane to mose people because it doesn't always translate to money. Oh well...!
How to Download YouTube Videos
I can understand the desire to have a degree, there are institutions that really want you to have that piece of paper that says you're in debt to a student loan processing center. I personally am in a similar situation with only a two year degree (electronics) and 7 years of IT experience. Here's my question though? Why do you want a CS Degree? Really, most employers are looking for *A* degree, it doesn't usually have to be a CS degree perse, especially with your experience.
If you're looking to advance your current career I'd say an MIS Degree (Management of Information Systems) would look better on your resume than a CS Degree.
It's been my experience that CS programs teach people to be programmers. How many CIO's and IT Directors are there that have come from the programming pool? Less than 1/2? Yes, programming is one road into an IT Career, but it certainly isn't the only one, or even the road that is the quickest.
All that said... a Degree isn't like an MCSE, you have to put in some time to get that piece of paper, but it'll be worth the time. Take the three years and learn something that will stick with you, rather than the current flavor of the day programming language.
What if it is just turtles all the way down?
It's not the paper; it's the wealth of information you get on your way to earning the paper.
I own my own consulting business, and it is true that my day-to-day contracting has a lot to do with the languages I learned after I left academia. BUT:
The problems I have to solve are many and varied, and often I find myself applying knowledge from my CS classes 15 years ago: "hmm... didn't we study a quadtree-like data structure which would be good for that problem?" "isn't that just a binary matrix multiplication?" And so on.
Academic CS is to practical CS what physics is to architecture: you need the theory to make a well-built product, and you need the product to make the theory meaningful.
True, you don't need the piece of paper to get the theory. But the piece of paper usually proves that you've been exposed to it, and even an average student will absorb things by osmosis.
I'm a bloodsucking fiend! Look at my outfit!
Well, how do I say this while remaining polite? Let me try: I don't buy it.
You're a consultant at a major consulting organization. Fine. However, I deal with people from major consulting organizations just about every day, and while they might have some very practical skills, most of them are pretty mediocre (speaking from a CS point of view) and come from a business background. There's nothing wrong with this in itself, but it's a very different thing than having a CS background. CS teaches you a ton of things which you'll never need in your daily job (especially not in the position you've described yourself as having) but which form the foundations of the Computer Science discipline.
Also, I'm a bit sceptical about your claim that you've read hundreds of CS books. I'm a bit older than you and do have a CS degree and I can not claim that I've read 100s of CS books (maybe 100, but that would probably be stretching it; I may have browsed 100s, but that's not quite the same as reading & understanding them). Things like advanced algorithms, design patterns, compiler design and other related stuff are not light reading and can't be read in a weekend (at least not if you really want to *understand* the stuff they cover). And once you start reading Knuth's books, well, then you should have some serious free time if you want to understand them (despite several tries, I've never actually managed to dig through the entire 1st volume of his AoCP).
I found that duing my CS studies, much of the grueling time spent in my compiler design classes (to name a paricularly 'fun' one), was time well spent. I doubt you could really get the most out of these types of classes without actually doing all the work & projects; this unfortunately takes time. In summary, real CS and the stuff you do at work are probably quite different. Having done Business Process Design (yuck!) or some high level project work is not the same.
Lastly (unrelated to you, since I don't know you), my favorite anecdote from a big-5 consulting organization was a Business Process Design person (native English speaker) who, when I commented on one of his questions "Yes, we have an API for that" replied (with a straight face): "What's an API?". To me this is equivalent of working for Ford, Crysler or BMW and not knowing what a steering wheel is. I'm sorry, but every since that episonde, I have a certain measure of contempt for these people and the major consulting organizations who employ people like that.
Bottom line: I think doing a (serious) CS degree in 1 year is impossible. On the other hand, you may be some sort of genius who can do it in a year, but if you're normal like the rest of us (whatever you consider to be 'normal') you'll need more time to do real CS. It seems like you like the technical field you're in in which case you'll probably find the time spent to get a CS degree well spent.
There is this great misconception that just because one is a great programmer he does not need real training as a computer scientist. This is due to the fact that most people think of a BS in CS as a formal education as a IT worker, so one who thinks he is a great programmer thinks that a BSCS wont really add anything usefull to him, except for the diploma.
The fact is that Computer Science is not only about becoming a IT worker. Its about using computers to solve problems, and about designing these computers to solve this problems. And about understanding and modeling the problems to begin with. There are actually great programmers who are mediocre computer scientists, great computer scientists who are mediocre programmers (usually of the thoretic cs kind), and great it workers who are great computer scientists (and really shitty programmers and Computer Scientists). And since these are different things, that is why it takes about 5 years to graduate a computer scientist.
Sometimes, a programmer who "learned CS" by his own, has acquired many bad habits that he would not have acquired if he had any formal training ("goto statement considered harmfull" comes to mind), and design rules, software engineering, etc. By the other side, self-learned IT professionals have a much more "getting the work done" attitude, and finding things out by himself, which is *extremely* usefull in industry.
So the idea is that one thing complements the other, and yes, it would be nice for anyone who works with technology without a formal training to really spend the time *learning* CS.
Just my 2c.
And of course, as you already know, in this field a degree is nice, but it's hardly essential. An impressive resume is much more important than a degree...
If you want to move beyond a programming position, and into some sort of management position, having a degree becomes much more important- largely because of the perception by venture capitalists and other suits that you need a degree to manage.
Part of this perception is based on stodgy "conventional wisdom", and part of it is based on the reality that people with basic and advanced degrees can sometimes feel a little resentful when having to report to someone with no degree at all. I'm all in favor of a full meritocracy myself, but I'm just saying how it is for better or worse.
OtakuBooty.com: Smart, funny, sexy nerds.
Eagle Scout, the highest rank in Boy Scouts, has to be achieved by the age of 18. To get there, you need to accomplish every other rank before it, some twenty-one merit badges in various subjects, and a self-designed project to benefit the community and demonstrate leadership. Only 2% of American Scouts achieve it, and colleges and jobs actually recognize it -- not because they like Scouting (note: this isn't nearly as impressive after age 25) but because it shows you possess initiative, leadership, and determination, and that you can finish a difficult task set before you.
College degrees have a similar effect. Besides showing that a major university considers you qualified and educated in your field, it proves that you're willing and able to achieve a difficult and long-term goal set before you by yourself. The goal isn't to prove you know your stuff, but to prove you can prove it, and hang in there long enough to impress someone much bigger than your corporate boss.
I think that's a little arrogant to think that companies shouldn't consider a college degree when making hiring decisions.
If you've ever interviewed anyone for a job (or talked to anyone ever for any reason), you should know that people fudge all kinds of things on resumes to make themselves look better. A college degree is something that represents a substantial sustained work effort.
The attitude that you are too smart for college is not too far off from the attitude that you are too smart to work with non-technical people. It's a kind of superiority complex that I see from time to time in geeks (possibly as a result of a painful high school experience?). I'd just like to point out that if you think you are better than someone because they used to think they were better than you, then what sets you apart from them?
Welcome to the REAL world. Most companies can't afford
to give you 50% raises every year. 15% is a GREAT
raise! Look at other fields like teaching where they
go 6 years before they see a 6% raise!
The only nominal way you will see beyond a "percentage"
raise is by jumping ship. If you like your job and
like the people you work with -- think about that prospect long
and hard right now. Jobs are NOT secure right now ANYWHERE in
the technical trades - so if you feel secure, that in itself
has some value right now.
Have you compiled your kernel today??
This is absolutely correct. Your BS or Bachelor of Science indicates that you have completed a certain set of requirements relatively common across all types of degrees that indicate they are of this type. For me, this included a few Chemistry classes, a few Physics classes, a good many Mathematics classes, various humanities and social science classes (various psychology classes, a literature class on Sci-Fi, and quite a few foreign language courses in my case) as well as classes in other disciplines such as Computer Engineering, Electrical Engineering (logic gates, anyone?) to name but a few.
As was mentioned above, you may be a crack programmer, but that's not all that's required for a degree, which is why you need a degree to continue to progress on your career ladder. The tasks that most probably await you will require certain degrees of critical thinking that are enhanced with the variety of non-CS classes that are required for the BS degree.
Another thought: do you have any degree? I assume you do not, but if you *did* many CS Masters programs (for example that at Chicago's DePaul University) will allow you to either take or test through a variety of core classes that essentially determine if you have what it takes for the Masters courses, if so - you're home free and on your way to your Masters. If not, you simply take the classes you need (shouldn't take more than a couple semesters) and then you're on your way. Again, I believe this only works if you have an undergraduate degree of some sort already.
and it has definitely had an impact on my career. Let me explain:
I'm 44 and am currently where I've been for the past 5 years, IT manager for a small manufacturing company. I took some of the first computer classes US high schools offered, way back in 1974-76 when programming projects got sent out to the local bank's mainframe for compilation and execution. My first IT job was as programmer trainee for a small service bureau too cheap to pay a living wage (thus no one with any training or experience would touch them) where I stayed for a year and a half, working on IBM S/34 minicomputers. Did my first microcomputer work on CP/M systems (Exidy Sorcerer! Woo-hoo!) and IBM Datamasters in '77 or '78. From there to another S/34 shop, then to a larger one that was both bleeding edge in PCs and networking as well as moving to the (then new) IBM S/38. Worked on S/34, S/38, Apple II & III, CP/M, and IBM PC systems there for 8 years, then moved to a larger company using IBM AS/400 and more PCs with networking, in a mixed mainframe/mini/PC environment over an international WAN. Consulted for a while, now here. I have extensive mainframe, minicomputer and PC experience, program in a bundle of languages (including C, Java, a variety of aassemblers, etc.), and my networking goes back to Banyan Vines and Lantastic days, not to mention early X.25, etc. I'm no computer god by any means, but I've been around and always got excellent or outstanding reviews.
I never noticed lacking a degree until I turned 35 or so -- and why should I have? Most companies discourage the sharing of salaries. I was happy to be making a good wage and didn't know until later that my peers were getting 20% more than I was, even with half my experience. For a variety of reasons I'm not terribly thrilled where I am but I believe I'm pretty well stuck here: in two years of searching I've found very few companies interested in my skills and experience. When I go for a job in competition with someone a few years out of college, just married or no family, I lose every time, long before anyone gets to talking about salaries. At my age, lack of a degree is almost a poison pill in my career -- so much so that I'm currently attending college to get one, something I should have done long ago (if I could have afforded to.) When I was just out of high school, college aid was a lot harder to get than it is today and I couldn't afford college on my own (and stepfather was blunt: don't even ask me to cosign a tuition loan, kid. Oh, and when are you moving out? Saturday good for you?) Now, take advantage of what's out there and get a degree. Any degree: CS is obviously best if that's the career you want but any degree is better than none.
I think you are wrong, not in your conclusion but in your premises.
Academic CS departments do not need to keep up with the latest iteration of C++ or Java and should not even try. Their job is to impart the fundamental knowledge of algorithms and systems that allow graduates to adapt to any particular application.
Self-taught gurus often have knowledge that is a mile wide but an inch deep, or they may be highly specialized in one particular field and know nothing whatsoever of anything else.
CS graduates avoid these two extremes, and can pick up new languages and concepts faster because of their grounding in basic science.
As an analogy close to my experience, it would be theoretically possible for a non-physician to become so skilled at a certain narrow field (for example reading mammograms) that most of the time the results would be as good as a board-certified doctor. However, every once in a while a really tough case comes along that requires knowledge of basic human medical science to interpret and integrate correctly. This is why you wouldn't want anyone but a doctor reading your wife's mammograms.
That's why we have the MD and by the same token, that's why we have CS degrees. However, the consequences of a mistake are rarely so dire as in medicine, and so the dilettantes and autodidacts of the CS world are free to flit from company to company, leaving half-baked useless projects in their wake wherever they go.
-ccm
Too much Law; not enough Order.
You presume that because you have are good at computer programming, you can easily finish a CS degree in one year - in essence, you propose that you know pretty much all that a CS major knows. But what is taught in a CS degree is FAR DIFFERENT than what you know having programmed for however many years. This also is precisely the reason why your advancement potential MAY be limited because you DON'T have a CS degree - the business world recognizes the difference.
"The biggest problem in the first case is going to be dependancies -- CS 302 requires CS 301, CS 303 requires CS 302, etc."
apt-get install cs_degree
;)
This sig is xenon coated, and will glow red when in the presence of aliens
At Windsor, it is not focused on programming. I have ONLY had 3 REAL programming classes. And even though you may be able to easily get credit / pass these classes, it is the others that will set you back a few years.
These classes include topics that I am sure you are knowledgeable: data types; induction and recursion and some that you may not: algebraic characterization; syntax; semantics; formal logic; soundness, completeness, and decidability; specification, implementation, and determinism; complexity
And that is the first class. A quick list of other non-programming topics:
Computer Languages, Grammars, and Translators
Including: both pragmatic and theoretical aspects of grammars, recognizers, and translators for computer languages. Regular languages: regular expressions, regular grammars, finite-state machines (automata), regular language recognizers, automatic regular-language-recognizer generator: lex. Context-free languages: context-free grammars and pushdown automata (stack machine), LL grammars and top-down recognition and parsing: LL(1) and recursive-descent parsers, LR grammars and bottom-up recognition and parsing: LR(0), SLR(1), LR(1), and LALR(1) parsers. Automatic context-free-language parser generator: YACC. Attribute grammars, syntaz-directed translation, computer-language processors: interpreters and compilers.
Theoretical Foundations of Computer Science
Including: propositional logic, first order logic, proof techniques, mathematical induction, sets, operations on sets, relations, operations on relations, functions, countable and uncountable sets, basic definitions in graph theory, connectivity, isomorphism of graphs, trees, Euler graphs, Hamilton graphs, planar graphs, graph colouring
File Structures
Including: performance differences between primary and secondary storage; secondary storage devices; fundamental file structures; sequential files; indexing; B trees; B+ trees; index sequential files; hashing; sorting and searching techniques on secondary storage devices.
Computer System Organisation
Including: Examination of the fundamentals of modern computer organization and architecture. Historical development. The computer system in terms of interconnection structures, memory, I/O and operating system software. CPU structure and function, including numeric representations, instruction sets, addressing modes and formats. Control unit. Alternate architectures and performance enhancement.
Those are just the basic classes that you need to know before you can take the challenging stuff. This is on Top of the "other" classes you must take, The Maths (Calc, Alg, Stats, Fundamentals of Math) your Social Sciences, etc.
But don't worry about all of that, you will have those 3 programming classes out of the way!
Its unfortunate that so many people value pieces of paper with writing on them.
It's unfortunate that so many people think that college is just about getting a piece of paper.
Not so.
:-).
I've been developing software for 18 years. I've designed a few motherboards (Motorola '340, ColdFire and PPC) and many other, "specialized" embedded cards -- a few are still on the market. I've been managing people (including managing managers) for the last seven years.
I have a vocational Drafting School certificate (got it 20 years ago), a pseudo-AS "degree" from a vocational Electronics School (they used ALL the Grantham books -- anyone know what I'm referring to? You're smiling right now as the pain returns to your forehead). CLEPed (or "challenged") Pascal, Assembly and C/C++ at a community college (lots of on-the-job experience helped me get a 4.0 on each exam
But absolutely NO degree. Nor will I ever get one, TVM.
If college teaches you anything useful, it's how to smash through a book and get *something* out of it. If you can learn this on your own, you're done! You can learn better ways to *design* software, architect hardware, program large-scale PLDs and DSPs, budget for your department and effectively manage employees (disputes and all).
My current team of developers is the best I've ever had the privilege to work with. Some have degrees; most don't. I have yet to tell the difference, and don't really give it much thought.
Yes, some companies bar non-degreed candidates. I think they shoot themselves and their hiring managers in the foot. They are also the very-rare exception.
Not having a degree has *never* kept me from getting the job I want. I seriously doubt it ever will. (I've been told, "Our policy is that we require a degree, but...")
Perhaps resting on degree-laurels has kept me from hiring some candidates, though. If you know your stuff, it shows; If you don't, you can't hide behind a degree.
When I was a kid, growing up in Silicon Valley (I'm 30 now), I heard a lot about how brilliant engineers at companies like Apple did really wonderful things without having a formal college education (nevertheless, I went to college)
Towards the end of grad school I bought some books on programming the Macintosh, as I had just gotten myself a Mac laptop. Having studied operating systems at both the undergrad and graduate level, and having programmed my Amiga and the school's Unix systems for years, I was shocked when I read what the internals of the Mac OS (then System 7) were like. They looked like what someone with a lot of Apple II experience would have designed: global system variables in known, fixed, publically-accessible locations (just like my old Commodore 64!), all user-level programs ran in supervisor mode, etc. The original Macintosh was a fine piece of work, with an innovative GUI. However, it would have been really nice if someone who had gone to college and studied operating systems (of which there were plenty in Berkeley, an hour's drive away) had been there to keep the OS team from making some really stupid design decisions.
I make the following recommendations based on how I achieved my degree after being in a situation such as the one described.
;)
Select an accredited university. Do NOT get a degree by mail. You will get called on it by any reputable employer.
Find a university that will provide "work experience" credits. I went through Wayland University (based in Texas). They allowed up to 20 some credits based on real-world work experience. This eliminates the need for some boring electives.
Select a BS program that is quickest to achieve. I obtained a degree in Business Administration because I knew and could document my technical experience. With the Bus. Admin degree I would prove to employers I can also understand business and management allowing me to progress up the corporate ladder.
Next, CLEP or DANTES test out of every class you can. At around $50 a pop, they are worth taking even if you are unsure of passing. I took ACCOUNTING I class and CLEP'd out of ACCOUNTING II. I also CLEP'd numerous math, physics, and astronomy classes simply because I knew the material reasonably well. Depending on the university you select, you may only need around a 50% passing score on CLEP or DANTES tests to be given credit. Since they are multiple choice, your almost guaranteed 25% correct by guessing.
Once you have cleaned out all the elective classes through CLEPs and work experience, you need to focus on core classes. Universities require you to take a minimum number of required courses from them in order to obtain a degree, usually 11 classes or so. You will not be able to get around this. Select the classes you believe will be important to give you a good background in the degree field you've choosen. They will actually be beneficial to you in the long run.
Final thoughts. I completed my degree in just under 2 years by completly immersing myself into the program (while continuing to work full time and run my own ISP and security consulting business). I had ZERO social life for those 2 years but it was well worth the effort. As a side note, once you have the credits (through CLEP, DANTES, or actually taking classes) and complete you degree you always have the option to leverage those in a second degree at another university. Get the quickest degree (Business admin, forestry, or whatever) then go back later and take a few additional classes to get the CS if you desired.
Most important, although you might think a CS degree is critical, employers first look to see if you have ANY degree, which provides them documented evidence of ability to learn and desire to grow in knowledge. Get a degree!
Hope this helps.
Although I agree with you completely, just check around among all your associates with the humanities/liberal arts degress, and find out just how much science/math/engineering they have taken. What gets me with the current state of the academic world is that it's unconscionable to allow a scientist or engineer to graduate without an appropriate number of humanities courses to "balance" his or her education, but it's perfectly OK to let a humanities major graduate with essentially no math or science or engineering courses whatever. In fact, they're lucky if they have taken a high-school-level algebra or "pre" calculus course for the entire math requirement and/or an astronomy-for-poets course as their science requirement. These same people then complain that their degrees have not prepared them for life in the technology-heavy modern business world. It's a joke.
Guns don't kill people -- people kill people.
But the guns seem to help a bit. (apologies to Eddie Izzard)
>I've been programming since I was 12 (I'm
>currently 24) and have read hundreds of CS
>books. I think that I can easily complete a CS
>degree in 1 year.
"I've been using microwave ovens since I was 12 and have read hundreds of books on using microwave ovens. I think I can easily complete a degree in high-energy physics in one year."
Okay, thats pushing the analogy a little far, but you get the point. Programming is a trade skill, period. Computer science is NOT about programming. I'm sorry I'm reacting so violently to this, but you've hit a *very* sore spot for me.
I do computer science for a living and I am a mathematician by trade and training. Yes, I can program and enjoy doing so, but this is not what makes me a "Computer Scientist". I also enjoy tinkering with old sports cars and have a decent grasp of mechanics. I certainly don't consider myself a qualified automotive engineer though.
You claim to have read "hundreds of CS" books; but have you really? Is there a chance they were programming and technology books? If you want a taste of what real "computer science" looks like, I happily recommend reading the following:
- Computational Complexity by Papidimitriou
- Automata Theory and Languages by Hopcroft and Ullman
- Compilers... I can't remember the whole name but its got a big picture of a dragon on the front. If you ask anyone in the business about 'the dragon book' they'll know what you mean... by Aho, Sethi and Ullman (I think).
- The Russell and Norvig AI book
- Any book on lambda-calculus and recursive function theory (I can't think of a good introductory-level text at the moment). Even better if it introduces semantics too.
Those will give you a feel for some of the areas that are considered "Computer Science". The ability to program will get you through first year; after that, its more about math and.. gasp... thinking, than it is about whipping up code.
Again, sorry for the rant, but I think Edsgar Dykstra (a famous Computer Scientist) summed it up best when he said:
"Computer Science is as much about computers as Astronomy is about telescopes".
Truer words were never spoken.
I have a problem with the presumption that someone who has acheived the CS skills required to compete successfully in the market has not or cannot have also educated themselves in math, business, the arts , other sciences etc...
Anyone who has educated themselves in these areas has far more focus, persistence, passion and discipline than most who do so with the aid of an educational institution. While tremendous resources are available at these facilities, anyone with the personal quialities to go it alone will continue educating themseleves at a much higher rate then most for whom education was something that you got in school.
Education is not something that other people do to you.
Calculus, chemistry, music....all can be learned to any degree on your own. I, and many others, are examples of those who do so out of pure curiosity about the world in which we live and passion for things that we love. I don't have a degree, never went to college, and have never been asked if I did. I, and many others, am a successful SW Engineering consultatnt who has been judged on my track record and ability to perform. To move into management...no problem. The MBA curriculum is available in books and is easy to master.....for the self educating individual.
"everyone's different....I am the same"
I went to work at 24 without finishing my IT degree. When I was 26 I was a lead developer with a lot of responsibility and one day my boss was rambling about the state of the industry and said, "...for example, if you had a degree, I'd have to pay you twice what you're making now." I resigned within the week and enrolled that semester. I graduated at 27 and have not looked back since. Now at 34 my degree is hardly an issue, but it's there. If it weren't opportunities I've had may not have been available. Whatever...
-- @rjamestaylor on Ello
when installing cs_degree you have to be sure you've removed the free_time modules or the cs_degree will not finish installing for years.
alternately, you can remove the sleep module from the kernel and keep some free time, but this has been known to cause unstable operation if sleep is completely and permanently removed (you might get away with using almost_no_sleep instead of the full sleep module.)
FreeBSD for the impatient.
The LAST thing the designers of the original MacOS wanted to do was write another Unix. They had to run a tremendous GUI using only 128K of RAM, and fit the entire system onto 400K disks (with room left over for applications). Not only did they not intend for the computer to have multiple simultaneous users, but the 68000 processor didn't support "supervisor mode" anyway, nor memory protection - so there was no reason not to use those global variables. By the way, no well-designed application (except for system utilities) ever had to use any of those global variables - they had API functions to access all of them.
I'm not saying they couldn't have done well with more C.S. people, but I don't think they ever anticipated that the code and the API they were writing would be used by the same type of people who were using modern "workhorse" operating systems...
Ok, here's some of the experience I've had, and the conclusions I've drawn from them:
./'ers are not taking into account that you don't just need a degree to move into management. You might also need it for the leg up on your competition. Take this economic heap of steaming s___ that we're in. If you're laid off, then you are most likely competing with several other people who have the same qualifications and who were also laid off. Given the pick, who would most managers choose? You got it, the guy with the degree. Why? Chances are, he'll catch less hell from his management.
The degree isn't always required to get a good job. And you can live a good life without ever getting one. However, for good and bad, there are people who are unwilling/unable to hire non-degreed people. It's just a fact. Most
I personally have fought this battle my entire career. I've spent time on the degree on the side because I will eventually need it some day. For all of you out there who are still having a problem with the idea of getting a degree just to satisfy some suits, look at it using this analogy: neighborhood hockey. Lemme explain:
You might just be the best damn player in the neighborhood. All the other kids know it, and you're THE first to be picked. The only problem is, on Saturday, you can't play with them because you didn't pay the municipal fee to play in a city league. Therefore, when you go to the rink, the Ref is going to have to keep you from playing. Does it mean you are any less qualified? Absolutly not. It just means to some suits in your city government, you haven't paid the fee, and can't play in the official league for whatever reason they've come up with. Possibly an issue of liability for the city, or maybe something else unseen to you. It doesn't matter what reason they use though. You still can't play, because they say so.
You see, you will always be able to get a job without the degree, but it's going to be harder. You will end up fighting more for those positions.The degree is a key to open several doors that you can't open on merit alone.
Now, in respect to the experience you get with a degree, here are a few comments:
a degree does not an engineer make.
experience does not an engineer make.
It's the combo of the degree (theory) with the experience (practical knowledge) that makes the best engineers. The theory tells us how something
is supposed to work, and the practice tells us where the theory is wrong so that the theory can be refined. You can operate exclusively in either domain, but you will get the best results in the area where they overlap.
As for the BullS*** arts classes that they make you take? Well, believe it or not, they're very useful too. History enables you to see patterns
of behavior in human culture. So does poly-sci and psycology. English ensures that you will be able to communicate your ideas clearer. Foriegn language expands your view of "those" other people in other areas of the world, as well as helps you communicate with them in an ever increasingly global market. Business and economics gives you the ability to identify trends your future employers will be following, and will give you a set of tools to judge how well they are doing in whatever market they're in.
Besides, let's remember who our customer's are: the non-techies. Yep, you'll be dealing with them some day. And you'll do much better if you have a way to talk with them. That's where the Liberal Arts classes come in.
Just some thoughts and conclusions.
PacketKing
Ignorance is lacking knowledge, stupidity is a choice of ignoring knowledge.
I've been in the IT industry for 16 years now, the last 6 in management. I almost finished a degree in 1985, but the fact is I do not have one. My story is similar to yours -- get started, work your way up, do not accept unnecessary limitations. It's always encouraging to see that others occasionally follow this path.
I have hired people ranging from non-degree up to MSCS. Looking at the performance of the entire group, the degree people fit the "normal curve". Some good, some bad, most were at least adequate. The non-degree people were hired only when they could demonstrate superior skills. As it happens, those skills made them top performers when it was time to actually do the job. Of all the non-degree people I have hired, I have yet to be disappointed.
In my opinion, the degree is part of the selection criteria ONLY when ALL of the applicants are light on experience.
Some of the other posts are correct in that certain industries are militant about the degree requirement. Around here the common examples are government, insurance, defense, banking, and pharmaceuticals.
Case study #1: I once hired a guy whose only work experience was as a VCR repair technician. He was an engineering/computer hobbyist, whom I had known for years. He was an incredibly sharp guy, just a little unfocused. He was part of my staff for a few years, and then left to become a system manager for one of the largest banks in New England.
Case study #2: Same story, except this guy was an electrician who was doing mostly Cat.5 network wiring. He was on my staff for a few years, and is now the network manager for an state government agency with a very sophisticated WAN and LAN environment that includes numerous remote sites and thousands of PCs.
Case study #3: I knew another guy who earned an ASEE. He looked for a job and found nothing. He goes back for an AS in Data Processing. New job search, same result. He goes to another college and earns a BSCS. Still no job. Finally, he goes to college #3 and gets an MSCS, and EVENTUALLY, a job installing PCs and LANs in Georgia. We would still be driving a van full of PCs from Georgia to Alabama if I didn't hire him. Since then, he worked his way up through operations and became an Oracle DBA. He now works for a major pharmaceutical company, so things worked well for him too. Then again, if he never graduated from anywhere, I don't see how his life would be any different today, aside from possibly earning an additional 6 years of salary.
Let's face it, when the IT job market is cold, MOST applicants are going to get excuses instead of job offers. In such a tough market, you have to outwit, outplay, and outlast your competition, degree or not. In a hot IT market, the offers are out there, and exceptions are being made by employers, beyond what most people can possibly imagine.
Does the lack of a degree reduce my theoretical number of potential employers? YES, it does. However, I don't expect to get an offer from every interview. No one ever does. In my career, I have interviewed about 12 times and received 5 offers, for a hit rate of about 42%. Did I get "screened out" of several opportunities? Sure, but who cares? I only accepted 2 of the 5 offers, and I've been promoted 6 times by two employers during 16 years of uninterrupted employement. I don't let the degree become an obstacle, and every so often I find employers who agree with me. After all, I can only DO one job at a time, right? If I apply for ten jobs and I'm ranked #1 once and dead last for the other nine, that's a hell of a lot better than being ranked #2 all ten times, as described in case study #3 above.
In my opinion, things that don't make you a #1 choice are not all that useful. To me, the degree is what helps you reduce the number of reasons why an employer might NOT hire you, but it's not as valuble as adding a reason why they WOULD hire you. Think of yourself as a hiring manager. Can you imagine telling your boss something like "I hired Joe Smith because he has a degree." On the other hand, would you rather say "I hired Joe Smith because he has great experience." To me, one of those statements sounds much better than the other.