Instructor: Elliot Koffman
Office: Room 311, Computer Building
Phone: 204-1913 on-campus (1-1913)
eMail: koffman@joda.temple.edu
World-wide web home page: http://joda.cis.temple.edu/~koffman
Office Hours: Tuesday-Thursday: 10-12 and by appointment
Catalogue Description:
Corequisites: First-level Core Math Course
Introduction to programming methods, software engineering, and procedural
and data abstraction. Coverage will include top-down design and modular
programming, software development process, module documentation including
preconditions and postconditions , debugging and testing programs. Data
types covered will include simple data types, arrays, structs, and strings.
Programming techniques include at least one technique for searching and
sorting an array and an introduction to file processing. Coverage wi ll
include an introduction to the use and implementation of abstract data
types as C++ classes.
Textbook: Introduction to Problem Solving, Abstraction, and Design
Using C++, 3rd Edition, By Frank Friedman and Elliot Koffman
Course Objectives: This is a first course for majors. The course
introduces computer science majors to abstraction and design techniques
that will provide a foundation for further study in computer science. Emphasis
will be placed on designing e fficient, readable, well-documented solutions
to programming problems using good design techniques. You will learn how
to write program solutions using a group of independent function modules.
You will be introduced to several algorithms which are fundame ntal to
programming such as linear search and selection sort. You will also be
introduced to the object oriented programming paradigm and learn about
the use of classes and objects. Finally, you will learn C++ language elements
which support the course ob jectives.
What is expected of you: You must attend class and the scheduled
laboratory section for this course and do the assigned readings (see the
syllabus). You must complete all of the assigned laboratory projects in
a timely fashion. All lab assignments should be emailed to your lab instructor
before lab on the day they are due. Labs turned in after lab begins will
be considered late! Your grade will be reduced by 1 point (out of 10) per
day for a late lab. You must get a passing grade on the lab assignments
to pass the course. For each lab, you must submit a design document along
with the program and a test of the program (once we have shown you how
to do this!). The design document will show the steps you took to design
the algorithm and will follow the software development method used in the
text.
You must plan to spend time outside of the scheduled laboratory working
on your programs. Often, students find they need 10 or more additional
hours outside of lab to complete the assignments. You should check the
web site for this course (under my home page) at least once a week to see
any hints, instructions or updates to assignments.
Your grade will be based on a combination of exam scores, lab grades,
class work and assignments. Exam scores will count for about 70% of the
grade - labs, class work, and assignments will count for the rest.
Group work: It is okay to work together to discuss a problem and get ideas for its solution. However, everyone is responsible for doing his/her final design for a problem and for its program solution. It is plagiarism to turn in someone else's work as your own. If you are caught doing this (with or without the other person's permission, you may receive a failing grade for the course. SEE DOCUMENT ON LAB POLICY FOR DETAILS OF THIS AND OTHER LAB RELATED ISSUES.
Reading: Chapter 1 - sections 1.4-1.6, Chapter 2 - all sections
Processing a C++ program, Software Development Method, overview of
C++, variables and constants, data types and expressions, assignment statements,
cin, cout, introduction to classes and object oriented programming.
Week 2 Functions - Reading Chapter 3
Functions, libraries, functions with input arguments, structure charts,
argument list correspondence, introduction to string and money class.
Assignment: Turn in review questions for chapter 2, p. 94
Lab1 is due.
Week 3 Selection structures - Reading chapter 4
data type bool, logical expressions, if statements, nested if statements,
switch statement
Assignment: Turn in review questions for chapter 3, p. 152
Lab 2 is due.
Week 4 Loops - Reading chapter 5
counting loops, sentinel loops, while statement, for statement, do-while
statement
Assignment: Turn in review questions for chapter 4
Lab 3 is due.
Exam on chapters 2 and 3
Week 5 Functions and output arguments - Reading chapter 6
Output Arguments, call-by-value versus call-by-reference, recursive
functions
Assignment: Turn in review questions for chapter 5
Lab 4 is due.
Week 6 Simple data types - Reading Chapter 7
type conversions, casting, character data and functions, boolean
functions, enumeration types
Assignment: Turn in review questions for chapter 6
Lab 5 is due.
Exam on chapters 4 and 5
Week 7 Streams, Files, Formatting - Read Chapter 8
streams, standard streams, files, string input/output.
Assignment: Turn in review questions for chapter 7
Lab 6 is due.
Week 8 Arrays and Structs - Read Chapter 9, 9.1 - 9.4
arrays, array input and output, array arguments
Assignment: Turn in review questions for chapter 8
Lab 7 is due.
Exam on chapters 6 and 7
Week 9 Arrays and Structs - Read Chapter 9, 9.5 - 9.8, 12.2
searching an array, sorting an array, structs, arrays of structs
Assignment: Turn in review questions 1 - 5 for chapter 9
Lab 8 is due.
Week 10 Software Engineering - Chapter 10, Sections 10.1, 10.3, 10.4,
10.5, 10.7: Data Abstraction, Abstract Data Types, Analysis of algorithms,
testing, ethics
Assignment: Turn in review questions 6 - 10 for chapter 9
Lab 9 is due.
Exam on chapters 8 and 9
Week 11 Modeling Data with Arrays and Structs, and Classes - Chapter
12, Section 12.1, 12.2, hand outs: multidimensional arrays, arrays of structs
and classes, building Abstract Data Types with structs and arrays of structs
Assignment: Turn in review questions 1 - 3 for chapter 10
Lab 10 is due.
Week 12-13 Introduction to Classes - Reading Chapter 11, sections
11.1 - 11.5, class definition, implementation, sample classes, arrays of
classes
Assignment: Turn in review questions 1 - 5 for Chapter 12
Lab 11 is due.
Week 14 More on Arrays of Classes
Lab 12 is due.
Exam on Chapters 10, 11, and 12.1 - 12.2