CS 530 - Systems Programming

Guy Leonard
Spring 2013 Syllabus

Where/When:

P-144 on Tue & Thur 5:30 PM to 6:45 PM

Prerequisites:

CS237 & CS310 (Machine Organization+Assembly, & Data Structures) and the ability to program in C++ on a Unix machine

Office Hours:

6:45 - 7:15 PM in GMCS-540; e-mail anytime

email:

g l e o n a r d (at) mail . sdsu . edu

Required Text:

System Software: An Introduction to Systems Programming by Leland Beck, pub by Addison Wesley

Requirements:

3 Exams. 3 Programming assignments.

Grading:

Exams = 60%. Assignments = 40%.

Policy:

No curve, 92+ A, 90-91 A-, 88-89 B+, 82-87 B, 80-81 B-, 78-79 C+, 72-77 C, 66-71 C-, 60-65 D

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 but you may not share files or actual work with other students. 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/faculty/gleonard/html/530.html. 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)

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)

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)

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)

Structure of a simple one-pass 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)

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)

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 the 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 rlogin, telnet, and rsh), and modem access. Work may be done on your own PC/Mac/other (if running FreeBSD/Linux/Solaris/MachOS/AUX/...) HOWEVER it must compile & run properly on rohan in order to get credit!


Last Modified: Jan 20, 2013