Examines current topics and issues associated with computing engineering and systems.
TCES490 - Special Topic Introduction to C and Object Oriented Programming in C
This course is open to all CSS and CES students taking TCSS371. If room permits other students may take the course. It will be conducted as a workshop with programming project assignments that will correlate with those in 371.
This course will introduce students to the C language but in a way that will allow them to leverage on what they have already learned in their Java classes. C uses basically the same procedural syntax as Java so we will not spend time on this aspect except for those topics typically not taught in Java classes (e.g. bit-wise operators) but important for C programming. In this class we will cover the concept of Abstract Data Types (ADTs) as this is the basis for object oriented languages like Java and C++. The student will learn how to construct class-like data definitions that they can then use to design and build sophisticated software. A focus on the C data type, struct, and the use of pointers and memory allocation will give students a very strong basis for going on to learn much more C on their own. The class will start with a basic tutorial on getting started with C using the cygwin environment and the gcc compiler. Students are advised to steer clear of IDEs at this early stage as these too often act as crutches that get in the way of really learning to reason about programs. C provides a great window into the inner workings of computers and IDEs often are used as substitutes for insight and actually can prevent learning to be good programmers. After the student has worked in this primitive environment and earned the distinction of someone who can reason deeply about programs, then the use of an IDE becomes a productivity aid and is perfectly appropriate. Students who have Macs with the Mach OS can program in the Linux-like environment, but should be cautioned that not all programs are portable to the cygwin environment, so may not compile on the teacher's system.
Student learning goals
General method of instruction
Workshop with in-class exercises
Proficiency in Java is required, some knowledge of C helpful but not required.
Class assignments and grading
Programs and modules will be assessed as Excellent, Acceptable, Adequate, or Not Adequate (roughly A, B, C, and D work).
Instructor judgment of code quality and program structure.