There are a number of different computer programming courses, some very standard and others targeted to certain industries. In general, most computer programming courses can be classified by the language being taught, the eventual application of the knowledge or by the specific niche systems being taught. Basic programming language classes teach only a single language in progressively more in-depth sessions, usually categorized by the required experience for that class. Classes that are teaching toward a specific application or industry, such as security or network systems, are usually not for introductory students and require a fair amount of knowledge not just about programming, but also about general computer science. Niche classes can be targeted toward teaching how to write programs for a single type of machine, like a mainframe, or for a specific abstract programming interface (API), and generally require a strong background in computer science, though not necessarily computer programming.
General computer programming courses at an entry level largely deal with either the overarching concepts of computer programming in a language-neutral way, or alternately focus solely on teaching how to program in one specific language. These types of courses are important to have a solid foundation on which to build into more specific areas of knowledge. Some courses might bundle more than one language, such as HyperText Markup Language (HTML) and Hypertext Preprocessor (PHP), into a single lesson plan if the languages are tightly bound in practical use.
There are many computer programming courses that teach toward a specific usage of programming. Several of these types of courses exist, most with prerequisites in a programming language or computer science. Such courses are being developed constantly as new technologies emerge. Examples are programming for neural networks, graphics and imaging, real-time systems, and security systems.
Niche computer programming courses seek to train students in how to use a single system or methodology that might not be immediately applicable to broader programming subjects. These classes almost always have language requirements, because the target systems usually employ only a single language. Some courses do not have language requirements, however, especially if the niche system uses its own proprietary language. These courses can involve programming for one type of mobile device, special engineering systems or even aviation systems.
There also are computer programming courses that are unique in their field. Such classes can involve theoretical concepts, attempts to develop programming languages that use natural grammar or even programming on experimental machines. These courses can provide valuable insights into how computers and programming languages work, but they sometimes do not provide any practical knowledge and instead remain in the realm of theoretical programming.