CS 306-3
Linux/UNIX Programming
Catalog Description
This course will prepare students to develop software in and for Linux/UNIX environments. Topics to be covered include basic operating system concepts, effective command line usage, shell programming, the C language, programming development tools, system programming, network programming (client-server model and sockets), and GUI programming.
Prerequisite:
220 with a grade of C or better.
Objectives
1. To become comfortable using Linux/UNIX systems and gain proficiency with a basic set of commands and utilities.
2. To prepare students to develop software on and for Linux/UNIX systems.
3. To introduce the C language and get experience programming in C.
4. To become familiar with important Linux/UNIX library functions and system calls.
5. To gain an understanding of the inner workings of UNIX-like operating systems and lay a foundation for an advanced course in operating systems.
Course Outline
| Lectures | ||
| 1. | Introduction to Operating Systems
OS functions, OS types, components (kernel, drivers, etc.) command-line interfaces (CLIs) vs. GUI interfaces (GUIs) |
1 |
| 2. | Introduction to UNIX
Linux/UNIX history CLI: shells, bash, c shell GUI: X windows, window managers distributions and application software file system structure, pathnames, file permissions |
3 |
| 3. | Effective shell (CLI) usage 3
basic commands and utilities (cd, mkdir, rm, cp, cat, etc.) piping, redirection, filters (grep, sed etc.) command line editing, history, etc. shell startup files, aliases |
3 |
| 4. | Bash shell programming
variables, parameters metacharacters, shell expansions control constructs (if, for, while, etc.) I/O |
3 |
| 5. | GNU programming and development tools
gcc, make, gdb, etc. editors, IDEs, libraries |
1 |
| 6. | Introduction to C language programming
header files, preprocessor directives pointers, arrays, strings dynamic memory allocation command-line arguments, return values standard library I/O |
3 |
| 7. | System programming
files and I/O (open, close, read, write, dup, etc.) directories (opendir, readdir, etc.) processes (fork, exec, etc.) signals pipes and IPC (pipo, mkfifo, etc.) |
14 |
| 8. | Network programming
IP basics, TCP, UDP client-server model sockets system calls |
6 |
| 9. | GUI programming
curses/ncurses Qt and GTK toolkits event-oriented programming |
6 |
| Total | 40 | |