The original C programming language was designed by Denis Richie at Bell Labs in 1972 as part of the development of the UNIX operation system. Since then, it and has become the workhorse of operating systems, embedded systems applications, real time applications and is ubiquitous in most IT infrastructures. C has a massive installed code base on almost every operation system and hardware platform from super computers to micro-devices.
The course has twin objectives. The first is to teach students the C programming language from both a code development and code maintenance perspective since many students will be faced the challenges of updating and modifying legacy C code. Students are taught how to design and develop a C application but also how to read and understand existing C code.
The second objective is to teach students the “C programming style.” C programmers have developed very characteristic ways writing code which leverages the strengths of the language while avoiding the pitfalls that naive C programmers fall into. For example, C code is written “close to metal” which means that C programs can exert fine grained control over hardware resources, a feature which allows for very tight and fast executables, but also allows programmers to create havoc when the code runs. As Richie said, “If we prevent programmers from doing dangerous things, we also prevent them from doing brilliant things.” The C programming style is a way of writing C code that has evolved to write safe, fast, and tight code.
Since its original release, C has undergone several revisions, the most notable being the ISO standard C99 in 1999 and the current standard C11 in 2011. The material in the course highlights the differences in the language in the various standards since students are likely to be working with not just the current standard but legacy code that may have been written to a different standard.
Over half of the class time will be spent doing hands on exercises or labs. The gcc compiler is used for the class in either a Linux or Windows environment with Eclipse as a visual IDE.
This is not an introduction to programming course so it is assumed that students have some basic programming experience and understand the fundamental concepts of functions, variable, data types that are common across programming languages. Students are also assumed to be comfortable working at a command line interface.
3 Days/Lecture & Lab
This course is for programmers who want to learn C programming.
Background to C