Basic programming skills are a fundamental requirement for many IT professionals. An entry-level programmer can have difficulty with jargon, and knowing where to start. Learning language syntax can be an uphill struggle when it cannot be put into context.As scripting languages become more powerful and available traditional tasks of a programmer are invading other IT functions. System administrators may have to write complex scripts which impact on mission critical systems, often with no programming experience or training.Support staff often have to communicate with development staff, and misunderstandings easily arise from cultural differences.This course gives a basic understanding of how computer systems work from a programmer's perspective, and how to use this knowledge to produce good code. It also enables technical staff who are not programmers to gain a perspective of software development.The course is language neutral and teaches general concepts. Python is used as the language in exercises, but examples will be shown in other languages.