Who Needs a Computer Science Degree When There’s Wikipedia?

Filed Under (Computers, Software) by Andy on 21-06-2008

126

Get info

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:

Extra Credit:

Languages:

Computer Science Fields:

General CS articles:

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:

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:

  1. Computer Science Is No More About Computers Than Astronomy Is About Telescopes
  2. Computer Program to Take On ‘Jeopardy!’
  3. History of Computer Chess (video)
  4. Speech In The News
  5. 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.

Comments (126)

Who 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.

[...] Who Needs a Computer Science Degree When There’s Wikipedia? – ????? ?????? ???????? ?????? ?? ?????? ??????? ? ?????????. [...]

FACT 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.

I 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

I 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.

Excellent list. This is a grand article about computer science spread throughout wikipedia. good work man. it really needs a lot of hard work.

At 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!

Well, 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.

Very nice.

Who 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.

P.S. (double post sorry)

This is a really nice reference for extra learning.

Nice article.. :)

im 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!

[...] 1. Who Needs a Computer Science Degree When There’s Wikipedia [...]

[...] ¿Quién necesita un título en ingeniería informática existiendo la… [...]

That’s very true my fren, i also did learn a lot from wikipedia and did get job learning wikipedia… Bravo WIkipedia…

Regards,
Simple

I 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.

this one is the best…..

[...] Who Needs a Computer Science Degree When There’s Wikipedia? [...]

[...] response to Who Needs a Computer Science Degree When There’s Wikipedia? , Chris Olstrom picks up the topic with On the Benefits of Self-Taught Skills. In my opinion he [...]

Wow – thanks so much for this. You must have put a lot of work into it. I’m doing an IT Diploma – your references will be referred too I promise you.

Thanks so much again.

Two Dimensional Array of Bits…

I found your entry interesting thus I’ve added a Trackback to it on my weblog :)

School Expansion, Globalization, Software Work with WLS…

I found your entry interesting thus I’ve added a Trackback to it on my weblog :)

True story folks. My second year at a major university I took a programming course just because I was interested in it. Several times during the semester when the Prof. was asked a question (like how to add a print function to a program) we were told to just Google it. Well I did Google it, the whole of the course actually. Code that we were supposed to be writing (copying from textbook) as our assignments readily available to copy and paste. Got an A in the class.

Wow Chris, it sounds like you got hosed with a Prof that didn’t care, that’s sad.

Post a comment

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word