GEORGIA PERIMETER COLLEGE

COMPUTER SCIENCE

TEACHING GUIDE -- CSCI 1301

 

 

I.                     Principles of Computer Science I

II.                   Prerequisite:        MATH 1101 or MATH 1113, and CSCI 1300 (was CSCI1401), both with a grade of C or better.

III.                 Text:       C++ An Introduction to Computing, Second Edition, J. Adams, S. Leestma, and L. Nyhoff, ISBN: 0-13-744392-7

IV.                Catalog Description:

This course is an introduction to the fundamental principles of computer science.  It emphasizes structured, top-down development and testing of computer programs. Major concepts include problem analysis, algorithm development, modular programming, software engineering, and good programming style using a fully-capable modern programming language.

 

V.                  Course Objective:

This course provides fundamental problem-solving, algorithm development, and programming skills in preparation for further study of computer science.

 

VI.                General Notes:

 

The material on a high level programming language and on algorithm development can be taught best as an integrated whole.  The instructor will decide the sequence of topics.  The emphasis of the course is on the techniques of algorithm development and programming with style.  Neither esoteric features of a programming language nor other aspects of computers should be allowed to interfere with that purpose.  Student assignments should utilize concepts of the course and should emphasize good programming style, documentation, and robustness.  They should use familiar applications including some that involve scientific and business applications.  Students should be encouraged to share their ideas while developing their own projects.  Students should not share code. Instructors will cover appropriate sections in text to comply with the Common Course Outline.

VII.              Course Outline

 

COURSE CONTENT

Overview of Computing and Programming

 

                Chapter 0:             Beginning Snapshots

1. Computing As A Science              

                A. Computer Science History

                B. Paradigms for Programming

 

2. Introduction to the Programming Environment                         

                A. Basic Commands

                                1. Use of the menu

                                2. Editing

3. Compiling/Linking/Executing

4. Debugging

5. One in class lab with instructor

 

Problem Solving and Algorithm Development

 

                Chapter One:         Overview of Computers and Problem Solving               

                Chapter Two:        Introduction to C++

1.             Problem Solving Strategies

A.                  Decomposition

B.                   Analogy

2.                    Problem Analysis

A.                  Understanding the Problem

B.            Specifying Input

C.                   Describing Output Specifications

3.             Algorithm Representation

A.                  Top-Down Design

B.                   Graphical Techniques

4.             Algorithm Refinements

5.             Algorithm Verification

A.                  Test Data

B.                   Walk Through

 

Program Structure and Software Engineering Concepts

                Chapter Two:        Introduction to C++

                Chapter Three:      More on the Elements of C++

1.             Program Structures                                                                             

2.                    Input/Output

                3.             Design

                A.            Abstraction

                                1.             Procedural

                                2.             Data

                B.            Top-Down versus Bottom-Up Design

                C.            Information Hiding

                D.            User Interface

                E.             Efficiency

                                                                                F.             Robustness

                4.             Common Programming Errors

                5.             Correctness

                                A.            Debugging Techniques

                                B.            Use of Stubs and Drivers

                                C.            Generating Test Data

                6.             Style

                                A.            Indentation

                                B.            Capitalization

                                C.            Choice of Identifiers

                F.             Documentation

                                A.            Internal Program Comments

                                B.            Design Specifications

 

Simple Data Types

                Chapter Two:                        Introduction to C++

Chapter Three:                      More on the Elements of C++

Chapter Six:                           The String Data Type and More Output Formatting

Chapter Twelve:                   The switch and enum Statements

1. Primitives

                a.             Integer

                b.             Float

                c.             Character

                d.             Boolean

2. Introduction to User-Defined Types

                a.             Global constants

                b.             enum Types

3. Operations

                a.             Arithmetic

                b.             Relational

                c.             Logical

d.                     Bitwise

 

Selection and Repetition Structures

Chapter Four:                        Selection Using if and if..else

Chapter Six:                           The String Data Type and More Output Formatting

Chapter Seven:                     The Three C++ Looping Constructs

Chapter Eight:                       More on Loops

Chapter Twelve:                   The switch and enum Statements

1.             Control Structures

                A.            Sequential

                B.            Selection

                C.            Repetition

                D.            Nesting

 

Modular Programming

 

Chapter Five:                        Functions and Program Design

Chapter Nine:                        Functions with Reference Parameters

Chapter Ten:                         More on Functions

                1.             Functions

A.            Predefined functions and library files

B.            Structure

C.                   Calls

D.                  Function overloading

2.             Parameters

A.                  Call by Reference

 

Text files

 

Chapter Eleven:                    Text Files and Streams

1.                    Text Files

 

 

 

I)                   Object-Oriented Paradigm

a)      Abstraction

b)      Abstract Data Types (ADT)

c)      Structured Data Types

d)      Function Templating

e)      Overloading

f)        Classes

 

Abstract/Structured Data Types

 

Chapter Thirteen:                 Arrays and the Vector Class

Chapter Fourteen:                                Searching and Sorting

Chapter Fifteen:                    Matrices

Chapter Sixteen:                   String Processing

Chapter Seventeen:             Structs

                1. Introduction to Structured Types

A.            Arrays and the Vector class

B.                   Strings

C.                   Structs

                2. Algorithms

A.                  Sorting

                1. Bubble Sort

                2. Selection Sort

B.            Searching

1.                    Linear Search

2.                    Binary Search

 

 

VIII.            Evaluation Methods

 

Details of grade determination are left to the instructor with the approval of the Department Head. Exams, assignments, and a final exam prepared by individual instructors will be used to determine the course grade.  The course grade must weigh examinations for at least 50% of the grade and programming assignments for not more than 50% of the grade.  Five to seven student programming projects must be assigned.  Testing must consist of at least two one-hour examinations and a comprehensive final examination.  The final examination must be weighted at not less than 25% nor more than 35%.

IX.           Effective Date:      August, 1998                                                        Approved Date:  May, 1998