CS 270

From CS Wiki
Jump to: navigation, search

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

URL: http://www.cs.uidaho.edu/~rinker/cs270/index.html

Prereq: CS121 and CS150

Textbook: Graham Glass and King Ables, Linux for Programmers and Users, Third Edition, Prentice Hall or equivalent text.

Textbook URL: http://www.pearsonhighered.com/educator/product/products_detail.page?isbn=0131857487

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

  1. UNIX File and File System Organization
  2. Basic UNIX Commands
  3. Advanced UNIX Commands
  4. UNIX Shells, shell programming
  5. Scripting languages such as PERL, Python, Ruby or similar
  6. Networking Concepts
  7. C Programming Environment
  8. Programming tools - make, ld, gdb, etc.
  9. Systems Programming: Files, Process management, signals, sockets
  10. System Administration Concepts

Course Outcomes

Note: The primary Student Outcomes addressed in this course are: (c), (i), and (k); all are reinforced.

  1. Understand the role the computer operating system plays in providing resources and services to the software developer and user. (a)
  2. Determine the operating system resources and services that can be employed in the solution of a given problem. (b)
  3. Use the tools and environment provided by the operating system for the development of a software solution. (c)
  4. Select and incorporate the operating system resources, services and functions that should be employed as part of the design of a software system. (c)
  5. 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)
  6. Use shell and Perl scripts to control program execution. (i)
  7. Understand the program development environment, including the design of multi-module programs. (i)
  8. Use programming tools to aid in the software development process, including the compiler and its options, the make utility, librarian, loader, and debugger. (i).
  9. Understand some of the basic principles of networking and the internet, and how to access a network from the operating system. (i)
  10. Employ scripting languages such as the shell and Perl to manage files and control the operation of a software system. (j)