DEPARTMENT OF COMPUTER SCIENCE

CALIFORNIA STATE UNIVERSITY AT SAN BERNERADINO

Spring Term 2001
Course No. : CSCI 599
Course Title : Foundations of Software Systems
Prerequisite : CSCI 330 or consent of instructor
Units : 4 units
Meetings : 2:00-3:50 pm JB358 MW (lecture)
Instructors Office Phone EMail Link Office Hours
Dr. R. Botting JB 341 880-5327 dick@csci.csusb.edu MW 4:30-5:30, TTh 2:30-4:30
Dr. A. Concepcion JB 343 880-5330 concep@csci.csusb.edu TTh 2:00-4:00
Dr. Y. Karant JB 344 880-5329 ykarant@csci.csusb.edu MW 4:00-6:00
Dr. K. Zemoudeh JB 347 880-5348 kay@csci.csusb.edu MW 2:00-4:00 or by appmt.

Website: http://www.csci.csusb.edu/dick/cs599/

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:

  1. To study how processes are managed and controlled.
  2. To study how memory is allocated and managed.
  3. To study how I/O devices are allocated and controlled.
  4. To study how files are managed.
  5. To learn the different standards in preparing software documentation.
  6. To learn a software process and apply it to a software project.
  7. To learn an object-oriented analysis and design (OOA/D) methodology.

Texts:

References:

Requirements:

  1. The course will be taught by a team of faculty. Drs Botting and Concepcion will teach software engineering. Drs. Karant and Zemoudeh will teach operating systems.
  2. 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.
  3. Cheating will not be tolerated and the grade for cheating is zero. Your grade for the project will be a team grade.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. The following are the details of your grade for the course:
    DeliverablesWeighted 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%
  9. 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:

DATE TOPICS DELIVERABLES
02 Apr Operating Systems (Zemoudeh) Chap 1: Introduction Chap 2: Computer-System Structures Chap 3: Operating-System Structures
04 Apr Operating Systems (Zemoudeh) Chap 4: Processes Chap 5: Threads
09 Apr Operating Systems (Zemoudeh) Chap 6: CPU Scheduling
11 Apr Operating Systems (Zemoudeh) Chap 7: Process Synchronization
16 Apr Operating Systems (Zemoudeh) Chap 8: Deadlocks
18 Apr Software Engineering (Botting) Chap 1: Scope of Software Engineering Chap 2: The Software Process
23 Apr Software Engineering (Botting) Chap 3: Software Life-Cycle Models Chap 6: Introduction to Objects
25 Apr Software Engineering (Botting) Chap 9: Requirements Phase Chap 10: Specification Phase (Chap 3: Use Cases) (Chap 4: Class Diagrams: The Essentials) SRS
30 Apr Software Engineering (Botting) Chap 7: Reusability, Portability, and Interoperability Chap 11: Object-Oriented Analysis Phase (Chap 5: Interaction Diagrams) (Chap 6: Class Diagrams: Advanced Concepts)
02 May Software Engineering (Botting) Chap 12: Design Phase
07 May Operating Systems (Karant) Chap 9: Memory Management Architecture
09 May Operating Systems (Karant) Chap 10: Virtual Memory
14 May Operating Systems (Karant) Chap 11: File Systems Detailed Design
16 May Operating Systems (Karant) Chap 12: I/O Systems
21 May Operating Systems (Karant) Chap 13: Mass-Storage Structure
23 May Software Engineering (Concepcion) Chap 4: Teams and the Tools of Their Trade (Chap 7: Packages and Collaborations) (Chap 10: Physical Diagrams) Unit Test Plan
28 MayHoliday
30 May Software Engineering (Concepcion) Chap 5: Testing
04 Jun Software Engineering (Concepcion) Chap 13: Implementation Phase Integration and System Test Plans
06 Jun Software Engineering (Concepcion) Chap 14: Implementation and Integration Phase
11 Jun Software Engineering (Concepcion) Chap 15: Maintenance Phase
13 Jun Finals Day 2:00-4:00 pm, JB 358 Documented Source Code Maintenance Manual Presentation & Demo