ECS 032C: Implementation of Data Structures in C

Subject
ECS 032C
Title
Implementation of Data Structures in C
Status
Active
Units
4.0
Effective Term
2020 Fall Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Programming in the C language. Use of basic UNIX tools. Writing good programs of increased complexity and efficiency. Implementation of data structures in C. Not open for credit to students who have completed course ECS 036C. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 032B C- or better
Credit Limitation
Not open for credit to students who have completed course ECS 036C.

Summary of Course Content

  1. Programming in C
    1. Basic syntax and difference of C and other languages such as Python.
    2. Data types: scalar, single and multidimensional arrays, character strings, structs.
    3. Use of system files such as library and “include” files.
    4. Use of I/O including the use of file manipulation and command line arguments.
    5. Pointers and dynamic memory allocation.
    6. Functions: declaration and calls, & and * operators, parameters, function call stacks.
    7. Modular programming: programs composed of multiple C files and headers, overview of the compilation/linking sequence
  2. The UNIX Environment
    1. First-level understanding of the nature of UNIX processes and job control.
    2. UNIX hierarchical file system.
    3. UNIX utilities (e.g. find, grep, sort, uniq, head, etc.).
  3. Software Engineering & Tools
    1. Version Control (e.g. git).
    2. Program development and use of the UNIX “make” program to organize them.
    3. Software debugging techniques.
    4. Other Tools (e.g. IDEs, ssh clients, linters, etc.).
  4. Implementation of Data Structures
    1. Singly-and doubly-linked lists.
    2. Stacks and queues.
    3. Trees (e.g. binary, AVL, Red-Black etc.).

Illustrative Reading
J. Hanley and E. Koffman, Problem Solving and Program Design in C, 8th edition, Pearson, 2015.
W. Shotts, The Linux Command Line 2nd Edition, No Starch Press, 2019.

GE3
Science & Engineering

Overlap
The course overlaps with ECS 36A and ECS 34 in the coverage of UNIX but does not include shell scripting. The course overlaps with ECS 34 and ECS 36B in the coverage of version control and ECS 36B in the implementation of some data structures; however, ECS 34 and ECS 36B cover the implementations in C++. The course overlaps with ECS 36C in the implementation of some more advanced data structures but ECS 36C implementations are in C++.

Course Category