C/C++ Programming 1
Ray Mitchell

Prerequisites and Description

This course, although assuming no prior knowledge of C/C++ itself, it is not intended as an introductory programming course.  Rather, it is meant for those who either have some prior programming experience or have successfully completed an introductory programming course.  It is assumed that students are already familiar with such elementary programming concepts as variables, constants, arithmetic operations, and logical problem solving.

Topics covered include programming style, the preprocessor, data types, operators, expressions, flow control, functions, arrays, pointers, structures, classes, file I/O, standard library functions/methods, and more.  Complicated algorithms are not stressed although simpler ones are unavoidable.

C is inherently an "unsafe" language and although one goal of C++ is to provide a "safer" C, it can still be used in an unsafe manner.  Because of this much time is spent on technical details not covered in some beginning C/C++ courses, yet needed to write robust programs that run reliably and portably.  This knowledge can help reduce debugging time and the type of errors that are not caught by the compiler (such as array boundary violations and uninitialized pointers).  Some of these problems may not even be evident during testing but surface later after the application is released into production.  This is not a overview course but is, instead, a nuts and bolts detailed exposition of the language including its strengths, weaknesses, and pitfalls.

Due to the large amount of material covered in the short time available, the work required to successfully complete this course can be significant.  To obtain a passing grade students can expect to spend at least 3 homework hours for every classroom hour, although this can vary greatly depending upon ability and aptitude.