CS 530 Systems Software Fall 2014 1. Course: CS 530, Systems Programming 2. Lecture: 3.0 Units, 1730-1845 MW in WC-201 3. Instructor: Guy Leonard, gleonard@mail.sdsu.ed, Office Hours: 2015-2100 MW in GMCS 540 4. Required Text: Beck, Leland (1996), System Software: An Introduction to Systems Programming, 3rd edition; Addison Wesley, ISBN 0-201-42300-6, ISBN-13 978-0201-42300-6 5. CS 530 Course information: a. Course Description: Design and implementation of system software. Relationship between software design and machine architecture. Topics from assemblers, loaders and linkers, macro processors, compilers, debuggers, editors. Introduction to software engineering and review of programming fundamentals and object oriented concepts. Large project in object oriented programming is required. b. Prerequisites: Computer Science 237 and 310. c. Course Type: This is a required course for a B.S. in Computer Science 6. Specific goals for CS 530 a. Course-level student learning outcomes: 1. Ability to analyze algorithms and data structures required for assemblers 2. Ability to analyze algorithms and data structures required for linkers and loaders 3. Ability to explain what data structures are required for macro processors and how they manage parameters and variable name substitution 4. Ability to explain the different components of a compiler 5. Ability to analyze requirements for systems level project, then design, implement, and evaluate algorithms and routines which meet the requirements 6. Ability to read and analyze grammars for a given language; b. Relationship to Program Course Outcomes: 1. Ability to assess and determine performance and complexity trade-offs between one pass and two pass assemblers 2. Ability to assess performance and complexity trade-offs between absolute and relocatable linkers and loaders and evaluate how the machine architecture affects the design and implementation 3. **Ability to explain what data structures are required for macro processors and how they manage parameters and variable name substitution 4. Ability to assess performance and complexity of shift-reduce and recursive-descent parsers and evaluate error detection and halting condition logic 5. An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs
using principles of modern software design 7. Topics covered in this course: a. Assemblers: Data structures and logic flow for a simple two-pass assembler; addressing modes (program counter relative, base-relative, immediate, indirect); relocatable programs; literals; symbol defining statements (EQU); expressions; control sections and program linking; one-pass assemblers; effect of machine architecture on assembler design b. Linkers and loaders: Absolute loaders; program relocation; program linking; data structures and logic flow for a relocating and linking loader; library search to resolve external references; overlay programs; linkage editors; dynamic loading; bootstrap loaders; effect of machine architecture on loader design c. Macro processors Data structures and logic flow for a simple one-pass macro processor; concatenation of macro parameters; generation of labels in macro expansions; conditional macro expansion; keyword and positional macro parameters; nested macro definitions; nested macro invocations; macro processing within an assembler; general-purpose macro processors d. Compilers Structure of a simple one-pass compiler; grammars; lexical analysis; syntactic analysis (parsing) techniques -- recursive descent and operator precedence; simple code generation techniques; code optimization; storage allocation; compilation of structured variables; block-structured languages; multi-pass compilers; interpreters; compiler- compilers e. Software engineering issues for systems design Requirements and program specifications; constraints and error conditions; quality specifications; data flow diagrams; principles of modern design; isolation of design factors; data abstraction; testing strategies; system and module documentation 8. Course schedule: Lecture Topic Mon, 25Aug2014 Wed, 27Aug2014 Course overview; Introduction to SIC/XE architecture Introduction to SIC/XE assembler language/programming LABOR DAY (Holiday) Basic Assembler Introduction Basic Assembler Functions and Data Structures Machine Dependent Assembler Features – Addressing Mon, 1Sep2014 Wed, 3Sep2014 Mon, 8Sep2014 Wed, 10Sep2014 Chapter 1 1 2 2 2 Mon, Wed, Mon, Mon, Wed, 15Sep2014 17Sep2014 22Sep2014 22Sep2014 24Sep2014 Mon, Wed, Mon, Wed, Mon, Wed, Mon, Wed, Mon, Wed, Mon, Wed, Mon, Mon, Wed, Mon, Wed, Mon, Wed, Mon, Wed, Mon, 29Sep2014 1Oct2014 6Oct2014 8Oct2014 13Oct2014 15Oct2014 20Oct2014 22Oct2014 27Oct2014 29Oct2014 3Nov2014 5Nov2014 10Nov2014 10Nov2014 12Nov2014 17Nov2014 19Nov2014 24Nov2014 26Nov2014 1Dec2014 3Dec2014 8Dec2014 Mon, 8Dec2014 Wed, 10Dec2014 Fri, 12Dec2014 - 1530-1730 Modes Machine Dependent Assembler – Program Relocation Machine Independent Assembler Features Program Blocks and Control Sections Assignment #2 Due Software Engineering - System Specification; Exam #1 prep Exam #1 (Chapter 2) Software Engineering - Design Software Engineering – Design Review, Code Review Software Engineering – Testing, QA Loaders; basics and Absolute Loaders (Columbus Day) Loaders; Relocating Loaders Linking – Intro Linking - Data Structure, Logic Macro processors - Definition Macro Processors – Design; Exam #2 prep Exam #2 (Chapters 3, 4) Compilers; Introduction and Scanners Compilers; Shift-Reduce Parsing Assignment #2 Due Compilers; Recursive Descent Parsing Compilers; Semantic Analysis Intermediate Code Generation Lex and Regular Expressions (Thurs-Thanksgiving) No Class (day before Thanksgiving) Yet Another Compiler Compiler (YACC) Compilers Review Examples/demonstration of systems tools on Unix (rohan) Assignment #3 Due Review, Exam #3 preparation EXAM #3 (FINAL Exam) 2 2 2 Slides Slides Slides Slides 3 3 3 3 4 4 5 5 5 5 5 Slides Slides Slides Slides 9. Grading policies: Evaluation: You will take three exams and turn-in three (software) projects. The exams will be 60% of your grade; the projects will be 40% of your grade. Exams (3): There will be three (3), 75 minute exams, each one worth 50 points. The exams will be closed book, no-notes exams on the dates listed in the class schedule. Exam study guides (one for each exam) will be posted on Blackboard at least one week before the exam. Exams will consist of a mixture of multiple-choice, fill in the blank, and prose response styles of questions. Projects (3): You will be assigned three (3) (software) projects. You will work individually on two projects, each worth 26 points. You will work in teams of two on one large project, which will be worth 50 points. Final Grade: The final grade will be calculated by adding all points you earned during the course as follows (I do not use a curve): 231 - 252 = A 196 - 200 = C+ 226 - 230 = A181 - 195 = C 221 - 225 = B+ 166 - 180 = C206 - 220 = B 150 - 165 = D 201 - 205 = B000 - 149 = F 10. “Accommodating students with disabilities” statement: If you are a student with a disability and believe you will need accommodations for this class, it is your responsibility to contact Student Disability Services at (619) 5946473. To avoid any delay in the receipt of your accommodations, you should contact Student Disability Services as soon as possible. Please note that accommodations are not retroactive, and that accommodations based upon disability cannot be provided until you have presented your instructor with an accommodation letter from Student Disability Services. Your cooperation is appreciated.