CS 270 System Software
Total Credits: 3 cr
Course Coordinator: Robert Rinker
URL: http://www.cs.uidaho.edu/~cs270
Current Catalog Description: Productivity tools such as make. Debugging
tools. Linking and loading. Shell programming and scripting languages. Process
management and inter-process communication. Concurrent programming using threads.
Exception handling. Prereq: CS121 and CS150.
Textbook: Graham Glass and King Ables, UNIX for Programmers and Users,
Third Edition, Prentice Hall or equivalent text.
References:
- Andrew Tanenbaum, Operating Systems: Design and Implementation, Prentice
Hall
- Kay Robbins and Steven Robbins, UNIX Systems Programming: Communication,
Concurrency and Threads, Prentice Hall
- Randal Bryant and David O'Halloran, Computer Systems: A Programmer's
Perspective, Prentice Hall
- Oliver Jones, Introduction to the X Window System, Prentice Hall
- Richard Stevens, Bill Fenner and Andrew Rudoff, UNIX Network Programming:
the Sockets Networking API, Addison Wesley
- Andrew Oram and Steve Talbott, Managing Projects with Make, O?Reilly
- Ellen Siever, Stephen Spainbour and Nathan Patwardhan, PERL in a Nutshell,
O'Reilly
Course Goals: Provide students with the tools necessary to use and
understand the programming environment that the UNIX operating system provides,
to become more productive and knowledgeable with program behavior. Understand
the operating system-to-program interface. Use of shell and scripting languages.
Use of common program development tools. Systems programming. Use of common
operating system functions such as signal handling, pipes, and sockets.
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 in the Course: : (duration) (CC2001 BOK reference)
- UNIX File and File System Organization (3 hours) (OS8)
- Basic UNIX Commands (2 hours) (OS2)
- Advanced UNIX Commands (4 hours) (OS2)
- UNIX Shells, shell programming (4 hours) (OS12)
- Scripting languages ? PERL (4 hours) (OS12)
- Networking Concepts (4 hours) (NC2)
- C Programming Environment (4 hours) (SE3)
- Programming tools - make, ld, gdb, prof, etc. (4 hours) (SE3)
- Systems Programming ? Files, Process mgmt, signals, sockets (4 hours)
(OS3, SE2)
- System Administration Concepts (2 hours)
Laboratory projects (specify number of weeks on each):
- Write a C program that can create a list of arguments similar to the
ARGV list done by the shell (2 weeks)
- Write a shell script to implement an operation such as creating a ?directory
backup? (2 weeks)
- Write some C functions, and determine their size and memory locations
by analyzing the a.out file (2 weeks)
- Create a makefile for a C main program and subroutines that successfully
creates an executable. (2 weeks)
- Write a program that implements an OS command such as ?ls? that will
list the files in a directory, and will attempt to determine the type (executable,
ASCII, DOS, or binary) of file by examining its contents (3 weeks)
- Write a program that uses sockets for inter-process communication such
as one that plays the game ?rock, scissors, paper.? Two programs will be
involved ? one to determine a guess from the user and the computer, that
passes the guesses to a ?judge? program that determines the winner and keeps
score. (2 weeks).
- Write a PERL script that controls the execution of a set of C programs.
(2 weeks)
Estimated Curriculum Category Content:
| Area |
Core |
Advanced |
Area |
Core |
Advanced |
| Algorithms |
0.5 cr |
|
Data Structures |
|
|
| Software Design |
1 cr |
|
Prog. Languages |
0.5 cr |
|
| Computer Arch |
|
|
Other |
1 cr |
|
Oral and Written Communications: There are no written exams or oral
presentations required for this course.
Social and Ethical Issues: None.
Theoretical Content: None.
Problem Analysis: Students do exercises that require them to more
completely understand the run-time environment of their programs.
Solution Design: Students must solve problems that are similar, but
using several different types of tools ? shells, C programs, and scripting languages.
Course Outcomes: The following list documents the course outcomes
and crossreferences them to the BSCS program
outcomes. The letter at the beginning of each reference identifies the program
outcome supported. The numbers sequentially identify the course outcome for
this course. After completing CS 270 a student should be able to:
- Understand the role the computer operating system plays in providing
resources and services to the software developer and user. (a-1)
- Determine the operating system resources and services that can be employed
in the solution of a given problem. (b-1)
- Use the tools and environment provided by the operating system for the
development of a software solution. (c-1)
- Select and incorporate the operating system resources, services and
functions that should be employed as part of the design of a software system.
(c-2)
- 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-1)
- Use shell and Perl scripts to control program execution. (i-2)
- Understand the program development environment, including the design
of multi-module programs. (i-3)
- Use programming tools to aid in the software development process, including
the compiler and its options, the make utility, librarian, loader, and debugger.
(i-4) .
- Understand some of the basic principles of networking and the internet,
and how to access a network from the operating system. (i-5)
- Employ scripting languages such as the shell and Perl to manage files
and control the operation of a software system. (j-1)