csh, or the C shell, is a command interpreter with a syntax reminiscent of the C programming language.
Quoted from the Solaris csh man page:
csh, the C shell, is a command interpreter with a syntax reminiscent of the C language. It provides a number of convenient features for interactive use that are not available with the Bourne shell, including filename completion, command aliasing, history substitution, job control, and a number of built-in commands. As with the Bourne shell, the C shell provides variable, command and filename substitution.
csh first appeared in 2BSD, and was originally created by Bill Joy. While Bourne shells are more popular, csh-style shells are still fairly popular especially in the BSD community & academia.
tcsh is an an enhanced version of csh, almost all versions of csh
encountered nowadays are actually tcsh
.
Programming in csh is a controversial topic. For one viewpoint, see this article.