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