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