CIS 67 Computers and Computer Programming for CIS Majors
 
 

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 ASSIGNMENTS: to be done BEFORE class.

Week 1 Overview of C++ and intro. to Classes and Objects

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