
Update1 [6/25/08]: Welcome Stumblers
Update 2 [11/20/08]: I stumbled on this GREAT list of Algorithms, highly recommended reading.
I was looking up a computer science term on Wikipedia the other week and as is wont to happen, one thing led to another and I was about 5 or 6 articles deep on a trail of discovery and research to build up my knowledge.
As I realized I was randomizing myself and getting way off the original track, I decided to start assembling the links in one location for my own reference if not some other geek without the funds for their own degree.
Yes, there’s much more that I don’t have below, I wound up throttling back quite a bit after a while to leave it as is…for now.
History:
- History of computer science
- difference engine
- Wilhelm Schickard
- Ada Lovelace
- Charles Babbage
- Edsger Dijkstra
- Grace Hopper
- Kurt Gödel
- Alan Turing
- Dartmouth Time-Sharing System
- IBM System/370
Extra Credit:
Languages:
- assembly languages
- structured programming
- procedural language
- Fortran
- BASIC
- Python
- Perl
- Java
- C#
- C
- C++
- Lisp programming language
- Pascal
- COBOL
- PHP
- Ruby
- ALGOL 68 (obscure)
- Simula 67 (obscure)
Computer Science Fields:
- Theory of computation
- Operating Systems
- Numerical computation
- Compilers
- Software Engineering
- Databases
- Real-time computing
- Distributed system
- Computer Networking
- Data Communication
- Computer graphics
- Artificial Intelligence
- Multimedia
General CS articles:
- Abstraction (computer science)
- address space
- alphanumeric code
- array
- artificial intelligence
- atomic
- big endian
- binary tree
- bit array
- buffer overflow
- call stack
- Cheney’s algorithm
- Class (computer science)
- compiler
- computability
- computation
- computational complexity theory
- computer programming
- Concurrency (computer science)
- context switching
- Coupling (computer science)
- cryptography
- dangling pointers
- data
- data structure
- deadlocks
- Design pattern (computer science)
- Digital Revolution
- dynamic memory allocation
- exceptions
- exploits
- function
- function prototype
- Garbage Collection
- halting problem
- Hashing
- Heap overflow
- heuristic
- Heuristic algorithm
- Information Age
- Inheritance (computer science)
- Instruction (computer science)
- Integer (computer science)
- Kernel (computer science)
- Library (computing)
- linked list
- little endian
- Lock (computer science)
- malloc
- memory allocator
- Memory leak
- Memory management
- memory pool
- Method (computer science)
- Microsoft .NET Framework
- Modula-3
- Object (computer science)
- object inheritance
- object-oriented programming
- opcode
- paged memory
- Persistence (computer science)
- Polling (computer science)
- polymorphic code
- polymorphism
- process
- Process (computing)
- programming language theory
- quantum computing
- real-time
- Reflection (computer science)
- Reversible computing
- scheduler
- semipredicate problem
- serialize
- shared memory
- software engineering
- sorting algorithm
- Stack buffer overflow
- stack frame
- Standard Template Library
- state
- String (computer science)
- struct
- syntax
- system call
- system call
- thread
- type inference
- virtual memory
- void pointer
- Weak reference
- Whitespace (computer science)
Mathematical foundations
- Mathematical logic
- Boolean logic and other ways of modeling logical queries; the uses and limitations of formal proof methods.
- Number theory
- Theory of proofs and heuristics for finding proofs in the simple domain of integers. Used in cryptography as well as a test domain in artificial intelligence.
- Graph theory
- Foundations for data structures and searching algorithms.
- Type theory
- Formal analysis of the types of data, and the use of these types to understand properties of programs, especially program safety.
- Category theory
- Category theory provides a means of capturing all of math and computation in a single synthesis.
- Computational geometry
- The study of algorithms to solve problems stated in terms of geometry.
- Numerical analysis
- Foundations for algorithms in discrete mathematics, as well as the study of the limitations of floating point computation, including round-off errors.
Theory of Computation:
- Automata theory
- Different logical structures for solving problems.
- Computability theory
- What is calculable with the current models of computers. Proofs developed by Alan Turing and others provide insight into the possibilities of what can be computed and what cannot.
- Computational complexity theory
- Fundamental bounds (especially time and storage space) on classes of computations.
- Quantum computing theory
- Representation and manipulation of data using the quantum properties of particles and quantum mechanism.
Algorithms and data structures
- Analysis of algorithms
- Time and space complexity of algorithms.
- Algorithms
- Formal logical processes used for computation, and the efficiency of these processes.
- Data structures
- The organization of and rules for the manipulation of data.
Programming languages and compilers
- Compilers
- Ways of translating computer programs, usually from higher level languages to lower level ones.
- Interpreters
- A program that takes in as input a computer program and executes it.
- Programming languages
- Formal language paradigms for expressing algorithms, and the properties of these languages (e.g., what problems they are suited to solve).
Concurrent, parallel, and distributed systems:
- Concurrency
- The theory and practice of simultaneous computation; data safety in any multitasking or multithreaded environment.
- Distributed computing
- Computing using multiple computing devices over a network to accomplish a common objective or task and thereby reducing the latency involved in single processor contributions for any task.
- Parallel computing
- Computing using multiple concurrent threads of execution.
Software engineering:
- Algorithm design
- Using ideas from algorithm theory to creatively design solutions to real tasks
- Computer programming
- The practice of using a programming language to implement algorithms
- Formal methods
- Mathematical approaches for describing and reasoning about software designs.
- Reverse engineering
- The application of the scientific method to the understanding of arbitrary existing software
- Software development
- The principles and practice of designing, developing, and testing programs, as well as proper engineering practices.
System architecture:
- Computer architecture
- The design, organization, optimization and verification of a computer system, mostly about CPUs and memory subsystems (and the bus connecting them).
- Computer organization
- The implementation of computer architectures, in terms of descriptions of their specific electrical circuitry
- Operating systems
- Systems for managing computer programs and providing the basis of a useable system.
Communications:
- Computer audio
- Algorithms and data structures for the creation, manipulation, storage, and transmission of digital audio recordings. Also important in voice recognition applications.
- Networking
- Algorithms and protocols for communicating data across different shared or dedicated media, often including error correction.
- Cryptography
- Applies results from complexity, probability and number theory to invent and break codes.
Databases:
- Data mining
- Data mining is the extraction of relevant data from all sources of data.
- Relational databases
- Study of algorithms for searching and processing information in documents and databases; closely related to information retrieval.
- OLAP
- Online Analytical Processing, or OLAP, is an approach to quickly provide answers to analytical queries that are multi-dimensional in nature. OLAP is part of the broader category business intelligence, which also encompasses relational reporting and data mining.
Artificial intelligence:
- Artificial intelligence
- The implementation and study of systems that exhibit an autonomous intelligence or behaviour of their own.
- Artificial life
- The study of digital organisms to learn about biological systems and evolution.
- Automated reasoning
- Solving engines, such as used in Prolog, which produce steps to a result given a query on a fact and rule database.
- Computer vision
- Algorithms for identifying three dimensional objects from one or more two dimensional pictures.
- Machine learning
- Automated creation of a set of rules and axioms based on input.
- Natural language processing/Computational linguistics
- Automated understanding and generation of human language
- Robotics
- Algorithms for controlling the behavior of robots.
Visual rendering (or Computer graphics):
- Computer graphics
- Algorithms both for generating visual images synthetically, and for integrating or altering visual and spatial information sampled from the real world.
- Image processing
- Determining information from an image through computation.
Human-Computer Interaction:
- Human computer interaction
- The study of making computers and computations useful, usable and universally accessible to people, including the study and design of computer interfaces through which people use computers.
Scientific computing:
- Bioinformatics
- The use of computer science to maintain, analyse, and store biological data, and to assist in solving biological problems such as protein folding, function prediction and phylogeny.
- Cognitive Science
- Computational modelling of real minds
- Computational chemistry
- Computational modelling of theoretical chemistry in order to determine chemical structures and properties
- Computational neuroscience
- Computational modelling of real brains
- Computational physics
- Numerical simulations of large non-analytic systems
- Numerical algorithms
- Algorithms for the numerical solution of mathematical problems such as root-finding, integration, the solution of ordinary differential equations and the approximation/evaluation of special functions.
- Symbolic mathematics
- Manipulation and solution of expressions in symbolic form, also known as Computer algebra.
Related posts:
- Computer Science Is No More About Computers Than Astronomy Is About Telescopes
- Computer Program to Take On ‘Jeopardy!’
- History of Computer Chess (video)
- Speech In The News
- Top Articles For The Week 12/21/08- Computer Science, Anime, Zombies and the Easter Bunny
Related posts brought to you by Yet Another Related Posts Plugin.






