Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Is coding important to be good at computer science? Should one implement the algorithm to know it well ?

I remember one cs professor's idiom that "I never code"

share|improve this question

closed as not a real question by ChrisF Dec 21 '11 at 15:47

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

32  
You're asking a group of Programmers if coding is important... you might not exactly get an unbiased response. –  Rachel Dec 22 '10 at 21:07
24  
With all due respect to your professor's idiom, if he doesn't write code, he's not qualified to teach others how to write code. If his teaching is purely theoretical, it would still benefit from having coding skills. –  Robert Harvey Dec 22 '10 at 21:18
18  
Would you take swimming lessons from someone who couldn't swim? –  Steven A. Lowe Dec 22 '10 at 21:30
5  
@Steven A. Lowe: i think the non-swimmer professor teaches aquatic physiology, not swimming. Still, if he doesn't swim, I'd doubt he knows how nitrogen narcosis feels. –  Javier Dec 23 '10 at 1:37
4  
@Javier: more likely he's teaching underwater demolitions, yet isn't even SCUBA certified. The technical term for people like that (other than "professor") is "poseur" ;-) –  Steven A. Lowe Dec 23 '10 at 2:18
show 3 more comments

15 Answers

up vote 27 down vote accepted

You won't really know the algorithm well until you code it.

share|improve this answer
3  
this is not necessarily true, one can understand an algorithm and apply it to a situation or problem without actually coding it. –  aggietech Dec 22 '10 at 21:34
9  
@aggietech: I think the key word here is "well." –  Robert Harvey Dec 22 '10 at 21:37
2  
@aggietech, Robert's got it right. I can parrot out algorithms, but when I really try to make them work, I find out just how much I have to learn about it. –  user1842 Dec 22 '10 at 21:40
3  
if you're talking about for-loops and bubble-sorts, then it's no big deal, but there's a huge difference between reading a book on the genetic algorithm and actually solving real-world problems with it –  Steven A. Lowe Dec 23 '10 at 2:16
2  
@Steven, yep, the complexity has a lot to do with it. –  user1842 Dec 23 '10 at 2:49
show 3 more comments

Coding is not important to your professor, but you need to keep in mind that he is not paid to DO things. He is paid to SAY things (and WRITE things.)

I'm a former math professor, so I understand this dynamic well.

If you want to follow his path, and to be a theoretical computer scientist, then yes, coding is of lesser importance. But if you do, remember to maintain humility, knowing that your salary is paid by resources earned by those that chose to DO things.

share|improve this answer
3  
The voice of experience. This is about the best summary of professorship I think I've seen. –  TehShrike Dec 23 '10 at 3:40
1  
Yes, and I'd add you need to practice the "do" if you are going to teach others to "do" well. –  Beth Whitezel Dec 23 '10 at 6:03
    
@BitOff: I agree, but the "if" is also an "only if". A professor who never codes has no business teaching software development, but he may be perfectly suited to teaching, say, complexity theory. In this case, what he's teaching students is how to prove theorems, so the only requirement is that he needs to have practice proving theorems (not coding). –  ShreevatsaR Dec 23 '10 at 6:43
    
@ShreevatsaR Yes I agree. And I'm actually not all that strict on the fact that they code a lot in practice. Good coders rarely make good teachers. If the teacher knows their week points they can make up for it. We have a program locally that brings in industry people into the classroom. The teacher is an expert at teaching, can code, and knows how to draw the information out of the industry person for the benefit of the students. –  Beth Whitezel Dec 24 '10 at 3:55
add comment

Computer Science is no more about computers than astronomy is about telescopes

— Edsger Dijkstra

I tend to agree.

