COMPSCI 253: Object-Oriented Program Development in C 2-credit course with 2 lecture hours per week Course Coordinator: Alark Joshi Textbook(s) and Supplemental Material The C Programming Language (2nd Edition), Brian W. Kernighan and Dennis M. Ritchie, 1988. The UNIX Programming Environment, Brian W. Kernighan and Rob Pike, 1984. Catalog Description Introduction to object-oriented style of programming in C. Basic structure of C programs, function pointers, variable argument lists, other generic programming techniques. Building software with Make. Testing and debugging techniques. Case studies. (Pass/Fail.) PREREQ: COMPSCI 225. Required Goals for the Course Successful students will be expected to: • translate knowledge of object-oriented programming in Java to C • recognize and use common paradigms in C programming • design and develop programs of moderate complexity in C • use various tools to improve their productivity • use object-oriented techniques with system utilities Outcomes Addressed c. an ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs h. recognition of the need for and an ability to engage in continuing professional development i. an ability to use current techniques, skills, and tools necessary for computing practice k. an ability to apply design and development principles in the construction of software systems of varying complexity Outcomes Assessed: i Topics Covered Structure of C programs Using a C/C++ IDE (Eclipse) Data types, Control-flow statements, Operators and expressions Preprocessor and Scope Compiling, linking of C programs 131 Console Input/Output, File Input/Output (text, binary, sequential versus random access) Pointers and Arrays Structures Function pointers Variable argument lists: C style method overloading Case studies of object-style C programming. Generic linked lists, Doubly linked lists, Binary I/O example, Bit Manipulation etc. Creating and using shared libraries in C Method Overriding in C using loadable code (aka plugins) Make: object-oriented build process Using a debugger: gdb, ddd, Eclipse Memory debugging: valgrind Introduction to the GNU/Linux environment (login, File system hierarchy, and so on) Simple Shell Scripting Grading Even though this course is a Pass/Fail course, the letter grade is determined by the overall performance on the assignments and in-class quizzes. Students with an aggregate score of 75 and above receive a Pass grade in the course based on their performance on these activities: Activity Weight Quiz 30% Assignments 70% Curriculum Category Content (Credits) Area Core Advanced Algorithms Software Design Computer Architecture Data Structures Programming Languages 2 132