----------------------------------------------------------------------

CS 530 - Systems Programming

Stewart Stremler
Spring 2003

Where/When: BAM-346 on Mon & Wed 17:30 to 18:45
Prerequisites: CS237 & CS310 (Machine Organization+Assembly, & Data Structures) and the ability to program in C on a Unix machine
Office Hours: e-mail anytime
CG-542 by arrangement
email: stremler@cs.sdsu.edu
Required Text: System Software: An Introduction to Systems Programming by Leland Beck, pub by Addison Wesley
Requirements: 2 Exams. At least 2 Programming assignments.
Grading: Exams = 60%. Assignments = 40%.
Policy:
A A- B+ B B- C+ C C- D
92+ 90-91 88-89 82-87 80-81 78-79 72-77 68-71 60-67

No curve. Completion of all assignments IS REQUIRED to pass this course.

Notice:

All work (exams & assignments) MUST be your own. You may share assignment ideas with other students and you will work in 2-person teams, but you may not share files or actual work with other students outside your team. Unauthorized collaboration (cheating) and/or incomplete work is an automatic F in the class.

WWW Info: The URL for this class is: http://www-rohan.sdsu.edu/~stremler/CS530/ You should check it often (several times a week) for important course information & assignments. I will be using this method for dissemination of important course information throughout the semester.

Purpose: This course is designed to provide the senior year student in the undergraduate Computer Science program with an understanding of system level program, design, and issues. This course will cover the following operating systems topics (the numbers in [brackets] refer to the paragraph in the Beck text where the discussion can be found:

  1. Assemblers (3 weeks)
  2. Data structures and logic flow for a simple two-pass assembler [2.1]; Addressing modes -- program counter relative, base-relative, immediate, indirect [2.2.1]; Relocatable programs [2.2.2]; Literals [2.3.1]; Symbol-defining statements (EQU) [2.3.2]; Expressions [2.3.3]; Control sections and program linking [2.3.5]; One-pass assemblers [2.4.1]; Effect of machine architecture on assembler design [2.2,2.5].

  1. Linkers and loaders (2 weeks)
  2. Absolute loaders [3.1]; Program relocation [3.2.1]; Program linking [3.2.2]; Data structures and logic flow for a relocating and linking loader [3.2.3]; Library search to resolve external references [3.3.1]; Overlay programs; Linkage editors [3.4.1]; Dynamic loading [3.4.2]; Bootstrap loaders [3.1.2,3.4.3]; Effect of machine architecture on loader design [3.2,3.5].

  1. Macro processors (1 week)
  2. Data structures and logic flow for a simple one-pass macro processor [4.1]; Concatenation of macro parameters [4.2.1]; Generation of labels in macro expansions [4.2.2]; Conditional macro expansion [4.2.3]; Keyword and positional macro parameters [4.2.4]; Nested macro definitions [4.1.2]; Nested macro invocations [4.3.1]; Macro processing within an assembler [4.3.3]; General-purpose macro processors [4.3.2].

  1. Compilers (3 weeks)
  2. Structure of a simple one-pass Pascal compiler [5.1]; Grammars [5.1.1]; Lexical analysis [5.1.2]; Syntactic analysis (parsing) techniques -- recursive descent and operator precedence [5.1.3]; Simple code generation techniques [5.1.4]; Code optimization [5.2,5.3.2]; Storage allocation [5.3.3]; Compilation of structured variables [5.3.1]; Block-structured languages [5.3.4]; Multi-pass compilers [5.4.1]; Interpreters [5.4.2]; P-code compilers [5.4.3]; Compiler-compilers [5.4.4].

  1. Software engineering issues (3 weeks)
  2. Requirements and program specifications [8.1,8.2]; Constraints and error conditions [8.2.3]; Quality specifications [8.2.2]; Data flow diagrams [8.3]; Principles of modern design [8.3,8.4]; Isolation of design factors [8.3.3,8.4.1]; Data abstraction [8.3.3,8.4.1]; Testing strategies [8.5]; System and module documentation [8.1.3,8.2.1,8.3.1]

  1. Optional topics (3 weeks)
  2. To allow (at the instructor's option) greater emphasis on some of the above topics, the introduction of new topics, or discussion of the semester project.


The intent of this course is to understand systems programming in general. The Unix operating system will be used for instruction. All examples will be based upon the Unix operating system and ALL assignments must successfully compile and properly execute on the Unix operating system running on the host, rohan. Class accounts will be issued for rohan.sdsu.edu. This machine is available via the terminal rooms, Internet (via ssh, rlogin, telnet, and rsh), and modem access. Work may be done on your own system (if running FreeBSD/Linux/Solaris/MachOS/AUX/...) HOWEVER it must compile & run properly on rohan in order to get credit!


----------------------------------------------------------------------

Disclaimer
The information on this page represents that of Stewart Stremler and not necessarily that of San Diego State University. Stewart Stremler takes full responsibility for the information presented.

----------------------------------------------------------------------
ROHAN HOME SDSU

$Id: syllabus.html,v 1.13 2003/02/10 08:10:28 stremler Exp stremler $