William Paterson University of New Jersey
Department of Computer Science
Course Outline
I. Course Title: CS-230 Computer Science I 4 credits
II. Course Description:
Algorithmic approach to computer problem solving and programming methodology: Analysis, design documentation, implementation, debugging, and evaluation. Procedural abstraction and basic data representation. Substantial programming assignments (in ANSI C language), including numerical and non-numerical problems.
III. Prerequisite: MATH-115, MATH-135, or equivalent
IV. Course Objectives:
1. To learn algorithmic problem solving methodologies.
2. To learn structured programming techniques and software engineering approach to program development.
3. To learn the basic features of the C programming language.
4. To become familiar with a program development environment and to acquire computer problem solving and programming skills through extensive computer project assignments.
V. Student Learning Outcomes:
After the completion of this course, a successful student will be able to do the following:
1. Describe the major components of a digital computer system with their functions.
2. Distinguish different categories of software
3. Explain the difference between high-level languages and low-level languages
4. Describe the concept of a variable, and evaluate arithmetic expressions.
5. Provide an algorithmic solution to a problem that requires simple selection, simple repetitive execution, or simple conditional execution.
6. Provide an algorithmic solution to a problem that requires multi-way selection, nested selections, and nested repetitive execution, and a combination of these behaviors.
7. Specify simple selections, multi-way selections, nested selections, simple repetitive executions, nested repetitive executions and conditional executions in a high-level language.
8. Trace the execution of a program segment with simple selections, multi-way selections, nested selections, simple repetitive executions, nested repetitive executions and conditional executions.
9. Write, document, execute, debug and test a program in at least one program development environment.
10. Write programs that manipulate a one-dimensional and a two-dimensional arrays, and also explain the concept of a pointer variable.
11. Write, declare, and call functions that return a value or not, and with value and/or reference parameters
12. Write programs with four or more functions.
The course will also reinforce the following students learning outcomes of the university:
a) Effectively express themselves in written and oral form. Students will be expected to complete written assignments on programming and describe the behavior of programs in exams and homeworks. Measure: homework and exam questions.
b) Demonstrate ability to think critically. Critical thinking is required in building models for addressing programming problems, constructing programs, choosing the correct procedural statements/models, verifying their correctness (via the most exacting standard, debugging), and judging them in terms of efficiency. Measure: exams, surveys, and projects.
c) Locate and use information. Students will be expected to find formulas, equations, and facts on the Internet to support the building of those models. Measure: project-work requiring the Internet. On less frequent occasions, the library will be used as a resource for information needed in programming.
d) Demonstrate ability to integrate knowledge and idea in a coherent and meaningful manner. Programming requires the effective merging of application-specific knowledge, procedural representations in C/C++, algebraic formulas, and other discipline specific information. Coherence and meaning are judged by the strictest standard, that of the compiler (linguistically) and execution (for precise exact goals). Measure: programming projects and exams.
e) Optional: Work effectively with others. This is optional in that not all sections adhere to this as a rule. Those that adhere to this do so by forming student teams for programming projects.
VI. Course Contents:
1. Introduction to Computers and Programming
a. Computer Organization and program execution
b. Computer problem solving steps and the algorithm
c. Principle of structured programming: top-down modular design
d. Introduction to C++ language
e. Lab procedures and ethics
2. Data Types, Declarations, and Simple Input/Output
a. Elementary data types: integer, floating point, and character type
b. Variables: declarations, values, addresses
c. Arithmetic and assignment operators
d. cin and cout for I/O.
3. The Selection Structure
a. Relational and logical operators
b. If-else statement: simple and nested
c. Compound statement
d. Switch statement
4. The Repetition Structure
a. While statement
b. For statement
c. Do-while statement
d. Nested loops
5. Structured Program Development
a. Top-down program development
b. Modularity, top-down design, and step-wise refinement
c. Structure diagrams
6. Function in ANSI C++
a. Function definitions and function calls
b. Function prototypes
c. Library functions and code reuse
d. Variable scope, life time, and type
7. Arrays, Addresses, and Pointers
a. Array declaration and initialization
b. Arrays and loops
c. Passing individual array elements to function
d. Passing entire array to functions
e. Call-by-reference versus call-by-value
f. Pointer variables
g. Array names versus pointer variables
i. Higher dimensional arrays
VII. Teaching Methods:
1. Classroom lectures, discussions, and problem-solving sessions.
2. Homework and pre-exam reviews.
VIII. Evaluation:
1. Periodic examinations, quizzes, and final examination.
2. Programming projects and homework assignments.
IX. Textbook:
Programming with C++: Concepts and Applications, by Gilbert Ndjatou, Thomson C.P.,
2003.
A First Book of C++: From Here to There, 3rd Ed., by Gary Bronson, Course Technology (A Thomson Company), 2005.
X. Bibliography:
1. C++: How to Program (Fifth Edition), C, H.M. Deitel and P.J. Deitel,
Prentice Hall 2006
2. C by Dissection, Al Kelley and Ira Pohl, Benjamin Cummings 1992
3. Learning C++, Neill Graham, McGraw Hill 1991
4. C++ The Computer Wizard Series, John Mason, Prentice Hall, 2006
5. C++ Programming: From Problem Analysis to Program Design, Second Edition,
D. Malik,, Prentice Hall, 2004.
6. Computer Science: A Structured Approach Using C++, Second Edition,
Behrouz Forouzan, Prentice Hall, 2003.
XI Prepared by: Drs. E. Hu and Gilbert Ndjatou
XII. Original Department Approval Date: Spring 1997.
XIII. Revised by: Dr. Gilbert Ndjatou on April 1, 2000.
XIV. Department Revision Approval Date: Spring 2000 and Fall 2004.