CMPU-235: Software Development Methodology

Fall, 2000

Instructor

Chris Welty

Contents

  • Announcements/Messages
  • Readings
  • Student Groups
  • Background
  • Course Schedule and Projects
  • Grading Policy
  • Messages:

    Schedule:

    Week Topic Chapters Assignment
    9/4 Introduction and Review Overview, Review, C++ Templates, Encapsulation STL 1-5 Homework #1
    9/11 Containers, Pointers, Iterators STL 6
    9/18 Advanced Data Structures Strings, Vectors STL 7,8 Homework #2
    9/25 Lists STL 9
    10/2 Stacks, Queues, Deques STL 10,11 Homework #3
    10/9 Sets, Trees STL 12,13
    10/16 Fall Break
    10/23 Searching, Sorting STL 14 Project #1
    10/30 Priority Queue, Maps STL 15,16
    11/6 Hash Tables, Matrices STL 17,18 Project #2
    11/13 Advanced Object Modeling Objects, Encapsulation, Classes UML 1-3 
    11/20 Taxonomic Relationships
    Thanksgiving Break
    UML 12 Project #3
    11/27 Part-Whole Relationships UML 13-14 Homework 4
    12/4 Relationships UML 17

    Books:

    Groups:

    For the second half of the semester, all the projects will be in groups. You will be working through the steps, from start to finish, of developing a complete software system. The groups were determined by me, using a chaotic process that approaches randomness.

    Background:

    This course will concentrate on advanced data structures and modeling using object-oriented (OO) technology. One of the biggest problems with OO languages today is that there is not a widespread methodology in use, leaving programmers and designers on their own to interpret how these languages should be used. Without sufficient background in the conceptual reasons that various OO facilities exist, programmers typically use them incorrectly as programming tricks or hacks. We will address this problem directly by first studying the foundational data structures used in Computer Science, and then the techniques and principles of Object Oriented Design.
    While the course will involve much programming in C++, the purpose of this course will not be to teach C++, but the more general facilities and uses of object oriented languages for design, such as: encapsulation, abstraction, inheritance, information sharing/hiding, and the object centered approach to software development. In addition, we will discuss programming in the large (without actually doing it), in hopes of at least seeing the problems this implies.

    Another important experience this course will provide is working in groups. The main assignment will be a group assignment, requiring work in groups of no less than three.

    Grading:

    50%:  Homeworks
    30%:  Projects
    20%:  Final Group Project

    Academic accommodations are available for students with documented disabilities. Please schedule an appointment with the instructor early in the semester to discuss any accommodation that may be needed for the course. All accommodations must be approved through the Office of Disability and Support Services (ext. 7584) as indicated in their accommodation letter.