DEPARTMENT OF COMPUTER SCIENCE
CALIFORNIA STATE UNIVERSITY AT SAN BERNARDINO
Winter Term 2007 - Cancelled for lack of enrollment
Course No. : CSCI 599
Course Title : Foundations of Software Systems
Prerequisite : CSCI 330 or consent of instructor
Units : 4 units
Meetings : 10:00AM-11:50AM M-W
Instructor:
Ernesto Gomez
egomez@csci.csusb.edu
office: JB 337
hours: TBA
(or by appointment)
web page: www.csci.csusb.edu/egomez/
Objectives:
The objective of the course is to introduce graduate students to two major topics in the
undergraduate computer science program: operating systems and software engineering. These two
topics involve the design and implementation of very large software systems.
An operating system is a collection of software that makes the hardware easier to use by a
programmer or a user. This collection of software consists of controlling and managing the
processor, memory, I/O devices, and files.
Software engineering is the study of how to produce very large, complex software projects
efficiently and on-time. The object-oriented approach in software engineering allows a software
engineer to reuse much of previous work and artifacts.
As a graduate student, if you did not have a computer science bachelors' degree in your
undergraduate studies, you are required to take this course. This course will count towards an
elective option in your M.S. program.
The specific objectives of the course are:
- To study how processes are managed and controlled.
- To study how memory is allocated and managed.
- To study how I/O devices are allocated and controlled.
- To study how files are managed.
- To learn the different standards in preparing software documentation.
- To learn a software process and apply it to a software project.
- To learn an object-oriented analysis and design (OOA/D) methodology.
Texts:
- Bruegge and Dutoit, "Object-Oriented Software Engineering" Second Edition,
Prentice Hall .
- Silberschatz, Galvin and Gagne, "Operating System Concepts" Seventh Edition, Wylie .
- M. Fowler, "UML Distilled: A Brief Guide to the Standard Object Modeling
Language," 3nd Ed., Addison-Wesley
References:
-
Stroustrup - originator of C++ - webpage
- S.S. Alhir, "UML in a Nutshell," 1st Ed., O'Reilly and Associates Pub., 1998.
- Tanenbaum and Woodhull, "Operating Systems Design and Implementation",Third EditionPrenticd Hall
- Journal and conference papers will also be cited in class.
Requirements:
- The course will have one programming project, a simulation of an operating system, to be
implemented during the term. The programming project is a medium size project. The class will be
organized into teams (5 students) that include a team leader and team members. The set of
deliverables are: SRS, software architecture, detailed design, unit, integration, and system test
plans, maintenance manual, documented source code, and a public presentation/demonstration of
the project.
- Cheating will not be tolerated and the grade for cheating is zero. Your grade for the project will be
a team grade.
- The simulation of an operating system will consists of two modules: the processor management
module and the memory management module. Each of these modules will have to be implemented
using the principles and concepts learned in operating systems.
- The development and production environment is Linux and the programming language to be used
is C++. You will need to learn how to use the software package Rational Rose/C++ in order to
carry out the object-oriented analysis and design (OOA/D) methodology using UML (Unified
Modeling Language). An alternative UML tool is :
DIA
/ ( DIA for windows).
- Deadlines will be observed. The penalty for submitting late work is 10% deduction per day late.
The student will require an additional 2-4 hours per week, outside of class hours, to work on the
software project.
- This is an integration course so the student is expected to do a lot of independent study. The
instructor is there only to guide the self-study and grade the work done by the student. The
instructor will not discuss all the details found in the course outline, this is the responsibility of the
student. The course involves several reading assignments and references other materials. You will
be responsible for reading them.
- The following are the details of your grade for the course:
| Deliverables | Weighted Percentages
|
|---|
| SRS | 10%
|
| Architecture | 10%
|
| Detailed Design | 10%
|
| Integration & System Test Plans | 10%
|
| Unit Test Plan | 10%
|
| Maintenance Manual | 10%
|
| Documented Source Code | 10%
|
| Presentation/Demo | 10%
|
| Correctness of Project | 10%
|
| Instructor & Peer Evaluation | 10%
|
- Grading:
| Final Average | Grade
|
|---|
| 94 and above | A
|
| 90-93.9 | A-
|
| 87-89.9 | B+
|
| 84-86.9 | B
|
| 80-83.9 | B-
|
| 77-79.9 | C+
|
| 74-76.9 | C
|
| 70-73.9 | C-
|
| 67-69.9 | D+
|
| 64-66.9 | D
|
| 60-63.9 | D-
|
| Below 59.9 | F
|
Course Outline:
(Note - Software Engeneering topics not updated)
| DATE | TOPICS
|
|---|
| Week 1 | Operating Systems | Chap 1+2: Introduction , Computer-System
Structures, Operating-System Structures
|
| | Operating Systems | Chap 3+4: Processes, Threads
|
| Week 2 | Operating Systems | Chap 5: CPU Scheduling
|
| | Operating Systems | Chap 6: Process Synchronization
|
| Week 3 | Operating Systems | Chap 7: Deadlocks
|
| | Software Engineering | Chap 1: Scope of Software Engineering Chap 2: The
Software Process
|
| Week 4 | Software Engineering | Chap 3: Software Life-Cycle Models Chap 6: Introduction
to Objects
|
| | Software Engineering | Chap 9: Requirements Phase Chap 10: Specification
Phase (Chap 3: Use Cases) (Chap 4: Class Diagrams: The Essentials) SRS
|
| Week 5 | Software Engineering | Chap 7: Reusability, Portability, and Interoperability
Chap 11: Object-Oriented Analysis Phase (Chap 5: Interaction Diagrams) (Chap 6: Class
Diagrams: Advanced Concepts)
|
| | Software Engineering | Chap 12: Design Phase
|
| Week 6 | Operating Systems | Chap 8: Memory Management and Architecture
| | Operating Systems | Chap 9: Virtual Memory
| | Week 7 | Operating Systems | Chap 10+11: File Systems Detailed Design
| | | Operating Systems | Chap 13: I/O Systems
| | | Operating Systems | Chap 12: Mass-Storage Structure
| | Week 8 | Software Engineering | Chap 4: Teams and the Tools of Their Trade (Chap
7: Packages and Collaborations) (Chap 10: Physical Diagrams) Unit Test Plan
| | | Software Engineering | Chap 5: Testing
| | Week 9 | Software Engineering | Chap 13: Implementation Phase Integration and
System Test Plans
| | | Software Engineering | Chap 14: Implementation and Integration Phase
| | | Software Engineering | Chap 15: Maintenance Phase
| | Finals Week | > | Documented Source Code Maintenance Manual
Presentation & Demo
| |
Project schedule
Week 3: Project informal specs
Week 5: Phase 1 SRS & Design in UML
Week 6: Phase 2 SRS & Design in UML
Week 7: Phase 1 Informal Demo
Week 8: Phase 3 SRS & Design in UML
Week 9: Phase 2 Informal Demo
Finals: Phase 3 (Entire Project) Formal Demo
Tursday: Phase 1 Informal Demo will be in JB356 lab
Project notes
updated 12/20/06