The world of work requires computer scientists who can program in various languages, but also computer programs are one of the means by which computer scientists communicate complex ideas.

The following quote from a court case judgement in the US (Bernstein vs USDOJ, 1999) sums up the idea that computer programs are essentially a means of communicating ideas. The topic is cryptography, but the idea applies to almost all of computer science

In the past there was much debate about which programming language should students be taught. At Bristol we do not believe in such debates; students should learn as many as possible. Each language has its own niche. For example we put great emphasis on teaching C, this is because employers tell us that so many graduates arrive without knowing how to program in the language which is used to write operating systems and control the low level workings of a computer. However, you would not use necessarily use C to design a complex web or graphical application, so we also teach Java. But, neither C nor Java is suitable for writing the description of the workings of a microprocessor, so we also teach Verilog. As well as these we also teach Haskell as this is indicative of scripting languages used in other applications such as parsing. All of these languages are taught in our first year. Meaning students have the skills at the end of the first year to make a contribution in a number of application areas.

But where to start if you are still at school and new to programming? Luckily there are a number of good tools and introductory languages available.

We collect a small number here for your investigation.

Introductory Languages

Learning Full Blown Languages