share|improve this answer
2  
Ok, but how does this relate to the question? –  Robert Harvey Dec 22 '10 at 22:48
2  
"Is coding important to be good at computer science?" If a computer isn't related how could the physical coding of the computer be important? –  ElGringoGrande Dec 22 '10 at 22:49
1  
@Robert Harvey: Computer Science is not explicitly about computers, and plenty of astronomers spend little time looking through glass lens. Some just analyse the results. Half of the important discoveries in computer programming were known before the computer even came to be. –  Orbling Dec 23 '10 at 0:44
2  
@Robert Harvey:Computer science is simply not about how to program, it is the science of computation. Outside pure binary encoding you use a language, which is an abstraction, to implement the theories and findings of computer science. There are many ideas in computer science (e.g. quantum computing) that programming cannot fully realize. All I am saying is that all the ideas of computer science can be fully and elegantly expressed without using a programming language. Name one that can't. –  ElGringoGrande Dec 23 '10 at 2:46
3  
@Orbling: Very true. For example, recall that Turing invented the notion of the universal Turing machine before the first electronic computer was even created. Does the fact that he didn't write tons of code make him an incompetent computer scientist? –  mipadi Dec 24 '10 at 5:12
show 5 more comments

If you're talking about being a pure Computer Science academic specializing in abstract, foundational Computer Science concepts, then not necessarily.

To bend an analogy: this is a bit like asking if every rocket scientist at NASA should have to fly in space to be a "good rocket scientist". Of course not. Being an astronaut is part of the space flight industry, and a very hands-on part, but it doesn't mean that ground scientists aren't just as important in their own way.

That said, it's probably a good idea to APPLY the algorithm he created, if not actually write it in a real programming language. In this sense, you can think of algorithm design as a branch of mathematics.

share|improve this answer
1  
I think it's fair to say that all rocket scientists at NASA have a thorough grounding in rocket science, and in-depth, hands-on experience with mechanical and electrical engineering. Oh, and they generally know how to write code, too. –  Robert Harvey Dec 22 '10 at 21:22
3  
I would think that they've calculated trajectories many times, not just theorized about how. –  user1842 Dec 22 '10 at 21:24
3  
+1, I'd add another example - you don't need to have experience in wine-making to be a great somellier (or whatever the wine-tasting guys are called). –  Jas Dec 22 '10 at 21:26
2  
@Jas: Terrible analogy. Computer scientists aren't the receivers of the end product. They are the wine-makers. –  Jonathan Hobbs Dec 23 '10 at 2:26
1  
@Axidos No, no, they are the grape farmers. –  Mark C Dec 23 '10 at 4:55
show 7 more comments

Coding is not super important to be a true computer scientist. And thinking in code can constrain thinking as they seek to develop useful abstract concepts. Most excellent coders do not have the intellectual chops to analyze complex algorithms, or develop concepts such as programming languages, advanced searching and sorting algorithms, finite automata theory, distributed computing theory, R-Trees, fault-tolerance protocols, reliable communication protocols, digital signal processing algorithms, cryptographic theory, performance analysis and optimization, efficient caching, map-reduce, reliable security protocols etc. Excellent coders and computer engineers can usually use these theories in the systems that they are trying to build and do it quite effectively, but that is really the realm of the computer systems engineer or computer programmer.

Coding is critically important to being a computer programmer. Understanding how to encode the useful abstract concepts produced by the computer scientists into working code is also useful.

One big problem in computer science is that they often have to find solutions to math problems that have little utility in solving today's programming problems. Even if they coded a solution, nobody would really be able to use it. Think about digital signal processing theory. It was invented by folks like Fourier, Hilbert and Shannon, but the application to computerized DSP problems was not widely possible until about 20 years ago.

The big problem in computer education is that most people taught by computer scientists will not become computer scientists. But too many computer scientists don't get this. Coding may not be important to them, but if you are in their class, it is almost certainly going to be important to you.

Another big problem in computer education is that many true computer scientists lack the industrial experience to be useful in teaching software development. They are essentially trying to teach something that they really don't know. That causes them to lose credibility. Things that are important in an industrial setting just don't often register with some of these computer scientists.

The long and the short, coding is important for most people who become "computer scientists" because most of those people will become computer programmers and computer system engineers.

share|improve this answer
    
Excellent answer, straight to the heart of the issue. Problem is, you need to learn both: Computational Science and Software Engineering relevant to industry. Most universities teach one better than the other, usually the former - it is not overly easy to achieve the latter as a university is inherently a research institute, which promotes the former and has little to do with the latter. This is an issue in most practical fields. –  Orbling Dec 24 '10 at 9:23
add comment

Depends on the subfield the professor is in.

Anybody competent in numerical analysis is probably a Fortran whiz. Any AI professor will code in Lisp or Prolog or something like that.

In some of the more mathematical areas, there really isn't a need to code. I'd still be a touch suspicious, myself.

