computer-science

What is recursion and when should I use it?

One of the topics that seems to come up regularly on mailing lists and online discussions is the merits (or lack thereof) of doing a Computer Science Degree. An argument that seems to come up time and again for the negative party is that they have been coding for some number of years and they have never used recursion. So the question is...

What kinds of non-technical courses should a software engineer or computer scientist take?

I'm working toward a software engineering major, (business) management minor, and technical communication minor, and I was wondering: What kinds of non-technical courses should I try to take before I graduate that I might not get as part of my major or one of my minors? If you prefer to think about it this way, a more general question w...

Computer science textbooks

I would like to try the book question a little bit differently. My goal is to know what the community thinks are the quintessential computer science textbooks. <beginsadstory>I lost all of my computer science and math books from college in Hurricane Katrina in 2005. I greatly miss having my familiar tomes to refer to when topics and p...

What is a lambda (function)?

Hey guys, I see this term being used a bit, and a Google search didn't quite yield the most clarity, so help me out: for a person without a comp-sci background, what is a lambda in the world of Computer Science? UPDATE: marxidad, thanks for the reply--it seems to be climbing up in everyone's favor, so I'll likely accept it soon. Do you...

What languages should I learn before University?

This time next year I'll have my A level results and hopefully a Computer Science place at a university. At the moment I'm fairly competent in PHP but I'd like to use the next year to learn something new that would help me next year. So what languages would benefit me at the moment? At the moment I'm thinking about picking up Java, or p...

What is 'Currying'?

I've seen references to curried functions in several articles and blogs but I can't find a good explanation (or at least one that makes sense!) ...

What is a 'Closure'?

I asked a question about Currying and closures where mentioned. What is a closure? How does it relate to currying? Additional: Kyle's answer is great but to my poor procedural/OO mind Ben Childs answer is really useful. ...

Recommended resources for computer science theory.

When I return to university in December (I'm on an internship now), I'll be taking a course in Computer Science theory. However, I'm not a very theoretical person, and abstract concepts have been difficult. This course will cover topics such as regular, context-free and computable (recursive) languages with finite state machines, pushdo...

Modern books on algorithms

My book shelf is occupied by following books: Data Structures and Algorithm (Alfred V. Aho, Jeffrey D. Ullman, John E. Hopcroft) Introduction to Algorithms 2n edition (Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Cliff Stein) Art of Computer Programming, The, Volumes 1-3 (Donald E. Knuth) Are there any modern good books ...

Good text on order analysis

As a self-taught computer programmer, I'm often at a loss to estimate the O() value for a particular operation. Yeah, I know off the top of my head most of the important ones, like for the major sorts and searches, but I don't know how to calculate one when something new comes along, unless it's blindingly obvious. Is there a good web ...

Hardest Programming discipline?

I know this is an open-ended question, but I am very curious about how the collective minds of brilliant programmers here think about this one? What do you think is the most difficult/challenging/demanding programming branch or discipline? For example, AI, Graphics, Networking, cryptography, etc. ...

Spatial Data Structures in C

I do work in theoretical chemistry on a high performance cluster, often involving molecular dynamics simulations. One of the problems my work addresses involves a static field of N-dimensional (typically N = 2-5) hyper-spheres, that a test particle may collide with. I'm looking to optimize (read: overhaul) the the data structure I use ...

Prim's Algorithm, Priority First Search and Minimum Spanning Trees (MST)

Prims algorithm is a priority first search algorithm. If this is the case, why does Sedgewick refer to the MST algorithm for a sparse graph as the priority first search algorithm but the MST algorithm for a dense graph is called Prim's algorithm? The complexity differences between the two only arise because (a) the properties of sparse ...

What is a multitasking operating system?

What are the characteristics of a multitasking operating system? What makes it multitasking? Are there non-multitasking operating systems? ...

What is round-robin scheduling?

In a multitasking operating system context, sometimes you hear the term round-robin scheduling. What does it refer to? What other kind of scheduling is there? ...

What are futures?

What are futures? It's something to do with lazy evaluation. ...

What do you think about the loss of MIT's 6.001 (SICP) course?

MIT abandoned its legendary 6.001 (Structure and Interpretation of Computer Programs) course and replaced it with 6.00, 6.01 and 6.02 in the new curriculum. They are AFAIK about Python and robots. What is your opinion about the loss of SICP and Scheme in computer science education? Is it a necessary step in the right direction or a bad m...

What is a y-combinator?

A y-combinator is a comp-sci concept from the "functional" side of things. Most programmers don't know much at all about them, if they've even heard about them. What is a y-combinator? How do they work? What are they good for? Are they useful in procedural languages? ...

What can a coder-at-heart do to survive earning a Computer Science degree?

I'm one year away from finishing my bachelor's degree in Computer Science, and I'm not about to give up or anything. However, I've also spent time working in the field, developing software that people actually use, and I've absolutely loved it. I do understand the importance of learning theory, and I have been doing so for the past 3+ ...

What can a coder-at-heart do to survive the "real world"?

This is sort-of in response to a question posted earlier. Almost all programmer's I've met seem to enjoy writing business software, esp. doing web development. A friend of mine said he would never go into game development because there's too much math in it (I love math - to me, it's just like programming. I couldn't understand how someo...