\documentstyle[10pt]{article}
\thispagestyle{empty}
\setlength{\topmargin}{-0.2 cm}
\setlength{\oddsidemargin}{-0.3in}
\setlength{\evensidemargin}{-0.3in}
\setlength{\textwidth}{6.8 in}
\setlength{\textheight}{9 in}
\input epsf
\parindent 0em
\parskip 1 em
\newlength{\s}\setlength{\s}{1in}
\newlength{\m}\setlength{\m}{2in}
\newlength{\B}\setlength{\B}{4in}
\newcommand{\pg}{\pagebreak}
\newcommand{\vs}{\vspace}
% \newlength{\piname}\settowidth{\piname}{Stephen E. Reichenbach}
\begin{document}
\begin{center}

CSCE 156--Introduction to Computer Science II \\
Fall Semester 1995
\end{center}

1995--96 Catalog Data: CSCE 156: Introduction to Computer Science II.
Credit 3.  Continuation of CSCE 155.  Continued development of
algorithmic, problem solving and programming skills with
emphasis on modular methodology in an object--oriented
programming environment.  Elementary introduction to program
analysis and correctness.  String processing, including
concatenation, substrings, matching.  Internal searching and
sorting algorithms.  Simple linear and linked data structures,
including stacks, queues and linked lists.  Laboratory
assignments consist of larger, more complex problems than CSCE
155, with emphasis on systematic development of systems of related
programs and procedures.

\begin{tabular}{lp{0.1in}p{5in}}
Textbook:  &  &
 Rick Decker and Stuart Hirshfield, {\em Working Classes:
Data Structures and Algorithms Using C++}, PWS Publishing,
1995. \\[0.4em]

Coordinator: &  &
Susan Wiedenbeck, Associate Professor, CS\&E \\[0.4em]

Goals: &  &
 The primary goal is to prepare the student for further studies
in computer science.  This course is designed to provide freshmen the
concepts of object oriented programming along with the skills associated
with program analysis, design, and maintenance using the language C++,
which is popular in the workplace as well as academic environment.
Students gain experience with more substantial programming projects
and complete their knowledge of C++ syntax.
\end{tabular}

Prerequisites by topic:

1. A logical, problem solving rigor as provided by mathematics
 through at least some calculus. \\
2. Familiarity with C++ syntax. \\
3. Programming structures including functions, selection and
 repetition statements, multiple file compilation units. \\
4. Data structures including atomic data types, compound data
 types (implemented in classes), basic use of pointers (for lists)
 and references. \\
5. Basic software engineering skills. \\
6. Introductory knowledge of inheritance and polymorphism.

Topics:

1. Preliminaries: Concept of abstract data type. Review of arrays,
 pointers, classes.
 (6 classes) \\
2. Lists: Linked list implementation.  Introduction to big O notation.
 (6 classes) \\
3. Strings: Inheritance.
 (8 classes) \\
4. Other linear structures: Stacks and queues, postfix arithmetic.
 (6 classes) \\
5. Recursion.  Sorting and searching algorithms.
 (8 classes) \\
6. Trees.
 (6 classes) \\
7. Specialized trees: AVL trees and B-trees.
 (5 classes) \\

Computer Usage:

1. Four or five substantial programming projects involving program
 and class analysis,
 maintenance, debugging, design, and coding.

Laboratory projects:
%% (including major items of equipment and instrumentation used)
None.

ABET category content as estimated by faculty member who prepared this
course description: \\
\mbox{} \hspace{1in}
        Engineering topics: 3 credit or 100\% \\

Prepared by: Charles Riedesel   \hspace{3in}    Date: June 25, 1996
\end{document}

