![]()
CIS 067 Section 1
A First Course in Problem Solving, Abstraction and
Design using C++
Course Syllabus
Fall, 2001
Frank Friedman
Wachman Hall 302
![]()
I. Prerequisite Skills:
Math 74 with a grade of C or better or two years of high school algebra and one year of trigonometry. This is the first required course for CIS majors at Temple. It assumes some prior programming background in a high-level programming language equivalent to a one year course in high school or a one semester college course in FORTRAN, C, or Pascal. It is a fast paced course and should not be taken by students having no programming background. Students with no background are encouraged to take CIS C071 before taking this course.
What This Course Is Not: This course is not intended as a general introduction to computing or as a computing tools introduction. You might wish to consider CIS C055 if your interests lie in these areas. If you have not taken a programming couirse, you may wish to take CIS C071 before embarking on this couse.
II. Catalog Description:
An introduction to programming methods, software engineering, and procedural and data abstraction. Topics include top-down design and modular programming, the software development process, component documentation, including preconditions and postconditions, debugging and testing programs.
Data types covered include simple types, arrays, and structs, system-defined types such as streams and strings, and a handful of user-defined types such as money, and geometric shapes. An introduction to file processing in C++, simple searching and sorting, and an introduction to abstract data types, the C++ class, and C++ templates. Several modest sized programs using completed class components may also be examined.
III. Course Objectives:
Students will be expected to develop problem solving skills and strategies for analyzing a problem statement, designing and programming (in C++) a solution to the stated problem, and documenting and testing the solution. Simple tools such as the Data Requirements Table, Program Structure Chart, and algorithmic Pseudo-code will be relied on heavily to aid in this process. Appropriate use of these tools will be as important as the finished product itself. Emphasis will be placed on the identification and modeling of problem domain data elements essential to a problem solution and the step-wise refinement of algorithms that manipulate this data.
Students will study examples of programs developed in this manner and develop their own small to medium size programs.
The principle programming language of implementation is C++. For the most part, C++ will be introduced by example. Programs involving the use of data structures and algorithms and emphasizing software design approaches using abstract data types and object-oriented paradigms will be required. One group project will be assigned.
By the end of the course, you should be able to understand and practice an appropriate software development methodology including the following:
IV. Texts:
Friedman and Koffman, Problem Solving, Abstraction and Design using C++ (third edition), Addison-Wesley.
V. Other Reading:
Savitch: Problem Solving with C++ (second edition), Addison-Wesley.
Deitel and Deitel, C++ How to Program, Prentice Hall.
Material that may be found under www.cis.temple.edu/~ingargio/
Other information including programming assignments and computer user documentation distributed in class or located on the World Wide Web (or both).
VI. Course Outline and Reading Summary
PART I
A. Introduction to Computers, Programming, and Software Construction (1 week)
Assigned Reading:
Friedman/Koffman: Preface, Chapter 1; Appendixes A
through D (look over).
Other reading as assigned (related to the computer
system to be used)
Exercises and Programming Problems:
Assignment Number 1:
Computing Facilities and Software Tools Using Simple Functions to Display Letters
B. An Introduction to C++ (2 weeks)
Assigned Reading: (Section B)
Exercises and Programming Problems (Section
B):
Assignment Number 2:
Models as approximations. Errors and better models. Powers of ½. Adding one thin
dime many times.
C. Procedural Abstraction - Introduction to Functions (1.5 weeks)
Assigned Reading:
Friedman/Koffman, Chapters 3 (except 3.7) and 6 (except
6.7).
Exercises and Programming Problems:
Assignment Number 3: A
simple hand-held calculator
Assignment Number 4: (A
Game for Children Fraction Arithmetic)
FIRST EXAM (0.5 weeks)
PART II
D. I/O Streams and Files (2 weeks)
Assigned Reading:
Friedman/Koffman, Chapter 8.
Exercises and Programming Problems:
Assignment Number 5:
Banking Problem (I/O and Computation)
E. Arrays -- Searching and Sorting (1.5 weeks)
Assigned Reading:
Friedman/Koffman, Chapter 9
Exercises and Programming Problems:
Assignment Number 6:
Bank Problem - this time with with Arrays and Structs (requiring the computation of a
median value)
SECOND EXAM (0.5 weeks)
PART III
F. Defining Classes An Introduction (2 weeks)
Assigned Reading:
Friedman/Koffman, Chapters 10 and 11.
Exercises and Programming Problems:
Assignment Number 7: The
Fractions Problem using Classes OR The Dice Simulation Problem (using arrays and Classes)
Assignment Number 8: The
Dice Simulation Problem (using Constructors with Dynamically Allocated Arrays)
G. Recursion (1 week)
Assigned Reading:
Friedman/Koffman, Chapter 6, Section 7.Exercises and Programming Problems:
Assignment Number 9: Factorial Problem - Revision for Tracing Execution
H. Modeling Data with Arrays, Structs and Classes (2 weeks)
Assigned Reading:
Friedman/Koffman, Chapter 12 (except 12.6).
Exercises and Programming Problems:
Assignment Number 10:
(to be determined)
I. Pointers, Dynamic Memory, and Linked structures (1 week)
Assigned Reading:
Friedman/Koffman, Chapter 14 (Sections 14.1
14.6)
Exercises and Programming Problems:
Assignment Number 11:
(to be determined)
FINAL EXAM
![]()