Which programming language should I use for BMI 214 / CS274?

This question is largely a matter of personal preference. We have some absolute requirements, and some suggestions. First, the requirements.

Requirement 1: Your code must run as a command line on a Leland UNIX system.
You are free to develop software anywhere, on any platform. However, we will only grade code that runs on Leland systems like the epic, fable, or saga machines. (More information on the various machines.)
Moreover, we strongly recommend that your code can be run from the command line. It should either be an executable file, an executable script, or in the worst case, a file that can be passed to another executable, as in:
Saga% matlab < MyProgram
or
Saga% tcsh MyProgram
In this latter case, you must EXPLICITLY state how to run the program in your readme file. If we are unable to run your code, your grade will suffer.
Requirement 2: Your code must be available as plain-text files.
If you wind up compiling your code into a binary, or you use a program which creates non-text files (e.g. Mathematica Notebooks), you must find a way to give us a plain-text version of your files so that we can verify the code and give partial credit in the case that your code is broken.
Requirement 3: Your code must be accompanied by a separate readme file.
We need a readme file that explains how to run your program, any interesting implementation details, and, if your code is broken, an explanation of the problem and a justification of why you deserve partial credit.

Any language which you can make these requirements is just fine with us. However, we do have some suggestions for your own good.

Suggestion 1: Use a high-level language.
Using a prototyping language like perl, python, or ruby (or, in a pinch, matlab) will make your life much easier. Sure, the code may be more "inefficient," but since you'll finish coding and debugging sooner, your "inefficient" code will probably run to completion sooner than if you took the time to write it in something like C. Additionally, when using a high-level language, you are usually more able to see the task in high-level terms, which often allows you to simply use better algorithms. Perhaps a hashtable would be most efficient, but it's so much trouble to use in C... well, in python, it's no trouble at all. These sort of savings really add up.
Note: Java lives in a grey area between high-level and low-level languages. It is much easier to use than C or C++, but it still shares a lot of that heritage, including the annoying compilation step. So if you are a java afficionado, feel free to use java. In the same vein, if you have your heart set on C, C++, or java, PLEASE use java, for your own sake. On the other hand, if you would need to learn java -- don't. Instead, learn python.
Suggestion 2: Partial credit is easier to get if we know the language, or if you comment really well.
Any working code that meets the requirements above will be fine. If, on the other hand, your code is broken, we TA's will have to actually look at the code and assign partial credit. It's much more likely that we will be easily able to grade semi-broken python, perl, or java than, say, prolog, scheme or ruby. If you really want to turn in broken code in an exotic language, then good comments are the key to partial credit. In fact...
Suggestion 3: Good comments are key for partial credit.
You are much more likely to get the partial credit you deserve if your code is commented so that we can easily see how much you accomplished.
Suggestion 4: Use python.
If you have no preference for languages, or don't already know a high-level prototyping language, it is highly recommended that you learn python. It has an interactive interpreter (like matlab or lisp) so it's really easy to develop for. It has a clean syntax for imperative and object-oriented code. It even borrows some of the fun stuff from lisp (simple anonymous lambda expressions)! There's a huge library of code for regular expressions, network IO, and really most anything else you could want.

So, in sumarry, We don't really care if you torture yourself using C for these assignments. Anything that complies with the requirements is fine. But you'll be a lot happier if you use the highest-level-possible language, trust us.