Winter Term 2007 - Cancelled for lack of enrollment
Course No. : cse 599
Course Title : Foundations of Software Systems
Prerequisite : cse 330 or consent of instructor
Units : 4 units
Meetings : 10:00AM-11:50AM M-W
Instructor: Ernesto Gomez
office: JB 337
hours: TBA (or by appointment)

web page:


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.




  1. 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.
  2. Cheating will not be tolerated and the grade for cheating is zero. Your grade for the project will be a team grade.
  3. 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.
  4. 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).
  5. 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.
  6. 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.
  7. 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%
  8. 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)
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