Alan
Jun 21st, 2008An excellent collection! Everyone should bookmark this page.
Jason Adams
Jun 21st, 2008Wikipedia has been my constant companion throughout undergrad and grad school, but it’s hard to get a big picture when doing the random walks like you described at the beginning. I wish I’d had this list four years ago!
Andy
Jun 21st, 2008Thanks for the comments fellows. I’ll definitely be falling back on this post over time to continue my education.
website design
Jun 21st, 2008Tons of links to wikipedia computer science pages, categorized into common groups to help those that are self training in the subject or just want to learn more.
Henk
Jun 21st, 2008I have to agree with the sentiment that pretty much everything you learn in a computer science course can be easily found on the internet, BUT!
First, you’ll have to establish your own order of learning stuff – if you learn about, say, polymorphism before you learn the basics of OO programming, you won’t get it and, more importantly, be discouraged.
Second, what would make employers hire you during a job interview: “I’ve got a Master’s degree in computer science from an X-year education at renowned university Y” OR “I’ve spent a few days looking up articles on Wikipedia”? I’d go for the first one.
Not only would it give at least a basic guarantee of actual knowledge, but it would also show that the possible employee is both willing and able to learn, to be able to handle himself in a team-based environment (i.e. group projects), and that he has the determination to spend up to 6 years or more learning a certain job type, something you can’t be sure of when someone has spent some time looking on Wikipedia, since all of the above articles can be read in probably a week or so.
Izkata
Jun 21st, 2008Not only what Henk says, but the biggest thing missing from reading Wikipedia is practical application.
About half of the computer science people I’ve asked have agreed that programming is more an art than a science. You need to be able to conceptualize the final result and be able to understand the steps to get to it.
Andy
Jun 21st, 2008We’re all correct!
At the top of the article i link to henk’s article here, continuing his train of thought left in the comment above: http://greatjustice.info/university-versus-self-taught .
If the purpose of the self training is to get a job as a coder, then you absolutley positively have to code. Night and day. You need the experience and the passion. For a self taught person just getting started i highly recommend downloading the free version of Visual Studio from MSDN. I also recommend leveraging the many online tutorials at the VS site on MSDN, watching the videos then downloading the projects and coding right along with the tutorials.
There’s much more after that of course but i think we’re all in agreement here that simply reading Wikipedia isn’t going to get you a job.
jas
Jun 21st, 2008SORRY! wikipedia is not notable!
you fail.
ps> i edit wikipedia all the time and i put in bullshit
Ryan
Jun 21st, 2008As soon as I read the title I wanted to write a comment, but Henk pretty much covered everything.
Joey
Jun 21st, 2008This is way cool, just as cool as eating POOP!
dei
Jun 21st, 2008if jas really does write bullshit on wiki then he is one of the pinheads we need to get off the internet. “Ha ha ha I mislead people using a reputable resource. Idiots” What’s your game, pinhead?
Anonymous
Jun 21st, 2008Hm, Joey, I didn’t realize you are someone who greatly enjoys eating fecal matter or is enamored with the action of doing so.
Zach M
Jun 21st, 2008Pretty nice index. You should definately add Perl to the language list. Also, there’s no article for ‘internet computing’. I’m not sure what that refers to.
Getting lost in wikipedia seems to be my favorite hobby these days.
Dan
Jun 21st, 2008sure, wikipedia can tell you the syntaxes for the various languages, but wikipedia knows nothing of the real world, but its not a substitute for real human to human teaching, for the same reason that you don’t just turn up on the 1st day of a semester, get handed a textbook, and go home and study the textbook for 6 months.
Speaking as someone who is actively studying a computer science degree, and as someone who regularly compares and supplements his lecture notes with the information on wikipedia, I have to say, wikipedia is severely lacking. I have hundreds of pages on notes relating to the study of one computer language alone, where wikipedia has the equivalent of maybe 5 or 10 pages, which may or may not relate fully.
wikipedia cannot teach you teamwork, wikipedia cannot set you assignments, wikipedia cannot share with you the same insights you get from interacting with real people who have been in the business for longer than I have been alive. wikipedia can’t inspire you, it has no personality.
wikipedia cannot provide feedback, wikipedia can only help you to copy and perpetuate the ideas of others.
We don’t need an army of clone programmers, we need innovators, we need people who have been taught how to solve problems, not given a catalogue of all the current known solutions, because what happens when wikipedia doesn’t have the answer, and there’s nobody left to add to the entries. The knowledge stagnates, and progress stops.
If you can’t understand the information you find on wikipedia, there is nobody there to explain it.
Begin self taught at anything is extremely impressive, and I’m not saying it isn’t possible to teach yourself something and become very proficient at it, but it is a rare gift to be able to truly do this.
Computer programmers, computer scientists, are not just tools, people with an encyclopedia of syntax in their heads, to whom you issue the order to code, they need to have a deep understanding of their field, and to understand such a wealth of knowledge as that which applies to computing, you need help from people who already know. To learn and understand everything that has come before, even within the scope of only one programming language, alone, would be almost impossible, and would take far longer than the 3 years in which a computer science degree can teach you far far more.
Andy
Jun 21st, 2008Great comment Dan, thank you. You make a good case to get a formal education as opposed to self training.
Andy
Jun 21st, 2008Zach, thanks for pointing out Perl (added) and that bad link (removed).
Pete
Jun 21st, 2008You could’ve just linked to http://en.wikipedia.org/wiki/Topical_outline_of_computer_science
Andy
Jun 21st, 2008Hey, good find Pete! The intent of that page and my sets of links appears to be the same. Looks like there’s quite a few dupes, but there’s many more missing on that page, perhaps we should merge some of the links here into that page? The downside is that, like my page here, it turns into more of a glossary than anything else.
Hz
Jun 21st, 2008The world has changed a lot in even the past 5 years.
College is little more than a business.
They sell you information and, if you can learn it, give you a paper that will make it easier to get a job to get a house…whoo!
If someone wants to learn something…its online right now, in great detail for FREE. The internet is the greatest thing ever.
Its not just for porn, ebay and Myspace. At least for some people.
I think its more important to an employer to hire someone who teaches themselves.
It shows they have a real interest in the subject. Often people get an education just to make mommy and daddy proud…thats BS
There less and less control over the worlds information.
-and if you think a lot is online now, imagine the (near) future.
Its an exciting thought. Thank you technology.
Down with college! Up with Internet!
Natha
Jun 22nd, 2008This is all a collection of dick and shit, eat cock and let it ride in your mouth bitches….
Dennis
Jun 22nd, 2008That’s a great collection of links, thanks ! I love wikipedia, but of course one does need to be watchful for junk that is sometimes in there.
Michael Wong
Jun 22nd, 2008Cool links. I agree that knowing how to write code is one thing, writing code is another. It’s about solving problems. Having said that, you have to respect the programmers who are self-taught and who actively write programs to sell or for their own utility. The internet is computers, so it makes sense to learn about computers there and not in some dry, dusty classroom. I think this is the essence of being a hacker (in the original sense of the word).
steve
Jun 22nd, 2008Wikipedia is a good reference to refresh memory, but real
learning and discovery happens in that ‘aha’ moment when
one mentally grapples with a non-trivial problem and
comes up with a non-trivial solution.
Heila
Jun 22nd, 2008Even though you can pretty much learn everything you need to off the Internet, it is very hard to learn computer theory without going to lectures and classes where you are forced to take examinations and write papers to get the material. If you are a self-starter and you can make yourself interested in the material, more power to you. But only in school will you get a broad scope of all the technologies to pick up and learn in the future. Sometimes you just need that extra push, then I guess you can drop out
grim
Jun 22nd, 2008I cannot say that I’ve read all comments deeply, but what I can definitely say is that learning stuff from Internet is no more different than going to library than *going and searching the books yourself*.
The difference is that you don’t have Google handy in case it becomes difficult to find smthing.
The degree is a pro because someone acknowledged your quite definite skills.
Who can do the same when you have spent some time surfing the Internet.
BTW, how many graduated students do you think could achieve their degree self-studying in the Internet and in how much time? I think the answer would be “a little”, and here you get “2 of 20 in the last 4 years”
Also I agree with Dan that what is more important over knowledge is a teamwork, sharing and communication with other humans, that cannot be experienced over the Net.
It would be a sad world if anyone was just sitting near the PC. When you enter a college, it’s like your life is changing, and you LIVE…, again when you graduate, you go through the same and this is what can’t be done in front of the monitor.
Marco
Jun 22nd, 2008Yeah, nice list you’ve got.
But one can only rely on this materials after he/she already KNOWS what’s CS is all about.
jake
Jun 22nd, 2008‘who needs a computer science degree whtn there’s wikipedia?’
….
yeah, cause you know…wikipedia is the most accurate, comprehensible, reliable information source on the internet. especially given that it’s edited by users.
by the way, i wonder how many ‘experts’ will edit out these entries you liked to? just for the fun of it.
Andy
Jun 22nd, 2008Hi jake, thanks for the feedback. Am i concerned that some random maliciousness will occur on anything i’ve linked here, just to prove a point? naw, I’m not worried, neither should anyone else. I’ve seen the community within wikipedia resolve those often enough.
Am i worried that just because i linked to these it’s attracting a certain element to edit out these entries within Wikipedia? I wasn’t, until you put that idea out there for someone to pick up
Seriously though, you make a valid point in that the trustworthiness of the articles on wikipedia may not be as great as what you get in a text book or in a classroom. But for free content, is this acceptable? It depends on what you want to do with that information. If it’s to use as the foundation of an education to decide on a career course, then I would say that anyone that deems themselves intelligent and well rounded enough to launch themselves towards CS as a career opportunity is probably already educated and informed enough to decide for themselves how they leverage the information gleaned from free sources on the internet.
deadly
Jun 22nd, 2008I have bookmarked it.
Brady D
Jun 22nd, 2008There’s always some Negative Nancy out there who has to chime in about how inaccurate Wikipedia is. It’s so passe. How about a new article…”Who Needs a Computer Science Degree When There’s Books.” I’m sure some dullard will find something wrong with this idea as well.
Andy
Jun 22nd, 2008Quote:
“How about a new article…”Who Needs a Computer Science Degree When There’s Books.””.
Hahahaha! Thanks Brady, I love it.
dubayou
Jun 22nd, 2008I would like to say thanks for writing this and inspiring me. Thats a great list of computer science topics found on wikipedia
-w
Abhishek Mishra
Jun 23rd, 2008Yeah its okay that CS is there on wikipedia, but same is true for Mechanics, Electronice, Civil engg.. right ?
sonysoftware1
Jun 23rd, 2008Great comment Dan, thank you. You make a good case to get a formal education as opposed to self training. Excellent page every one should bookmark this page.
richard b
Jun 23rd, 2008I find the notion that you can replace a good Computer Science degree with wikipedia unimaginable. Currently I am a Java Developer with a large bank. I am still thankfull 12 years after my degree for the knowledge I gained during my course. While I admit that you can probably find everything online now (The online CS MIT resources are fantastic) it would take so much longer than 3 years to get the same depth of knowledge and understanding if not presented to you by someone with complete mastery of their field. I just don’t understand where people are coming from when they say a Computer Science degree isn’t necessary. I suppose it doesn’t make much difference if your blinkered view of the world involves programming in a high level language (e.g. Java) in a corporate environment and you consider it just a job.
szvest
Jun 23rd, 2008or you can browse through Wikipedia categories such as http://en.wikipedia.org/wiki/Category:Computer_science. There many other relevant categories.
David Weekly
Jun 23rd, 2008I’m putting together an online class called “Learn CS!” – it’s at http://learn-cs.pbwiki.com/ and leverages Wikipedia content, books, other online resources, and curriculum from Stanford, MIT, and others. Let me know what you think.
Keenan
Jun 23rd, 2008Perhaps you could spruce up: http://en.wikipedia.org/wiki/Portal:Computer_science ?
Your collection and the actual Wikipedia collection seem to have a lot in common. They do not have a history section, however.
Pedro
Jun 23rd, 2008Excellent collection
http://www.dimpmexico.com
Henk
Jun 23rd, 2008I’ve been graced with a (relatively) large amount of comments on my own blog, and apparently, most of the posters on there disagree with my sentiment that self-educated programmers are not as good (or, more strictly speaking, not as likely to get hired and not as common) as those with an actual degree. And it seems that, at least on here, there’s a couple of people that actually agree, although that more relates to Wikipedia.
In my opinion, Wikipedia is a very valuable source of information, offering large amounts of useful information concerning loads of subjects, ranging from computer science to history to whatnot. However, as is also stated in one of the comments here, it simply does not beat experience. As I’ve said (either on here or on my own blog), you can read through all of the above articles in about a week, but that does not make you a computer scientist, programmer, or whatnot, it takes loads of experience – as also stated on here -, loads of putting the theory into practice.
On a university, and the people that finished it, you have at least some guarantee that the ones that finish it are able to put that knowledge into practice. Of course, it also depends on the university itself, and its policy for testing people. On my own uni, for example, people are assessed individually at the end of a project, so that they have to be able to prove they know their stuff, in terms of programming and, probably more importantly, the train of thought behind it, and/or the design of the program itself.
A large amount of young, self-taught programmers have only themselves to answer to. They won’t get grades or their code checked by others unless they work on, for example, open source projects with patient co-programmers that explain things to them such as the basics of OO design and whatnot. There’s quite literally hundreds of blogs out there by self-taught-wannabe-programmers that write tutorials on various subjects, that teach others how NOT to solve a particular problem. I have a serious problem with such people, since, because they’re not often told they’re doing it wrong, they’re teaching other people how to do it wrong, which results in the average knowledge and skill of all programmers to decrease.
But yar. I need a computer science degree, books, AND wikipedia, in order to become and remain a good programmer / software engineer / computer scientist. That, and you won’t be allowed put a neat title to your name if you’re self-taught.
Cyril Gupta
Jun 23rd, 2008Hello there,
I’m just the guy you’re talking about. High-school education, no college, and 100% self taught. I’ve developed a number of profitable apps and websites. A pretty good track-record for someone with no education
I think I am better than or equivalent to most degree-holding computer programmers with similar experience.
Cheers!
sir jorge
Jun 23rd, 2008it’s going to be funny when some sap believes this post to be true and pulls up wiki during a real world assignment and gets fired on the spot.
troelskn
Jun 24th, 2008Hey, I love the fact that you marked ALGOL 68 and Simula 67 as being obscure, but didn’t do so with LISP.
Just kidding.
myak_PL
Jun 24th, 2008I don’t believe that university degree is worth that much as some of the people here do (Henk, etc.) In my opinion, the most valuable asset a young programmer can have is his (I’m assuming here of course; her as well) attitude towards programming – whether it’s his passion and he loves to code at nights or not. Most people go to the university to get a degree and a good job. Sure, go ahead, learn C, asm, OO, whatever, write your papers, pass your exams. But most of those people will _never_ have what makes a true and unique programmer – the will to evolve and continuously learn new things and the passion for programming as an art.
You can either be a craftsman who can duplicate what he was taught and he leaves work at 5:02pm or a passionate artist who will stay up late not just because the deadline is close but because he want to solve the problem and it’s extremely satisfying for him.
Now, I’m not saying that people with a degree can’t have it, it’s just the degree doesn’t determine whether one is a good programmer. IMHO, there’s a bigger chance that a self-taught enthusiast, who contributes to open source applications or has written applications by himself (and can prove it with *good* code) is often worth much more than a person with MS in CS who’s interested in gardening.
Anonymous
Jun 24th, 2008“I think its more important to an employer to hire someone who teaches themselves.
It shows they have a real interest in the subject. Often people get an education just to make mommy and daddy proud…thats BS ”
Yeah because sitting on your arse in front of wikipedia for some weeks shows way more dedication than actually going full-time college for 3 or 5 years.
Wait…
Milk & Co.
Jun 24th, 2008Nice post… I like it like Milk and Company
Tina
Jun 24th, 2008I went through an extremely theory based Computer Science undergraduate program and am in graduate school part time, pursuing a Masters in Computer Science. I’ve also worked in the financial sector for about 5 years developing software. One thing I’ve noticed is that people seem to use the terms Computer Scientist and Software Developer interchangeably. Software Development is only a small subset of Computer Science and I feel as though the actual Scientists (researchers, academics, etc.) are completely overlooked.
I think when people say “I taught myself to write really great, efficient, loosely coupled apps” they are not self taught Computer Scientists but self taught Software Developers. I have met some brilliant self taught Software Developers… but few of them have had a handle on the math or theory behind what they are doing. Concepts like Turning Machines or The Halting Problem are completely foreign to these developers. It doesn’t make them a poor developer by any means but I do feel like it prevents them from being a true Computer Scientist.
At the same time, I have also met many academics who are just not equipped to handle the challenges that a Software Developer faces on a daily basis (client expectations, trade offs between deadlines and efficiency). However, the beauty that these academics find in problems like the NP-Completeness is almost poetic.
With that said, I do believe it is possible for someone to become a self taught Computer Scientist. However, I don’t believe Wikipedia is the answer. Will Wikipedia really get you through the discrete mathematics needed to get a handle on true theoretical Computer Science? I highly doubt that. However, I don’t think a professor standing in front of a classroom is really all that necessary. I think there are people out there who have the discipline to learn this stuff on their own. One of my graduate professors was actually one of these people. However, I think people who want to learn “Computer Science” in order to get a job rarely care to also become a borderline mathematician.
I think a lot of times academics and practitioners in a given field are lumped together and an incredible amount of friction builds up between the two. It offends me to my core when I hear wonderful coders call themselves Computer Scientists because it makes me feel Computer Science is being reduced to a subset of what it actually is. Those are just my two cents, hopefully I didn’t offend anybody.
jonas brothers tickets
Jun 24th, 2008Before the web, you could just as easily say ‘who needs a degree when there are books?” and give a list of the relevant textbooks in a field, i.e. a syllabus. The difference is that wikipedia makes the knowledge more accessible and uniformly presented.
However, it’s easy to get lost and discouraged in trying to assimilate knowledge by simply reading, since so much practice is involved. The classic conundrum in teaching first-year CS is how much programming vs theory to introduce: if a class focuses all on programming, students tend to conclude that’s all CS is about. If you focus on theory, they lose interest and miss the thrill of building something.
A good teacher knows how to create class discussion about this interplay. A great teacher knows how to get the class to feel they have realized the connection between theory and practice themselves.
Reading a bunch of textbooks or wiki blurbs really is no substitute for learning CS in a group setting from a good teacher.
Andy
Jun 24th, 2008Great comment Tina, people do equate computer science with software development. I think this is because the degree has become so ubiquitous today, along with software development that people (sometimes myself) unconsciously assume one means the other, or CS degree always leads to SW development which is not necessarily the case. I’m sure most of know of cases where a degree in say electrical engineering led someone to a career in SW development.
Josh
Jun 24th, 2008The language list is redundant.
Tina
Jun 24th, 2008Thanks Andy. I just realized that all I really commented on were other people’s comments… I didn’t really say anything about the actual post, lol. Your list is a good starting point for the types of people I mentioned who actually do have the discipline to become a self taught Computer Scientist. However, I would hope that Wikipedia is only used as a starting point and that textbooks, journal articles and other resources are thrown in to the mix.
My biggest concern with someone learning any discipline through Wikipedia is that it tends to hand you the answers. A large portion of learning is done through self discovery… textbooks encourage students to not just accept Theorems as facts but to prove them. Wikipedia usually hands proofs and explanations to the reader on a platter, which I think often hinders the learning process.
Daniel
Jun 24th, 2008This really is a wonderful list. As a student in a Computer Information Systems program it will prove to be very helpful.
As for the debate which is better, self-taught or formal education it really has to do with what you expect from your future employee. My program claims to teach us not only the basics of C#, but of OO programming so that if a future employee needs us to develop a program in any other language, we have been taught how to teach ourselves.
This thinking has been applied to all aspects of our education. We are being taught how to teach ourselves. Although, I might be of a biased opinion, just had to say thanks and put my two cents in.
Anonymous
Jun 25th, 2008A somewhat nice collection (nothing special though), but do yourself a favor and don’t use stupid titles like “Who Needs a Computer Science Degree When There’s Wikipedia?”, since one could say the same about ANY field (“Who Needs a Degree in Quantum Physics When There’s Wikipedia/The Internet(/Star Trek)?”).
Reading a Wikipedia doesn’t turn you into a code guru, just like simply knowing what a Fourier Transform is doesn’t mean you fully understand the theory (nor does it it any way imply that you will be able to actually use it in a practical way).
Furthermore, people who train themselves informally using Wikipedia/The Internet often tend to cherry pick the topics that they consider worthwhile/important (e.g., programming in C++ and computer graphics) while neglecting/ignoring topics that are just as – or even more – important (e.g., formal logic and (linear) algebra).
Thinking that you can become (the equivalent of) a computer scientist by simply stumbling through Wikipedia is the same kind of error in judgment that leads a whole flock of (arrogant) business/finance guys with an MBA to think that they are true “IT specialists” after following some course on Information Systems. It simply doesn’t work like that. There is actually (still) some merit in getting an official university degree.
Bob
Jun 25th, 2008I agree with Henk and the last post. There is solid merit on gaining a university BSc(Hons) degree in computer science as the process of taking classes and particularly tutorials, continually tests a students abilities. It is this mechanism, which finesses students abilities, and gives them an approach and roundness of abilities which a self taught programmer doesn’t have and could never have. Generally if they pass the course, you can say with some confidence that that they know how to do a particular job at a particular skill level. This is simply not true for self taught. They tend to be very good at some subjects, bad at others (like most people I hear you say), and only tackle those subjects which strikes a cord. For instance, if I said Axiomatic Semantics, which would lead to Denotational Semantics. What would that mean to a self taught student, if they didn’t have any tutorials or test for the knowledge they had. Virtually nothing. They also tend to be bumble bee types, and if you get them to to a job which is outside their comfort zone, then quickly become useless.
Let me tell you an allegory. I have a friend, call him Biscuit.
He is a Biscuit class engineer. Before he went to Uni, he was extremely good assembly programmer on 68000, Z80 and 8086 stuff, being in the computer club at school, understood BASIC and PASCAL, (this was late 80’s) but didn’t use it as it was an high level language and of no use. When I met him, (he’s now a good mate) he used to harp on about how it was unlikely he would ever learn anything. Well I’ll tell you, this guy completely changed his mind by the time he had his degree, he had multiple epiphanies all the way through uni.
He eventually worked on Lemmings game, and then later for Sony on PS3 hardware.
Also another point which disturbs me, is that Computer Science is super set of software engineering and development.
Also, quick point about the list above. Although I find the formation of the list quite admirable, The meta taxonomy of Wikipedia regarding computer science and all the subjects relating to computing is a complete mess, and will take years to sort out. This list above, seems to reflect this reality, as it is extremely disorganised, and as final point, if you had a decent CS degree you would realise this.
Ashley
Jun 25th, 2008One could make this argument about any subject, history, english, math, whatever. Wikipedia covers articles on a multitude of subjects, as we already know, however lets not under estimate the value of higher education. Of course the motivation and yearning for knowledge that self educators possess is extremely important, but the added bonus of guidance from an expert, possibly from a person mentioned in some of these pages, the pressure of assignments tests and inquisitive classmates certainly help a great deal. Also, the classroom environment lends itself to problem solving in general that applies to far more than just computer science, a wikipedia page can’t teach that.
Andy
Jun 25th, 2008Problem solving, my friends. It’s all in the art of problem solving.
Andy
Jun 25th, 2008Well said Andy. Problem solving. And that’s not going to come from a degree or from wikipedia.
In my opinion it’s coming from experience. I think the debate above could probably be restated as how best to get your foot in the door to get that experience; from a degree or could you be just as successful getting the foot in the door by self-study?
Mohamed M. Hagag
Jun 26th, 2008Wow, what a great article, with great resources !
did u read all these resources ?
can u make another article with business administration learning resources ?
Regards,
Mohamed M. Hagag
Graeme
Jun 26th, 2008Anybody that thinks that Wikipedia is the be all end all of world knowledge is seriously mistaken. If anyone can go in and edit the descriptions of Wikipedia then the entire thing is corrupt and not one thing can be trusted as being true; but I guess that’s life for ya!
Mohamed M. Hagag
Jun 26th, 2008seems that you don’t know the technical side of wikipedia and its software, all what i can say is if any corruption happen to the wikipedia content it can be reverted to the latest good stat in less than a second
.
for more info. see the mediawiki.org website – this is the software running the wikipedia websites and related projects.
Regards,
D Winger
Jun 26th, 2008I’m looking at this discussion from a slightly different perspective. I’d guess that I earned my Master of Science degree in CS before a number of the readers of this post were born. I spent over 35 years designing, programming, testing, training, and managing software projects, and am now retired.
I agree strongly with those who argue in favor of the college degree vs. self-study. Yes, with self-study you may learn some theory, you may learn to code to the point where you get the results you wanted, etc. But you don’t get feedback from those with more experience and knowledge as you would in a college setting.
Not that you’ll emerge from college or post-grad with “perfect” knowledge! LOL! I learned even more during my first few years of working in the “real world” than I did during my formal education. You never stop learning — that is, unless you’re satisfied with being simply “adequate” at your computer science work, whatever that work may be.
I love being able to study new aspects of programming, design, etc. on the web. But I also know that I am, at best, just a hacker managing to get things to work, but often not knowing if I’m getting things to work as efficiently, cleanly, or elegantly (one of my favorite programming adverbs!) as I could.
ATOzTOA
Jun 26th, 2008THE THING IS…
The articles may not be correct always. So be careful when using these in Exams, lolzzzz
utopien
Jun 28th, 2008what you don’t get in the internet is that you are forced to learn stuff u don’t like at first… that’s why the topic is bull***.
i studied computer science in germany at the university of Bonn. so what you forgot is the complete mathematical background you need. 2nd who guarantees that you actually read all the articles and 3rd who guarantees that you understood them.. nobody..
and btw. there is so much missing, but i won’t start adding things. it’s simply too much
Me
Jun 28th, 2008Just because there is information available for you to learn by yourself, it doesn’t mean that you will truly learn the subject.
Whilst teaching computer scientists at uni, one of the biggest problems I encounter, are self taught students who think they already know the subject.
Most of these students learned many things incorrectly, but because they taught themselves it was impossible for them to realize the error of their ways.
Therefore getting a degree is essential for you to properly learn the subject.
But the learning process in computing science doesn’t end after you get your degree. If you truly are a computer scientist you never stop learning and improving, and the degree serves as the bases for your learning.
Although the collection of Wikipedia articles is quite good, there are much better resources around the internet.
Also these articles do not convey the scope of computing science and the range of differing areas within the field. Meaning that self taught students don’t even know about the areas of specialization available.
Rust
Jun 29th, 2008I completely agree with Jas.
Dave
Jun 30th, 2008You’ve missed the difference between computer science, the history of computing, and programming.
You can teach yourself how to program from online tutorials. It’s not hard to throw together some Ruby or PHP or whatever based on an online guide.
You can teach yourself the history of computing from Wikipedia, no doubt. You can learn about each famous algorithm and concept, from Quicksort through a Turing Machine, from reading about it online.
But you can’t become a computer scientist by either route above. Computer science is more than programming or knowing famous algorithms. It’s being able to transform any problem into an N-P complete form, something you’ll never learn without practicing. It’s knowing how to write a complier, something you’ll never do without understanding the theory of computing. And its about knowing how to use your knowledge to solve problems in almost any domain, something you can only do through rigorous study and practice.
So, no, they’re not the same at all. You can learn to program and get a cocktail party knowledge of computer science, but you can’t become a computer scientist without practicing it.
axiom
Jul 3rd, 2008Those who wish to learn, learn. Those who wish a degree, get it. They are never quite the same. A degree is a degree no matter how much learning has actually been retained, and those who know, know- no matter if they have a degree or not.
A lot of what can be learned exists outside of formal learning, especially in CS where the tech constantly changes. Self study is a must.
Now, Wikipedia is a useful reference, but not the only source of information. It is a companion to learning, not the only source of it.
Diogo
Jul 4th, 2008I make the words of Hank, Dan, and others my own.
Inner Technique
Jul 6th, 2008I’m 34 and left ’schooling’ at the end of high school.. the end for me was when they were unable to teach me anything more and at the time I was 14 and completing year 9.
I’ve raised 2 children, been the of Australia’s only ad-serving platform to make it offshore and compete with American and European technology, have owned 2 record labels, cut one of my own productions at London’s Abbey Road studio’s and rolled out around a dozen albums.
I never undertook a single music lesson in my life and can play most instrument’s to a fair degree. with I had a bit of an edge being that my first PC was loaded with MS-DOS v1.1 and DEBUG and were my only options at the tender age of 11, I failed to see what was so ‘complex’ then… having been working with programming and watching it’s evolution from C, Small Talk, Pascal, and some perhaps more popular but less secure framework’s ie; what evolved from Rasmus Lerdorf’s “personal home pages” (accounting for 48% of Internet vulnerability’s according to S.A.N.S)
http://www.sans.org/top20/#s1
Sorry Rasmus, indeed it is true that anything that can be engineered can be reverse engineered, especially if you give away the source code and the malice of people will never fail to amaze, just as the ignorance of people of low intellect has never phased me in the slightest.
Schooling does not prommise “education”, the latin root of the word “EDUCO”, simply means to develop from within. Schooling can aid and also can hinder in this process. Ultimatly we all stand on the shoulder’s of giant’s however and going to princetown or broadmeadows, really has nothing to do with anything other than social anxiety.
For the record, Plato, Jesus, Socrates we all criminal’s also. If you think that the justice system has matured much more than the education (pardon schooling system) over the past few thousand years, perhaps you should read more and worry less about the distraction and anxiety of the “have’s” and “have not’s”, that is more for people in posession of truly great minds such as Nikola Tesla, J.P Morgan and Bill Gates to do something about.
Tina
Jul 6th, 2008I don’t want to come across as attacking, but to me, Inner’s post actually proved that there are times when formal education is a necessary evil. For someone who stopped benefiting from a high school education at age 14, I felt like the spelling and grammatical errors in Inner’s post made it difficult for him or her to convey knowledge. I write this with the assumption that English is Inner’s primary language, if that’s not the case I apologize. Going by the previous comment alone, if debating higher education can somehow lead to debating high school education… that’s a slippery slope I hope to stay far away from.
Funny Dogs
Jul 6th, 2008yes,i agree with hank and dan.
Andy
Jul 6th, 2008Hi Tina, thanks for commenting here, you take the discussion in a new direction that I think is relevant.
I would tend to give the benefit of doubt when trying to assess whether someone is educated or not when all we have to go on is a single communication via the internet.
I sometimes find myself, I hope I’m not alone in this
, becoming a little less concerned about getting my punctuation or grammar correct when commenting on posts, especially for a long comment.
However, you make a valid point in that, being able to effectively communicate your point of view can be a good indicator of one’s education. And when educating yourself, you may neglect key aspects of that education that a formal method of education wouldn’t miss. Lacking the ability to communicate to your audience could just as well put off a hiring manager as it would a stranger on the internet.
Thanks again.
Soothsayer
Jul 6th, 2008The debate over whether it is better to have a formal education as opposed to being self-taught is pointless. HOW you know what you know is irrelevant. WHAT you know, and whether or not you are able to APPLY what you know, is essential.
With that being said, many employers look at a college degree (especially an Ivy League degree) as a sort of certificate of authenticity. Given the choice between a self-taught programmer and a programmer with a degree, with all else being equal, most employers will choose the programmer with the degree.
And with THAT being said, given the choice between a self-taught programmer and a programmer with a degree, both with demo code that they’ve written… well, the better code gets the job.
Ultimately, performance is all that matters.
Inner Technique
Jul 7th, 2008Oh dear me! Regarding my poor grammar (At least someone has the ability to pay attention and take notice!), you will have to excuse me as I have recently been the victim of a serious accident, which has left me blind in my right eye and while awaiting surgery am on rather heavy duty pain killers and suffering from A.S.D – Acute Stress Disorder.
The injury’s are serious enough to have had an 87 contract (for 4 months work) pulled, due to these medical conditions and I might also add am starting to suffer from a rare disorder called “Sympathetic Ophthalmitis” – I believe that there is an entry in Wikipedia regarding the subject, a condition which deteriorates the active ‘normal’ by a process where to quote: “Autoimmune inflammatory response toward ocular antigens”
Indecently Tina, line break’s are form of grammar and make your writing more legible (clearer to read) and for the record I speak 6 languages and am able to program in over 20 variants. Your point does have some grounding however and was intentionally made to bring this chain of conversation back on track.
Soothsayer – “Ultimately, performance is all that matters.” is in fact not quite correct. ‘Monkey see – Monkey do’. That much is simple enough for anyone with an I.Q-@-100 to grasp.
However the previous statements regarding the “certificate of authenticity” is also highly speculative as a self educated person, generally has mastered technique’s that even the pupil’s teacher could not grasp an hence work’s as a teacher opposed to working in the field actively, at typically much higher rates of remuneration.
Inner Technique
Jul 7th, 2008Once again I missed something – to “87″ = (87k) or $87,000 for four (4) month’s work – do the math, leaving school at 14 or not does not imply in any sense that I am an ignorant man, or that by doing so any person cannot prosper and do well or in some cases better than the highest formerly educated people, from the most reputable establishments, even excel far beyond their mediorce achivments as their drives, reasoning and determination is totally different.
Most university degree’s are not worth the paper they are printed on. What people are looking for is “Ability” and “determination”, which I have not seen a whole lot of in people who never had to battle to learn / earn anything and have been handed it on a plate, which they really have little care or value for in the first instance, school’s are simple money making factories and the student’s is, little more than ignorant “pieces of meat” through society grinder.
In the second instance, the internet is ‘allegedly’ the sum total of all human knowledge. If you believe this notion, then perhaps your parents, may have read you too many fairy tales, more likely and quite sadly, not enough. Neglect is neither the fault of the student or the teacher, it is both their duty to enlighten one another.
The reason, arrogance is in my humble opinion the reason the schooling system fails. Equally as the list of languages and technologies described at the head of this document has failed, being that they are arcane (antonym is exoteric) and historical (please refer to “The History of a Lie” on project Guttenberg)
Bernstein, Herman, 1876-1935
http://infomotions.com/etexts/gutenberg/dirs/1/9/2/0/19200/19200.htm
“Ignorance is ignorance; no right to believe anything can be derived from it.” – Sigmund Freud
Tina
Jul 7th, 2008Inner, I am sorry for what you are having to deal with. I hope you and your doctors are able to do what is needed to help you recover.
Taishi28012
Jul 7th, 2008In Eric Raymond’s article “How to Become a Hacker” he points out a few areas of mathematics that should be focused on and a few that shouldn’t. Notably absent from your article is combinatorics and finite-set theory. Might want to add those for future readers. Also of some note is Robert Reed’s article “How to be a Programmer.” It points out some of the more pratical aspects of programming, such as good teamwork and working with management.
Links:
http://samizdat.mines.edu/howto/HowToBeAProgrammer.html
http://www.catb.org/~esr/faqs/hacker-howto.html
Andy
Jul 7th, 2008Wow Taishi! Those are really good links, thank you! When I work on a follow-up post summarizing all the great discussions here, I should call those out as well.
ultramanjones
Jul 7th, 2008TRULY self-taught experts can be amazing, HOWEVER << and that’s a BIG however –
The guy with the degree has access to everything the self-taught guy has — the wiki and the blogs and the forums and every kind of free resource — AND he also has formal training and a piece of pretty paper with a happy gold seal on it. While the guy with the degree CAN have everything the self-taught guy has, the self-taught person simply does not.
No matter how you cut it the self taught guy is a gamble in comparison. That said, if I were doing the hiring I’d let the self-taught guy try and prove it to me if he wanted the job. Mind you that would be on his watch, I wouldn’t pay him a penny until he proved one way or another that he had the skills to do the job.
OH BTW, nice list. Thanks for compiling. Nice.
Vijay Veeraraghavan
Jul 8th, 2008excellent organizing the topics… starting with wiki gives really a good start… but as we do lots more research in the particulars it will really land us in the core
Inner Technique
Jul 8th, 2008Who Needs a Computer Science Degree When There’s Wikipedia?
This is like saying, “Who needs to know their field of expertise, to be an expert.”
This is like saying;
“All the information I am ever going to need, I can find on some web site somewhere, so why bother trying?”
This is also like saying;
“I’ve got an Oxford Encyclopaedia, so that makes me an expert in English (and probably good enough to teach a foreigner)”
The Oxford English Dictionary, second edition – http://www.oed.com defines “algorist” as a descriptor for a nifty programmer, but deems the word as being obsolete! Now tell me, what does Wikipedia have to say about the word “algorist”? Far more than Oxford English Dictionary indeed!
http://en.wikipedia.org/wiki/Algorist
None of these statements make any sense at all. They are in fact absurd and rely upon the “ignorance assumes arrogance”*, computational specifics, relating to Artificial Intelligence – A.I.
To be honest, I find this topic interesting as it relates more to sociology, personal interaction, psychology and the general human condition.
In summation, the question itself is a misnomer to subtle, yet poignant understandings of what intelligence actually is. The fact that all these wonderful conversation’s and interaction’s have occurred by the gravity of such a sweeping statement are profound to say the least.
*W Neville Holmes, University of Tasmania:
Artificial Intelligence: Arrogance or Ignorance?
IEEE Computer Volume 36, Issue 11, Nov 2003.
“The argument made is that there is only superficial similarity and that human intelligence is inherently unlike anything a digital computer can manage.”
I would like to add the source of the teaching will always be external, the EDUCO (Latin: develop from within) aspect or, education is ‘always’ developed “individually” hence, we are unique, not only in perceptions and understanding, but in interpretation and application.
Inner Technique
Jul 8th, 2008FACT 1: People who have acquired skills on the job are more desirable than people who no experience (by may hold a piece of paper).
FACT 2: A nice gold seal look’s shiny and offers ’some’ reassurance, not much but a little.
If you honestly believe in the pen being mightier than the sword then take a sword and find an equal opponent and try having a sword fight.
Truth is always more than mere fact’s.
ZarK
Jul 10th, 2008I have no doubt that you can become an expert in computer programming without formal education. I know many people who are self-taught that I would rather hire than some other people I know with master degree in CS (so what I’m saying here is that a formal degree in itself doesn’t really count for anything).
Given two persons that are good programmers then, one self-taught and the other with a formal university degree, what I think you’ve got is two different breeds, rather than one expert and the other unreliable.
For pure programming/engineering, the self-taught one may be the best choice. He has learned by experience, knows how to seek answers on the net, enjoys spending his spare-time on some geeky problems, and has hands-on knowledge of real-world technologies. He can be a great asset, productive from day one, and able to manage himself, although you must check that he don’t go astray in new and interesting wikipedia articles.
However, if you are dealing with advanced customer specifications, develops your own API that others will depend on, have a focus on security, create distributed and fail-safe systems or design long-living and innovative solutions, I would go for the one with the university degree. He should know how to plan ahead, be able to foresee consequences, understand the differences between available technologies (and reflect on how to chose among them), use programming patterns for easy and long-term maintenance, and ultimately could be able to utilize all of this to help take your company one step further.
I would, however, recommend anyone that wants to learn computer science to rather get real text-books from the library or book store, rather than depend solely on wikipedia articles. You’re list above is the best I’ve seen, but I still think one new to the field will lose out on too much of the stuff that binds it all together.
A great reference never the less!
Z
rata
Jul 18th, 2008I tried to read all the comments, but I’ve been discouraged by the stupids who wrote the first ones. A computer science degree has absolutly nothing to do with knowledge or proficiency at programming. It’s just useful for getting the job, what’s of course important, but it does not guarantee you are a good programmer. Indeed, if you have a CS degree you code probably worse than a self-taught programmer, unless you are both. The only useful thing is to write code (without VS!… use VI instead
and read code written by good programmers, e.g. code written by the Boost people.
And for teamwork experience, you don’t have to go to the university for learn this, it’s pretty much sufficient to have gone to the school!
BTW, very interesting list of links. I love Wikipedia.
StudyPark
Jul 21st, 2008Excellent list. This is a grand article about computer science spread throughout wikipedia. good work man. it really needs a lot of hard work.
Inner Technique
Jul 23rd, 2008At the end of the day, knowledge is power. Power can be taught (handed down), power can be summoned (demonstration) but power can not appear out of thin air!
Makes little difference if you are self taught, or have a document which proves you passed an exam or two. If anything is is subtractive from the subject matter and based upon trust of responsibility.
By teacher or sheer determination, education is root. Develop from within, not from without. Hence experience is far more valuable than theory or practice at any level. Real world experience will always dominate, what employers are seeking as it solidifies this ambiguity.
Develop your technique from within yourself. You are just a amazing or if not more so than the shoulders of the giants on which you stand.
Use the force Luke!
Pramathesh Borkotoky
Aug 6th, 2008Well, I don’t care what the other people comment.
I just want to say that it is a good article.But, useful if only read.
But, I also want to say that the problem with most people is that they are in a hurry in learning computer science. You will find books like learn C in 21 days or 1 week or 10 days getting popular only in Computer Science. But the fact is that you need quite a patience in learning computer science. I would suggest Learn Programming in 10 years like patience to everyone.
Abdo
Sep 11th, 2008Very nice.
James
Oct 14th, 2008Who says CS students don’t have passion? At my uni, we start the year with only a third or half of us who really wanted to learn. Not a problem though. By the the second and third year, they all dropped out. Who’d graduate from a CS course without the passion for it anyway? Maybe really intelligent people who were really meant for some other course, though this is very rare.
And besides, CS students can use their spare time coding in a basement too. But self-taught programmers can’t sit in a class with an expert.
James
Oct 14th, 2008P.S. (double post sorry)
This is a really nice reference for extra learning.
SARANG DRAVID
Nov 29th, 2008Nice article..
Harly
Dec 1st, 2008im by no means a comp e, cs or otherwise but with a science background i’d be really curious to run a study, considering the near endless debate about self-learning in the information age…
let’s say you took this curriculum, or created a curriculum comparable to the material at a prominent university for the subject (obviously you would have to control for self practice by some means or measure in the variable set to balance the labs, assignments, etc). then have these folks take the certification/bar/board/etc. that college grads would take and see who’s scores end up higher.
on a completely separate note, not to say self-taught is by definition a different kind of thinker, but the need for a creative talent becomes more favorable when you account for the risk to be outsourced. another consideration- how many classes would you never have taken that later provided more breadth and depth that you never would have recognized prior?
great page, great debate, thanks!
Simple
Feb 17th, 2009That’s very true my fren, i also did learn a lot from wikipedia and did get job learning wikipedia… Bravo WIkipedia…
Regards,
Simple
MDK
Jun 17th, 2009I looked at the title and thought it was a joke LOL
A lot of wiki answers are very incorrect or inaccurate.
It is true you dun need a degree always…
But Wiki is not going to help lol.
Some is accurate but they have a lot of contents that is very inaccurate.
If I was to go and search for ”God” on wikipedia would that mean I have understood the whole idea and ideal of God ? That is just silly. Philosophers and scholars have been trying to come up with that answer for thousands of years.
You couldn’t possibly be an expert by reading every single wiki article on the NET and these articles are constantly changing.
To be a expert one must do extensive studying (years) and real hands on experience.
@ Henk …
”First, you’ll have to establish your own order of learning stuff – if you learn about, say, polymorphism before you learn the basics of OO programming, you won’t get it and, more importantly, be discouraged”
Object Oriented is not always the preferred first choice in my experience. Why ? It handles a lot of different styles of coding, which can leave a newbie first time confused, especially if they’re new to computers in general.
OOP is only recommended for Coders who need to build, manage, structure big projects.
First one, learns the key basics, syntax wise and parameters.
All programming languages are based on a similiar syntax just different styles and procedures
First language I recommend is [Procedural programming] ”Pascal” or standard ”C” Which focus’s a bit more on the algorithms and data structures.
chetan
Sep 3rd, 2009this one is the best…..