Introduction to object-oriented style of programming in C for Java programmers in a Linux/Unix environment. Basic structure of C programs, function pointers, variable argument lists, other generic programming techniques. Software building using make. Testing and debugging techniques. Case studies. PREREQ: COMPSCI 225 or PERM/INST.

Instructor: Alark Joshi


Office: MEC 302A

Office Hours: Tuesday, Thursday 3:00pm-5pm or by appointment

Teaching Assistant: Nathan Riskey


Office: CS Tutoring Center

Office Hours: Tuesday, Thursday 10:00am-1pm, Friday 10am-12pm, 2pm-4pm or by appointment

Grader: James Kress


Office: CS Tutoring Center

Office Hours: Monday 1:30pm-4pm or by appointment


COMPSCI 225 or PERM/INST. One year of Java programming. Knowledge of basic data structures like lists, hash tables, binary search trees. Knowledge of elementary sorting and searching algorithms (as introduced in COMPSCI 225). No prior knowledge of C programming language is needed.


  • 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.



The course will be graded on a PASS/FAIL basis. The evaluation will be based on successfully finishing every assignments. Typical assignments include rewriting basic data structures from COMPSCI 225 (doubly linked lists, hash tables, binary search trees) in C, writing shell scripts, developing a test harness etc.

Academic Dishonesty

As per the Office of Student Rights and Responsibilities, the Student Code of Conduct defines Academic Dishonesty as "A violation may include cheating, plagiarism, or other forms of academic dishonesty. All assignments submitted by a student must represent her/his own ideas, concepts, and current understanding or must cite the original source. Academic dishonesty includes assisting a student to cheat, plagiarize, or commit any act of academic dishonesty. Attempts to violate academic integrity do not have to be successful to be considered academic dishonesty. Academic dishonesty includes turning in substantial portions of the same academic work to more than one course without the prior permission of the faculty members."