CS183: Software Design



->Courses
->CS183
->Objectives
-->Quiz 1
-->Lab 1
-->Lab 2
-->Project 1
-->Project 2
->Electronic Submission
->Old Exams
->C++ Examples
->MSVC++ Info
->STL Info
->MFC/GUI Info
->Software
->Tentative Schedule
->Support Forum
->Course Policies

[Courses]
[Rich][Home][Rich]
[PHome]

Spring Quarter 2003

At the time of the midterm exam, a student should be able to:

  • Describe the the software lifecycle and explain its iterative nature.
  • Describe the linked list storage configuration.
  • Compare and contrast the vector and list as container types.
  • Describe the purpose and use of iterators including the motivation for the four basic types (iterator, const_iterator, reverse_iterator, and const_reverse_iterator).
  • Write and interpret code using lists and iterators.
  • Describe the purpose and use of a reference.
  • Describe the purpose and use of a pointer.
  • Compare and contrast references vs. pointers.
  • Write and interpret code using pointers to access and manipulate objects.
  • Describe the purpose and apply the NULL pointer where appropriate.
  • Describe the similarities and differences between pointers and arrays.
  • Describe the basic properties of an abstract data type.
  • Explain the motivation for using abstract data types including the advantages of doing so.
  • Write and interpret the basic syntax for C++ classes.
  • Develop the prototypes and write C++ member functions for the following:
    • Constructors
    • Copy Constructors
    • Assignment/operator=
    • Destructors
    • Accessors
    • Mutators
    • Facilitators
    • Supporting operators
      • Arithmetic
      • Relational (e.g. operator==)
      • Stream (e.g. << and >>)
  • Explain the purpose and use of the this pointer.
  • Explain the effect the designation const, static, and friend have on functions.
  • Explain the C++ automatic type conversion mechanism and describe how to best take advantage of it.
  • Interpret and draw UML class diagrams and the syntax they use to describe the relationships between classes.
  • Use strategies like use cases and classification to determine appropriate classes, methods, and attributes as part of the design of a software solution to a problem.

At the time of the final exam, a student should be able do the above and be able to:

  • Explain the similarities and differences between static, automatic and dynamic objects and the locations in memory where they are stored.
  • Write and interpret code that uses new, delete, and delete [] to manipulate dynamic objects.
  • Describe a memory leak and explain why it is undesirable.
  • Understand the organization of multi-source file C++ code.
    • Describe which code should go in .h and .cpp files.
    • Describe the difference between declarations and definitions.
    • Demonstrate proper use of the #include and #ifndef compiler directives.
  • Describe the difference between the composition and inheritance mechanisms.
  • Describe the following inheritance issues:
    • Base class
    • Derived class
    • Early (static) versus late (dynamic) binding
    • Upcasting
    • Overriding
    • The keyword virtual
    • Pure virtual
    • Abstract base class
  • Interpret and write C++ code using inheritance.
  • Describe the differences between private, protected, and public access specifications.
  • Describe what a friend is.
  • Define the term polymorphism and be able to describe the C++ language mechanisms which implement it.
  • Interpret and write C++ code for functions and classes which use templates.
  • Interpret and write container classes (e.g. vector and list) using templates.
  • Interpret and write code which use and implements iterators.
    • Including the syntax for overriding operator++ and operator--.
  • Describe the C++ namespace mechanism and know how to build namespaces.
  • Describe the purpose and use of the C++ exception handling mechanism.
  • Interpret and write simple code using the C++ exception handling syntax involving throw, try, and catch.
  • Describe and apply common STL algorithms such as find, sort, etc.

Acknowledgement

This page is based on a similar set of pages developed originally by Dr. Henry Welch.

© 2003 Dr. Christopher C. Taylor Office: CC-27C Phone: 277-7339 Last Updated: Tue Apr 8 13:24:05 2003
I am responsible for all content posted on these pages; MSOE is welcome to share these opinions but may not want to.