Skip navigation.

Contact Us

Department of Computer Science

Janssen Engineering
Room 236
PO Box 441010
Moscow, Idaho
83844-1010

phone: 208-885-6592
fax: 208-885-9052

e-mail:
dept chair
graduate info
undergrad info
sys admin
webmaster

CS Department Banner Graphic

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)