Updated: 19 August 2002
| CSC 273
Advanced Applications of C |
4 cr. |
This course presents the C programming language, with emphasis on its particular
strengths and special features, including the rich variety of data types and operators,
pointers, and bit manipulation. Programming assignments will highlight applications
for which the special capabilities of C are particularly well suited, such as systems
programming, text processing, computer graphics, and real-time control. Three lecture
hours and two hours of scheduled laboratory per week, plus extensive programming work
outside of class.
Prerequisite: CSC 260.
Goals:
- CG1: to enhance students' skills in problem analysis and program design and
implementation through the presentation of complex applications;
- CG2: to present a thorough coverage of the C programming language, with emphasis
on its special features.
Objectives:
Upon completion of this course the student will have demonstrated the ability to:
- CO1: understand the syntax and special capabilities of the C language, including
the preprocessor, header files, pointers, operators, side effects, binary files,
and low-level features such as bit manipulation;
- CO2: select (or create) appropriate algorithms, data structures, and language
features for the solution of a complex problem, and use these ingredients effectively
to obtain a solution to the problem;
- CO3: employ a clear, consistent, readable style in the implementation of the problem
solution;
- CO4: produce clear documentation for the problem and its solution.
Topics:
- review of standards for algorithm design and programming style
- similarities and differences between C and other procedural languages
(such as Ada) and object-oriented languages (such as C++ and Java)
- the C programming environment:
- the standard C library
- header files
- the C preprocessor and preprocessor directives
(#include, #define, #ifdef, etc.)
- separate compilation and linking
- the run-time environment---the program text, data, stack, and heap areas
- C language syntax and features:
- the data type hierarchy
- identifiers, constants, variables
- declaration and initialization
- type conversions (explicit and implicit)
- operators: arithmetic, relational, logical, increment, decrement, bitwise
- functions and parameter passing; function declarations (prototypes)
- structure of a C program
- scope rules
- control flow: loops, conditional statements and branching
- input/output:
- files and streams
- the FILE type
- text I/O, interactive I/O, binary I/O, direct access I/O
- addresses and pointers
- arrays
- strings
- structures, unions, "variant records"
- efficiency considerations:
- choosing the most appropriate C implementation for the task at hand
- efficiency vs. readability
- applications (topics chosen from the following):
- string processing
- searching and sorting
- data compression
- data encryption
- numeric applications (including high-precision arithmetic)
- graph algorithms
- simulations
The emphasis of the course is on effective use of the C language
in conjunction with standard software engineering principles, including portability and
reusability of code. Specific methods and standards for problem specification,
algorithm design, coding style, testing, and maintenance will be employed.
Some features of the C++ language may be introduced and contrasted with the corresponding
C versions.
Six to eight substantial programs will be assigned; several of
these will build on earlier problem solutions. Assignments may be drawn from the
areas listed above and from other areas of specific interest to the instructor and/or
the class.
All programs must conform to departmental guidelines for algorithm
design and implementation. Laboratory reports must conform to the written guidelines
supplied by the instructor. Regardless of numeric average or individual grades on
assignments or examinations, a student will NOT be eligible for a passing grade in the
course unless he or she has submittted a laboratory report for every programming assignment
within the time-frame specified by the instructor.
The course grade will be determined using the following
approximate weights: laboratory reports - 60%; final examination - 20%; other tests and
written homework - 20%.
Bibliography:
- Anderson, Paul; Anderson, Gail. Advanced C: Tips and Techniques.
Hayden Books, 1988.
- Bronson, Gary; Menconi, Stephen. A First Book of ANSI C: Fundamentals of C
Programming. Second Edition. West Publishing, 1996.
- Collopy, David M. Introduction to C Programming. A Modular Approach.
Prentice Hall, 1997.
- Connelly, John. C Through Objects. Scott/Jones Inc., 1996.
- Daconta, Michael C. C Pointers and Dynamic Memory Management.
QED Publishing Group, 1993.
- Hipson, Peter. Advanced C. SAMS Publishing, 1992.
- Johnsonbaugh, Richard; Kalin, Martin. Applications Programming in ANSI C.
Third Edition. Prentice Hall, 1996.
- Koenig, Andrew. C Traps and Pitfalls. Addison-Wesley, 1989.
- Mark Williams Company. ANSI C: A Lexical Guide. Prentice Hall, 1988.
- Müldner, Tomasz. C for Java Programmers. Addison Wesley, 2000.
- Plauger, P. J. The Standard C Library. Prentice Hall, 1992.
- Plauger, P. J.; Brodie, Jim. Standard C. Microsoft Press, 1989.
- Schildt, Herbert. The Annotated ANSI C Standard.
Osborne McGraw-Hill, 1993.
- Schildt, Herbert. C: The Complete Reference. Fourth Edition.
Osborne McGraw-Hill, 2000.
- Sedgewick, Robert. Algorithms in C. Third Edition. Parts 1-4:
Fundamentals, Data Structures, Sorting, Searching. Addison-Wesley, 1998.
Salem State Home •
Computer Science Home •
Faculty •
Computer Studies Major •
Flow Sheet
Computer Studies Minor •
Courses •
Course Sequence Diagram •
Computer Laboratories
|