William Paterson Univers ity of New Jersey
Department of Computer Science
College of Science and Health
1. TITLE OF COURSE AND COURSE NUMBER: Computer Science II, CS240
2. DESCRIPTION OF THE COURSE: Continuation of CS 230. Procedural abstraction, data representation, recursion, and program modularity. File processing, data management and storage allocation techniques. Abstract data type (ADT) and object‑oriented programming techniques. Key concepts in software design. Multidimensional arrays, strings, pointers, and records. Students will complete programming assignments in C++.
3. COURSE PREREQUISITES: CS230 with a grade of C‑ or better
4. COURSE OBJECTIVES:
To learn advanced C++ features as a continuation from the previous course.
To learn the concepts and practices of data and procedure abstraction, data hiding, and abstract data types.
To learn principles of object‑oriented design and software engineering in terms of software reuse and managing complexity.
To continue build up practical problem solving and programming skills with C++ through extensive programming projects.
To become familiar with both Windows and Unix environment and the available tools including debugger and profiler for software development.
To introduce Java, the leading Internet programming language; its similarities to and differences from C++.
To introduce concept of data structures and how these structures can facilitate problem‑solving as a bridge to CS342 Data Structures.
To introduce the concept of efficiency of algorithms in terms of time and space as a bridge to CS372 Design and Analysis of Algorithm.
To become familiar with the Unix software development environment.
I
5. STUDENT LEARNING OUTCOMES:
Upon completion of the course, students will be able to:
a) Describe the advantages of object-oriented programming paradigm
b) Understand the object‑oriented design principle in computer problem solving
c) Understand the basic principles of software engineering in managing complex software project
d) Make use of software development tools particularly the debugger
e) Program with the advanced features of C++ programming language
f) Analyze the efficiency of algorithms in terms of space and time
g) Describe the basic concepts of motivations of data structures
h) Understand the trends of languages, e.g., how Java programming has evolved into a major language for the Internet applications
i) Develop programs in Unix environment
Through classroom participation and discussions, and various homework, term papers, team lab projects, and other assignments, the course also reinforce the following students learning outcomes of the university:
a) Effectively express themselves in written and oral form. Measure: exams, surveys, and projects.
b) Demonstrate ability to think critically. Measure: exams, surveys, and projects.
c) Locate and use information. Measure: projects.
d) Demonstrate ability to integrate knowledge and idea in a coherent and meaningful manner. Measure: exams, surveys, and projects.
e) Work effectively with others. Measure: surveys and projects.
6. TOPICAL OUTLINE OF THE COURSE CONTENT:
Topic 1: Review major topics covered in CS230
a) Pointer variables, pointer arithmetic, and storage allocation
b) Searching and sorting with arrays
c) Review of higher dimensional arrays and applications
d) Recursive Functions
e) Characters and Strings
f) Formatted Input/Output
Topic 2: Structures and Classes
a) Definitions of structures
b) Accessing members of structures
c) Using structures with functions
d) The concept of abstract data type or ADT
e) Introduction to classes and object‑oriented programming
Topic 3: Objected‑oriented Programming
a) Encapsulation of data and functions
b) Constructors/destructors
c) Access specifiers and scope resolution operator
Topic 4: Operator overloading
a) Fundamentals of operator overloading
b) Operator function as a class member versus as friend function
c) Overloading the insertion and extraction operators
d) Overloading unary and binary operators
e) Conversion between types
Topic 5: Inheritance
a) Base class and derived class
b) Protected members
c) Using member functions
d) Public, protected, and derived classes
e) Using constructors and destructors in derived classes
f) Composition versus inheritance
g) Multiple inheritance
Topic 6: Virtual functions and polymorphism
a) Type fields and switch statements
b) Virtual functions
c) Abstract base classes and concrete classes
d) Polymorphism
e) New classes and dynamic binding
f) Virtual destructors
Topic 7: The standard library
a) Library organization and containers
b) Standard container
c) Algorithms and function objects
d) Iterators and allocators
e) Strings
f) Streams
g) Numerics
Topic 8: The Unix operating system
a) History
b) File systems
c) The utilities
d) The editors
e) Other software development tools such as the make utility and Sdb and Dbx debugging tools
7. GUIDELINES/SUGGESTIONS FOR TEACHING METHODS AND STUDENT LEARNING ACTIVITIES:
a) Lectures and classroom discussions emphasizing active learning
b) Term papers and reports
c) Lab sessions
8. GUIDELINES/SUGGESTIONS FOR METHODS OF STUDENT ASSESSMENT STUDENT LEARING OUTCOMES):
a) Attendance and classroom participation
b) Examinations, quizzes, and final examination
c) Various homework assignments including term papers and reports
d) Programming and lab projects
9. SUGGESTED READINGS. TEXTS. OBJECTS OF STUDY:
Deitel, H. and Deitel, P., 2006, C++: How to Program, 5th edition, Prentice Hall, Upper Saddle River, NJ
Glass, Graham and King Ables, 2003, UNIX: For Programmers and Users, Third Edition, Prentice-Hall.
10. BIBLIOGRAPHY OF SUPPORTIVE TEXTS AND OTHER MATERIALS:
Eckel, B., 2000, Thinking in C++, 2nd edition, Prentice Hall, Upper Saddle River, NJ
Carrano, F., Helman, P. and Veroff, R., 1998, Data Abstraction and Problem Solving with C++, 2nd edition, Addison Wesley
Cohoon, P. and Davidson, J., 1999, C++ Program Design: An Introduction to Programming and Object‑Oriented Design, McGraw‑Hill Publishing Company
Dale, Nell, Chip Weems, and Mark Headington, 2000, "Programming and Problem
Solving with C++", Second Edition, Jones and Bartlett Publishers.
Ford, William H. and William R. Topp, 1999, Introduction to Computing Using C++ and Object Technology, Prentice Hall.
Friedman, Frank and Elliot B. Koffman, 2004, Problem Solving, Abstraction, and Design using C++, 4th Edition, Addison-Wesley.
Lee, R. and Tepfenhart, W., 1997, UML and C++: A Practical Guide to ObjectOriented Development, Prentice Hall.
Lippman, Stanley, Josée Lajoie and Barbara E. Moo, 2005, C++ Primer, 4th Edition, Addison Wesley.
Martin, R., 1995, Designing Object‑Oriented C++ Applications Using The Booch Method, Prentice Hall.
Mason, John, 2006, C++ The Computer Wizard Series, Prentice Hall.
Savitch, Walter, 2005, Problem Solving with C++: The Object of Programming, Visual C++ 6.0 Edition, 5th Edition, Addison Wesley.
Stroustrup, B., 1997, C++ Programming Language, 3rd edition, Addison Wesley
Zeigler, P., 1996, Objects and Systems: Principled Design with Implementation in C++ and Java, Springer Publishing Company
UNIX Texts:
Afzal, A., 1998, UNIX Unbounded: A Beginning Approach, Prentice Hall, Upper Saddle River, NJ
Andersen, P., 1997, Just Enough Unix, 2nd edition, Irwin publishing Company
Wang, S., 1996, An Introduction to UNIX with X and the Internet, PWS Publishing Company
Sobell, M., 1995, UNIX System V: A Practical Guide, 3rd edition, Prentice Hall, Upper Saddle River, NJ
11. PREPARERE'S NAME AND DATE: Drs. E. Hu and Gilbert Ndjatou; Fall, 1996
12. ORIGINAL DEPARTMENTAL APPROVAL DATE: Spring, 1997
13. REVISORS'S NAME AND DATE: Dr. E. Hu; Spring, 2000; Fall 2004.
14. DEPARTMENTAL REVISION APPROVAL DATE: Fall 2004.