CS 270: System Software
Catalog Description: Programming productivity tools such as make. Debugging tools. Linking and loading. Shell programming and scripting languages. Process management and inter-process communication. Exception handling. Network concepts and network programming.
Type: Required for all CS majors
Total Credits: 3
Contact Hours: 3 lecture hours per week
Course Coordinator: Robert Rinker
Prereq: CS121 and CS150
Textbook: Graham Glass and King Ables, Linux for Programmers and Users, Third Edition, Prentice Hall or equivalent text.
Prerequisites by Topic:
- Basic programming skills (CS120-121)
- Understanding architectural concepts, including user versus kernel modes, and use of the system call mechanism (CS150)
Major Topics Covered
- UNIX File and File System Organization
- Basic UNIX Commands
- Advanced UNIX Commands
- UNIX Shells, shell programming
- Scripting languages such as PERL, Python, Ruby or similar
- Networking Concepts
- C Programming Environment
- Programming tools - make, ld, gdb, etc.
- Systems Programming: Files, Process management, signals, sockets
- System Administration Concepts
Note: The primary Student Outcomes addressed in this course are: (c), (i), and (k); all are reinforced.
- Understand the role the computer operating system plays in providing resources and services to the software developer and user. (a)
- Determine the operating system resources and services that can be employed in the solution of a given problem. (b)
- Use the tools and environment provided by the operating system for the development of a software solution. (c)
- Select and incorporate the operating system resources, services and functions that should be employed as part of the design of a software system. (c)
- Use operating system resources in software development, including the use of C/C++ system calls to do process and file management and inter-process communication. (i)
- Use shell and Perl scripts to control program execution. (i)
- Understand the program development environment, including the design of multi-module programs. (i)
- Use programming tools to aid in the software development process, including the compiler and its options, the make utility, librarian, loader, and debugger. (i).
- Understand some of the basic principles of networking and the internet, and how to access a network from the operating system. (i)
- Employ scripting languages such as the shell and Perl to manage files and control the operation of a software system. (j)