|
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. |
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].
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].
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].
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].
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]
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!