share|improve this answer
add comment

Sounds like hes more of a discrete mathematics kind of guy... just into the math and theory behind computer science. Take what these types of professors have to say with a grain of salt.

share|improve this answer
5  
I'm math enthusiast and algorithms addict. I always enjoy coding. However, algorithms are behind the coding. 1 pen and 1 paper is enough for algorithms and also theory of computation I think. What I do nowadays is just thinking and writing algorithms but not coding –  hilal Dec 22 '10 at 21:19
5  
Take what any professor says with a grain of salt. If he's a discrete math guy, take him seriously when he talks about discrete math, not when he talks about programming or software engineering. –  David Thornley Dec 22 '10 at 21:38
1  
Discrete maths guys are amongst the most important in the field, theory is implemented by coders, it does not need implementing to be proved correct. Pinch of salt indeed. –  Orbling Dec 23 '10 at 0:41
    
@Orbling And take what those who program say (a broad group) with a similar dose of suspended judgment and common sense. –  Mark C Dec 23 '10 at 4:58
    
@Mark C: Well yes, I would urge everyone to take everything that is said by anyone with those doses. –  Orbling Dec 23 '10 at 6:42
add comment

I would have to say "Logic is important"

share|improve this answer
2  
Ok, but how does this relate to the question? –  Robert Harvey Dec 22 '10 at 22:48
add comment

You can get away with understanding the theory only but I always found I understood algorithms and such 1000x better after having coded them (Bubble sort vs. Quicksort for example, it is great to know the Big-O but seeing it in practice with large data-sets gives you a certain real world appreciation for measuring computational complexity).

One interesting thing I have found is the more you study the theoretical aspets of computer science the easier coding becomes. At some point you stop thinking of things in a particular language but rather see them just as the broader concepts of computer sience.

share|improve this answer
add comment

This is like asking if all English professors should be capable of writing movies, TV series, novels, plays and poems to my mind. Similarly, imagine a Math professor that never uses numbers for an equally outlandish idea. That is to say that there are some basic elements that do give coding some importance in being able to teach basic Computer Science. Thus the professor should know basic language syntax and how to write programs as sophisticated as the courses that the professor is teaching. If the professor is teaching about compiler design and never wrote a compiler before, this would be a major problem. Imagine a chef cooking a cake that has never cooked or ate a cake previously. Aye carumba.

While I can see some advantages to implementing an algorithm to know it, I doubt it is a requirement. After all, one could wonder how far down the rabbit hole of implementation does one go in understanding how an algorithm is implemented? For example does someone have to take any algorithm and implement it under various paradigms like procedural, Object-oriented, and functional programming to really know it? Do they have to know how compilers translate all the code and move the bits around on an electron-by-electron level to be rather pedantic about it.


"I never code," does have an implication of containing the past as well as present tense in a way though. There can also be an implicit assumption of "coding" as a lowly thing that is below the professor for another way to view the statement that can carry a rather negative tone to it that may not go over well in some circles.

share|improve this answer
3  
English professors should know how to write movie scripts if they are teaching others how to write movie scripts. But all English professors should certainly be capable of writing a very good thesis, if not an actual book. –  Robert Harvey Dec 22 '10 at 21:40
2  
@Robert Harvey: The OP's professor didn't say he can't code, just that he doesn't. He could be a theoretical computer scientist who spends most of his time researching. As JB King pointed out, as long as he's not lecturing on, say, compiler design or software engineering, he could very well be experienced and competent within his field. –  mipadi Dec 22 '10 at 22:28
    
@Robert Harvey: I think @mipadi has the point there, the professor just said "I never code", not that he is incapable. –  Orbling Dec 23 '10 at 0:57
    
@JB King, @Orbling: i'd bet that the quote is a translation, so don't overanalyse it literally. –  Javier Dec 23 '10 at 1:41
    
@Javier: Could well be, in which case it would be even less clear cut. –  Orbling Dec 23 '10 at 6:16
add comment

Your professor may be right a bit, in that to be a professor you don't need to code, but knows much about the theory. But that will not work outside the university perimeters.

share|improve this answer
add comment

Despite being a professional software developer, I got a degree in Mechanical Engineering.

