Course Content and Outcome Guide for CS 233U

Course Number:
CS 233U
Course Title:
Advanced C Programming
Credit Hours:
Lecture Hours:
Lecture/Lab Hours:
Lab Hours:
Special Fee:

Course Description

Advanced C programming including the preprocessor, advanced pointers, data structures, algorithms, and program structure. Lab exercises. Recommend: CS 133U, MTH 112, WR 121, CS 140U. Additional lab hours may be required. Audit available.

Intended Outcomes for the course

1. Follow the software development process (requirements analysis, design, implementation, and testing) in the development of multi-source code files
2. Employ good software engineering practices such as incremental development, data integrity checking, and adherence to style guidelines
3. Construct programs that demonstrate effective use of advanced c features including the pre-processor, pointers, void *, static and external variables, advanced data structures, and dynamic memory management
4. Select and model data using primitive and structured types
5. Analyze and construct effective algorithms
6.  Use development environment features including make processors, editors, debuggers, compilers, linkers, and libraries.
7. Identify and comprehend c documentation
8. Work well with peer developers in a team situation including mentoring and peer reviews

Outcome Assessment Strategies

1. Programming labs
a) students will complete software projects comprised of design, implementation, and test plans
b) designs will demonstrate the use of structured and modular design principles
c) implementation will demonstrate the use of components including alternation, repetition, modular programming, advanced data types, event-driven programming, and advanced i/o techniques
d) test plans will included black box and glass box testing strategies, and use of interactive debuggers
e) project work will include peer review
2. Examinations
a) students will demonstrate competency on exams which are constructed to demonstrate
i) written technical communication and effective use of terminology
ii) facility with programming language syntax and semantics
iii) ability to read and understand specifications, designs, and programs
iv) application of course concepts
v) individual capability in design, implementation, and testing of program components
3. Recitation and class discussions
a) students will actively participate in classes and demonstrate an understanding of class concepts through
i) class discussions
ii) in-class presentations

Course Content (Themes, Concepts, Issues and Skills)

1.    Software engineering process
a) problem solving
b) software development cycle
c) program design
d) algorithm analysis
e) program testing
f) cohesion and coupling
2. Computer science theory
a) data structures
b) program verification and validation
3. Technology and tools
a) c pre-processor (macros, directives, conditional compilation)
b) management of multi-source programs
i) multiple homogeneous source code files
ii) multiple heterogeneous source code files
c) pointers
d) static data structures (structure, enumeration, unions)
e) program optimization techniques
f) kernel i/o services
g) dynamic data structures with memory management
h) storage classes and declarations
i) oop - abstract data types
i) encapsulation
ii) creating an interface specification
iii) making a package reusable
j) low level programming
i) bit operations
ii) bit-fields
iii) bitwise operators
k) input/output - file input/output operations
l) writing portable code
m) error handling
i) debugging
ii) diagnostics
iii) errors
n) standard libraries
o) void * pointers
p) static and extern variables
q) command line input
r) advanced file i/o (binary, indexed, random access)
s) dynamic linking
t) bit processing
u) variable length function parameters
4. Communications
a) peer review
b) reviewing and writing technical documentation