CIS560: Elements of Computer Systems Programming
Description
Software engineering as exemplified by various classical computer
systems programs; assemblers, macroprocessors, loaders; group
participation in a major software project involving the implementation
of various systems programs.
Level, Credits, Class Time Distribution, Prerequisites
Level |
Credits |
Class Time Distribution |
Prerequisites |
UG |
5 |
Four one-hour lectures |
CIS 313 or 321 and 360 or EE 265. |
Quarters Offered, General Information, Exclusions, etc.
- Au, Wi, Sp, Su
- Course includes a large software project to be completed by students working in teams.
Objectives
- Master using and implementing each component of the the assemble-link-load-relocate-execute
process.
- Master using bit manipulation of integers and ascii characters to be able to emulate a simple computer that handles both integer and character I/O.
- Master analyzing the intended audicence for a written document and to write an audience profile.
- Be familiar with group project organization techniques including conducting group meetings, recording minutes, and tracking project progress.
- Be familiar with writing a relocating linking loader.
- Be familiar with using different addressing modes.
- Be familiar with subroutine linkage at the assembly level.
- Be familiar with using compilers, debuggers, word processors, editors, diagram drawing programs, and profilers to design, build, and document a large software project.
- Be familiar with using macros, including recursive and nested macros.
- Be familiar with defining the purpose (persuade, inform, etc.) of a written document and select the appropriate rhetorical devices; and to write several
pieces of documentation that have different purposes and to use appropriate
organization to tie them together.
- Be familiar with proof-reading own and others' writing.
- Be familiar with emulating in software, the fetch-decode-execute cycle of a CPU.
- Be familiar with the concept of a `machine' and its implementation
via either translation or interpreation on lower level machines.
- Be familiar with making engineering decisions involving tradeoffs (e.g., space-time tradeoffs in choosing a symbol table implementation).
- Be familiar with the importance of communication skills, including oral, email, and other written documents such as meeting minutes.
- Be familiar with software testing strategies including black-box versus white-box, unit testing, integration testing, top-down versus bottom-up testing, and construction and implementation of a test plan.
- Be familiar with the economic and social forces that often drive technology to explain developments in system software.
- Be familiar with using one structured approach to large software design to carry out a large group project.
- Be exposed to issues in systems programming as opposed to applications programming.
- Be exposed to memory management issues including caching, virtual memory, etc.
- Be exposed to one-pass macro processing techniques.
Relationship to ABET Criterion 3 |
Relationship to CSE Program Objectives |
a |
b |
c |
d |
e |
f |
g |
h |
i |
j |
k |
XX |
XX |
XXX |
XXX |
X |
X |
XXX |
|
|
|
XX |
|
1a |
1b |
1c |
2a |
2b |
3a |
3b |
3c |
4a |
4b |
XXX |
|
XX |
|
XXX |
XXX |
|
X |
XX |
X |
|
Texts
- ``System Software - An Introduction to Systems Programming,'' L. Beck. Third Edition, Addison-Wesley Publishing, 1996.
- Writing Reference (recommended): ``A Writer's Reference,'' D.
Hacker. Second Edition, St. Martin's Press, 1992.
Topics
Week | Topics | Week | Topics |
1 |
Introduction; Detailed review of WIN560 machine |
5 |
Machine Levels and Systems Software |
1-2 |
Intro. to Assemblers |
6 |
Midterm Exam |
3 |
Assembler Design |
6 |
Loaders - Simple Load Schemes; Absolute, Relocating |
3 |
Assembler design review meetings |
7 |
Linking Loaders, Early vs. Late Binding |
4 |
Writing For Computer Systems Professionals |
8 |
Writing in Computer Science |
5 |
Emulater design |
8 |
Macros and Macro Processors |
4 |
Interpreting vs. Translating |
9 |
Optional topics TBA |
4 |
Assembler Grading |
10 |
Review and project discusion |
Grading Plan
Lab Assignments |
50% |
Midterm Exam | 20% |
Final Exam | 30% |
Important Note: A passing grade on both the lab assignments and the exams is required in order to in order to recieve a passing grade for the course.
Preparer Information and Date:
Syllabus prepared by Paul Sivilotti, last modified March 31, 1999.