You can be a good mechanical designer with very little experience building and machining parts, leaving that job to machinists. But knowing how to build and machine parts will make you a significantly better engineer, because you can predict difficulties involved with fabricating and assembling whatever you are designing.

The same goes for software. A "coder" is a machinist or technician, while a software engineer is, well, the engineer. For many places, one person does both jobs. It's not impossible, and for some very abstract issues, a "engineering only" position might work.

But for the vast majority, there is absolutely no benefit from refusing to code.

share|improve this answer
2  
But, as you said, you're a mechanical engineer, and you're talking about software engineering. Engineers build stuff. But the professor in question teaches computer science. –  mipadi Dec 22 '10 at 21:58
add comment

Unless you're contemplating and end to the halting problem, there's always a use for coding in every aspect of Computer Science.

The only CS class I took with absolutely no programming was theory. I'd imagine there are plenty of physicists out there who say, "I never experiment" but they're probably also the ones who say, "I never discover anything". And I'd be surprised if they care.

share|improve this answer
1  
In my Computing degree, (with a university in the top 10 internationally, so not something lame), I would say at least a third of my classes had no programming in them whatsoever. Computing is about far more than code. –  Orbling Dec 23 '10 at 0:59
    
Ok, well apparently I went to a top ten university as well, we may have even went to the same university and taken different classes based on our own likes or dislikes or gotten professors of one ilk or another at random. –  Peter Turner Dec 23 '10 at 1:05
add comment

As a Computer Science student i think that at first it's better to understand concepts that involve software development. Once you have learned the idea behind software and how does it interacts with a computer, then is time to start coding and dealing with specific implementation problems.

This is just like "Software Exceptions", at first you only deal with them because you did something that was not allowed to do. Then when you learn them, start doing the same with your code so to make it more verbose.

Well i think that people who dont care about concepts like those programmers who use Exceptions as a normal workflow in their applications. They know HOW but dont really get WHY.

share|improve this answer
add comment

I've got another idiom for your professor:

Those who can, do, those who can't, teach.

imo, talk is cheap. Anyone can endlessly jabber on about 'theory' and call it 'computer science'. But until its put into actual practice, theory isnt very useful because there's no way to validate it. I'd take a prof's opinion about something much more seriously if I knew he's actually solved a particular problem in code than if he's just regurgitating 'theory' which may or may not have any supporting evidence to back up his point of view.

share|improve this answer
6  
Einstein, Aristotle, Webster, Ayn Rand, Thoreau, Confucius and Booker T. Washington were teachers. What an uneducated statement. –  JeffO Dec 22 '10 at 22:10
4  
-1 For a hugely insulting comment to teachers. Oft quoted I know, but always ridiculous. The original remark by George Bernard Shaw was "He who can, does. He who cannot, teaches." from Man and Superman, 1903 - he also said: "To me the sole hope of human salvation lies in teaching." and was a co-founder of the London School of Economics (LSE), so you judge his view. –  Orbling Dec 23 '10 at 0:54
2  
Einstein never conducted a physical experiment in his life — he did describe a few thought experiments, which were carried out by others and (with one exception) came out exactly as he predicted. Would you say that Einstein had no "substantial accomplishment outside of the classroom"? Why do you assume that just because the professor hasn't implemented anything directly usable by end-users, he hasn't, say, researched a new algorithm that is used by programmers in the field? In fact, you seem to even assume that the professor's job is to teach students how to code! –  ShreevatsaR Dec 23 '10 at 6:37
3  
Dude, lots of my computer science professors (at MIT) were awesome and have contributed immensely to society, and they do "do stuff in their field" — a lot! But their field has very little to do with coding, and they code at most very rarely, if at all. (Seriously, do you expect someone working on quantum computation to write code for quantum computers which don't even exist?) You seem to have a very narrow view of computer science. (Remember it's computer science, not engineering.) –  ShreevatsaR Dec 23 '10 at 9:22
2  
@GrandmasterB: If a comp sci professor focuses on the theory of computation, it's highly likely he rarely has to write code. That doesn't mean he's not doing anything in his field -- he's likely publishing papers on computational theory! You're conflating programming with computer science. –  mipadi Dec 24 '10 at 5:05
show 14 more comments

Not the answer you're looking for? Browse other questions tagged or ask your own question.