1301_tg_horstmann_2012-3
DESCRIPTION
SyllabusTRANSCRIPT
Georgia Perimeter College
Georgia Perimeter CollegeMathematics/Engineering/Computer Science Division
TEACHING GUIDECSCI 1301 Principles of Computer Science I
Course Title:Principles of Computer Science I
Prerequisites: CSCI 1300 and MATH 1111 with a 'C' or
better.
Text: Big Java: Late Objects, Cay Horstmann, Wiley Publishing,
ISBN 978-1-118-08788-6
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).
Course Objective:
This course provides fundamental problem-solving, algorithm
development, and programming skills in preparation for further
study of computer science.
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.
Course Content:
Overview of Computing and Programming
Chapter 1: Introduction, sections 1.1-1.4Computer systems overview
Programming languages and paradigmsProcedural programming
Object-oriented programming
Introduction to the Programming EnvironmentIntegrated development environments
Use of an IDE
Editing
Compiling/linking/executing programs
Debugging programs, use of debuggers
Problem Solving and Algorithm Development
Chapter 1: Introduction, section 1.7Chapter 2: Fundamental Data Types, section 2.4Chapter 3: Decisions, sections 3.5 3.6Chapter 5: Methods, sections 5.6-5.7Chapter 6: Arrays and Array Lists, sections 6.5-6.6Chapter 8: Objects and Classes, sections 8.8-8.9Problem Solving StrategiesDecomposition
Analogy
Problem AnalysisUnderstanding the problem
Specifying input
Describing output specifications
Algorithm RepresentationTop-down design/pseudocode
Graphical techniques
Algorithm refinements
Algorithm verificationTest data
Walk through
Program Structure and Software Engineering Concepts
Chapter 1: Introduction, section 1.5, 1.7Chapter 7: Input/Output and Exception Handling, sections 7.4-7.5Chapter 8: Objects and Classes, section 8.1Common Errors callouts in all chaptersProgram Design ConceptsTop-Down versus Bottom-Up Design
AbstractionProcedural
Data
Information hiding
User interface design
Efficiency, robustness and correctness
Common programming errors
Debugging techniques
Use of stubs and drivers
Generating test data
Data design specifications
ExceptionsHandling exceptions
Generating/throwing exceptions
Exception handlers
Basic program structure
Chapter 1: Introduction, section1.5Chapter 5: Methods, sections
5.1-5.2Appendix L: Java Language Coding
GuidelinesStyleIndentation
Capitalization and naming conventions
Documentation and comments
Basic class and method structure
Importing predefined code libraries
Simple Data Types
Chapter 2: Fundamental Data Types, sections 2.1-2.3, 2.5Chapter 3: Decisions, sections 3.2, 3.7Chapter 7: Input/Output and Exception Handling, sections 7.1-7.2Chapter 8: Objects and Classes, sections 8.10-8.11Primitive data typesInteger types byte, short, int, long
Float types float, double
Character types -- char
Boolean type bool
The String class
Final, static, and non-static values
Primitive and reference variable definitions
Object instantiation using new
Operations and expressionsArithmetic, arithmetic-assignment, and auto increment/decrement operators
Relational operators and methods
Logical operators
String operators and methods
Order of Precedence
Type casting
Input and Output
Chapter 2: Fundamental Data Types, section 2.3, 2.5Chapter 7: Input/Output and Exception Handling, sections 7.1-7.3Console inputScanner class
Input methods for primitive values
Input methods for strings and lines
Screen outputSystem.out object
Basic output methods
Escape characters
Formatted outputprintf() method
String.format() method
DecimalFormat and related objects
File input/outputScanner and BufferedReader/FileReader classes for input
PrintWriter and FileWriter classes for output
Dialog boxes for input/outputJOptionPane class
Input dialog boxes
Message dialog boxes
System.exit method
Control Structures
Chapter 3: Decisions, sections 3.1-3.4, 3.8Chapter 4: Loops, sections 4.1-4.5, 4.7-4.9Sequential statements
Selection statementsIf and if-else statements
Switch statement
Repetition statementsFor statement
While statement
Do-while statement
Nesting control structures
Break and continue statements
Modular Programming
Chapter 5: Methods, sections 5.1-5.5, 5.8Chapter 8: Objects and
Classes, sections 8.1-8.7, 8.10-8.11
Predefined methods and packages
User-defined methodsStructure
Calls
Return types
Parameters and arguments
Method overloading
Call by reference versus call by value
Static versus non-static methods
Method overloading
Classes and Abstract/Structured Data Types
Chapter 2: Fundamental Data Types, section 2.5Chapter 8: Objects and Classes, sections 8.1-8.11Chapter 9: Inheritance, sections 9.1-9.6Chapter 10: Graphical User Interfaces, sections 10.1-10.3Abstract Data TypesBasic concepts
Relationship to classes
Predefined packages/classesString class
Input/output classes
GUI classes
Character & numeric wrapper classes
User-defined classesStructure
Data membersStatic variables
Non-static variables
Data member access
Constructor methodsDefault
Explicit-value
Copy
Built-in operations
Accessor methods
Mutator methods
Finalizers
Class scope
Inner classes
Package creation
The reference variable this
Inheritancethe Object class
Polymorphism
Abstract classes & methods
Interfaces
Arrays and Structured Data TypesChapter 6: Arrays and Array Lists, sections 6.1-6.8Note: instructor will need to provide supplemental material for String methods and tokenization as well as enum types.ArraysBasic structureArrays containing primitive values
Arrays containing objectsStrings
Other objects
Array definitionSize specification
Type specification
The length variable
Array processingRandom elements
Element-by-element
The enhanced for loop
Arrays as parameters to methods
Parallel arrays
Common array errors
Variable length parameter lists
Two-dimensional arrays
Multi-dimensional arrays
The String classString manipulation methods
String tokenization
Enum typesDefinition
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, 2012Approved Date: June 2012