You are on page 1of 6

Georgia Perimeter College

Mathematics/Engineering/Computer Science Division


TEACHING GUIDE
CSCI 1301 Principles of Computer Science I
I.

Course Title:

Principles of Computer Science I

II.

Prerequisites:

CSCI 1300 and MATH 1111 with a 'C' or better.

III.

Text:
978-1-118-08788-6

Big Java: Late Objects, Cay Horstmann, Wiley Publishing, ISBN

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. The
course includes an overview of computers and programming; problem solving and
algorithm development; simple data types; arithmetic and logic operators; selection
structures; repetition structures; text files; arrays (one-and-two dimensional); procedural
abstraction and software design; modular programming (including subprograms or the
equivalent).

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 the text to comply with the
Common Course Outline.
Assignments are left to the discretion of the instructor. Student assignments should
primarily involve programming exercises rather than other types of problems.

VII.

Course Content:
A.

Overview of Computing and Programming


Chapter 1: Introduction, sections 1.1-1.4
1.
Computer systems overview
2.
Programming languages and paradigms
a)
Procedural programming
b)
Object-oriented programming
3.
Introduction to the Programming Environment
a)
Integrated development environments
b)
Use of an IDE
c)
Editing
d)
Compiling/linking/executing programs
e)
Debugging programs, use of debuggers

B.

Problem Solving and Algorithm Development


Chapter 1: Introduction, section 1.7
Chapter 2: Fundamental Data Types, section 2.4
Chapter 3: Decisions, sections 3.5 3.6
Chapter 5: Methods, sections 5.6-5.7
Chapter 6: Arrays and Array Lists, sections 6.5-6.6
Chapter 8: Objects and Classes, sections 8.8-8.9
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/pseudocode
b)
Graphical techniques
c)
Algorithm refinements
4.
Algorithm verification
a)
Test data
b)
Walk through

C.

Program Structure and Software Engineering Concepts


Chapter 1: Introduction, section 1.5, 1.7
Chapter 7: Input/Output and Exception Handling, sections 7.4-7.5
Chapter 8: Objects and Classes, section 8.1
Common Errors callouts in all chapters
1.
Program Design Concepts
a)
Top-Down versus Bottom-Up Design
b)
Abstraction

2.

i)
Procedural
ii)
Data
c)
Information hiding
d)
User interface design
e)
Efficiency, robustness and correctness
f)
Common programming errors
g)
Debugging techniques
h)
Use of stubs and drivers
i)
Generating test data
j)
Data design specifications
Exceptions
a)
Handling exceptions
b)
Generating/throwing exceptions
c)
Exception handlers

D.

Basic program structure


Chapter 1: Introduction, section1.5
Chapter 5: Methods, sections 5.1-5.2
Appendix L: Java Language Coding Guidelines
1.
Style
a)
Indentation
b)
Capitalization and naming conventions
c)
Documentation and comments
2.
Basic class and method structure
3.
Importing predefined code libraries

E.

Simple Data Types


Chapter 2: Fundamental Data Types, sections 2.1-2.3, 2.5
Chapter 3: Decisions, sections 3.2, 3.7
Chapter 7: Input/Output and Exception Handling, sections 7.1-7.2
Chapter 8: Objects and Classes, sections 8.10-8.11
1.
Primitive data types
a)
Integer types byte, short, int, long
b)
Float types float, double
c)
Character types -- char
d)
Boolean type bool
2.
The String class
3.
Final, static, and non-static values
4.
Primitive and reference variable definitions
5.
Object instantiation using new
6.
Operations and expressions
a)
Arithmetic, arithmetic-assignment, and auto increment/decrement
operators
b)
Relational operators and methods
c)
Logical operators
d)
String operators and methods

7.

e)
Order of Precedence
Type casting

F.

Input and Output


Chapter 2: Fundamental Data Types, section 2.3, 2.5
Chapter 7: Input/Output and Exception Handling, sections 7.1-7.3
1.
Console input
a)
Scanner class
b)
Input methods for primitive values
c)
Input methods for strings and lines
2.
Screen output
a)
System.out object
b)
Basic output methods
c)
Escape characters
d)
Formatted output
i)
printf() method
ii)
String.format() method
iii)
DecimalFormat and related objects
3.
File input/output
a)
Scanner and BufferedReader/FileReader classes for input
b)
PrintWriter and FileWriter classes for output
4.
Dialog boxes for input/output
a)
JOptionPane class
b)
Input dialog boxes
c)
Message dialog boxes
d)
System.exit method

G.

Control Structures
Chapter 3: Decisions, sections 3.1-3.4, 3.8
Chapter 4: Loops, sections 4.1-4.5, 4.7-4.9
1.
Sequential statements
2.
Selection statements
a)
If and if-else statements
b)
Switch statement
3.
Repetition statements
a)
For statement
b)
While statement
c)
Do-while statement
4.
Nesting control structures
5.
Break and continue statements

H.

Modular Programming
Chapter 5: Methods, sections 5.1-5.5, 5.8
Chapter 8: Objects and Classes, sections 8.1-8.7, 8.10-8.11
1.

Predefined methods and packages

2.

I.

User-defined methods
a)
Structure
b)
Calls
c)
Return types
d)
Parameters and arguments
e)
Method overloading
f)
Call by reference versus call by value
g)
Static versus non-static methods
h)
Method overloading

Classes and Abstract/Structured Data Types


Chapter 2: Fundamental Data Types, section 2.5
Chapter 8: Objects and Classes, sections 8.1-8.11
Chapter 9: Inheritance, sections 9.1-9.6
Chapter 10: Graphical User Interfaces, sections 10.1-10.3
1.
Abstract Data Types
a)
Basic concepts
b)
Relationship to classes
2.
Predefined packages/classes
a)
String class
b)
Input/output classes
c)
GUI classes
d)
Character & numeric wrapper classes
3.
User-defined classes
a)
Structure
b)
Data members
i)
Static variables
ii)
Non-static variables
iii)
Data member access
c)
Constructor methods
i)
Default
ii)
Explicit-value
iii)
Copy
d)
Built-in operations
e)
Accessor methods
f)
Mutator methods
g)
Finalizers
h)
Class scope
i)
Inner classes
j)
Package creation
k)
The reference variable this
4.
Inheritance
a)
the Object class
b)
Polymorphism
c)
Abstract classes & methods
d)
Interfaces

J.

VIII.

Arrays and Structured Data Types


Chapter 6: Arrays and Array Lists, sections 6.1-6.8
Note: instructor will need to provide supplemental material for String methods
and tokenization as well as enum types.
1.
Arrays
a)
Basic structure
i)
Arrays containing primitive values
ii)
Arrays containing objects
i)
Strings
ii)
Other objects
b)
Array definition
i)
Size specification
ii)
Type specification
c)
The length variable
d)
Array processing
i)
Random elements
ii)
Element-by-element
iii)
The enhanced for loop
e)
Arrays as parameters to methods
f)
Parallel arrays
g)
Common array errors
h)
Variable length parameter lists
i)
Two-dimensional arrays
j)
Multi-dimensional arrays
2.
The String class
a)
String manipulation methods
b)
String tokenization
3.
Enum types
a)
Definition
b)
Usage

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%.

Effective Date: August, 2012

Approved Date: June 2012

You might also like