Dr. Paul A. G. Sivilotti
Associate Professor
Computer Science and Engineering
Site Navigation
Syllabus
Short Description
Software engineering as applied to various classical computer systems programs; assemblers, macroprocessors, loaders; major group project involving the design and implementation of systems software; communication skills emphasized.
Course Objectives
The aim of this course is for students to:
- 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 audience 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.
This course is designated as a GEC 3rd writing course. As such, there is significant emphasis placed on students developing and applying writing skills in the context of the computing field.
Prerequisites
CSE 321 (or CSE 314); CSE 360 (or ECE 265); and a second writing course.
Textbooks
- (recommended) System Software — An Introduction to Systems Programming, Leland Beck
- (recommended) The Practice of Programming, Brian Kernighan and Rob Pike
- (recommended) A Writer's Reference, Diana Hacker
Team Work
The lab assignments in this class are designed to model software engineering in a real workplace. The lab assignments are to be done in teams of four or five which you are to form yourself during the first week of class.
Each team member must do equal work across the entire set of labs. If a team member is not doing equal work it is the responsibility of the other members to let me know that a problem exists. Most often we can head off problems before it is too late.
If there is evidence that a team member is not providing the same level of effort or does not have the same level of involvement or understanding of the system as the rest of the team, different grades may be assigned. However, if one person opts to do most of the work, there is no guarantee that he or she will receive a better grade. If he or she hindered the experience of others in the group, a lower grade may be assigned to that person.
Each student must have the opportunity to do both coding and documentation over the course of the quarter. With each lab submission, the group must identify the primary authors of each major document as well as the primary developers of the implementation. Over the course of the quarter, each team member must be identified as a lead contributor on at least one major piece of documentation (ie responsible for either the user's guide or programmer's guide), and at least once as a developer (ie responsible for code).
Basic Grading Scheme
Grades are calculated based on 3 labs and 2 quizes. Each student's grade is calculated based on the following allocation:
| Lab 1 | 20 % |
|---|---|
| Lab 2 | 20 % |
| Lab 3 | 15 % |
| Midterm | 20 % |
| Final | 25 % |
An 80 or higher is an A (or A-);
70-79 is a B (+/-);
60-69 is a C (+/-);
50-59 is a D (+/-);
and anything less than 50 is an E.
Please note the following:
- You must pass the exam part of the course (midterm + final) in order to pass the course.
- A class participation penalty of 5 % will be assessed if I can not match your name and face by the end of the quarter.
Lab Grading
The labs will be graded primarily by the TA. You will need to arrange a time when the whole team can meet with the TA during the times set aside for interactive grading. He or she will have their own set of test programs with which to evaluate your systems. You will have the opportunity to explain your system so that a fair grade can be assigned.
The grade for a lab consists of 2 parts: the group grade (usually accounting for 90% of the grade) and the individual grade (accounting for the remaining 10%). The breakdown for each lab is slightly different (and is given in the lab handout), but they are variations on the following theme:
| Group | User's Guide | 20 % |
| Programmer's Guide | 20 % | |
| Coding | 10 % | |
| Test Plan | 10 % | |
| Grader's Testing | 20 % | |
| Meeting Minutes | 10 % | |
| Individual | Peer Review | 10 % |
Please note the following:
- I reserve the right to adjust individual grades if there is evidence that certain group members have not been working effectively with other members of the team. However, it is the entire group's responsibility to detect and report such situations early in the quarter.
Late Policy
Written documenation and lab implementations must be submitted by the beginning of class on their due date. Assignments will be accepted up to 24 hours late with a 10% penalty, up to 48 hours late with a 25% penalty, and up to 72 hours late with a 50% penalty.
Disability Statement
Any student who feels he/she may need an accommodation based on the impact of a disability should contact the intructor privately to discuss their specific needs. The Office for Disability Services at 614-292-3307 in 150 Pomerene Hall will help in coordinating reasonable accommodations for students with documented disabilities.
Academic Misconduct
Making any use of any work (code, design, documentation), or any part of work done by others (current or in the past) is a violation of course rules. If you have any concerns about whether something you are considering doing is appropriate, ask first! All academic misconduct will be dealt with according to university procedures.