View/Open

advertisement
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.
Download