The University of Arizona

Courses

CS 127B: Program Design & Development


Objective
  • Continuation of CS127A. Expose students to data abstraction and dynamic data structures and ensure that they can produce well- designed programs (150-250 lines of code)
Pre-Conditions
  • [CS127a] functions, stream I/O, value parameters
  • [CS127a] primitive types (int, double, bool), operators (assignment, arithmetic, logical, relational), precedence of operators, if/else
  • [CS127a] for loops, scope/lifetime of variables, reference parameters
  • [CS127a] basic design issues: information hiding, specification vs implementation, avoiding redundancy, minimizing dependencies
  • [CS127a] while loops, using simple predefined classes (member functions, constructors)
  • [CS127a] file and character processing, details of strings and streams
  • [CS127a] arrays and typical array operations: initialize, insert, delete, simple sorting and searching
  • [CS127a] structures, complex data structures (e.g., arrays of structs)
Post-Conditions
(Topics)
  • [1 week] review of complex C++ static structures, design issues
  • [2 weeks] recursion, including backtracking [CS330] [CS340] [CS372] [CS425] [CS452] [CS453]
  • [3 weeks] pointers and linked lists [CS330] [CS340] [CS425] CS452] [CS453]
  • [3 weeks] binary trees [CS330] [CS340] [CS453] [CS460]
  • [1 week] data abstraction, classes as a mechanism to encapsulate an ADT, implementation of a class given a specification [CS330] [CS340] [CS460]
  • [1 week] fundamental structures and their implementation as classes: stacks, queues, other list structures [CS330] [CS340] [CS342] [CS425] [CS452] [CS453]
  • [1 week] hashing [CS452] [CS453]
  • [1.5 weeks] efficiency, elementary understanding of big-Oh [CS344]
  • [1.5 weeks] optional advanced topics (e.g., recursive decent parsing, inheritance) final exam)



Authored by Stuart Reges.

Last revised on 29 April 1997 by John Hartman.