COURSE ABBREVIATION                 CSCI 2900C Special Topics (C++)


CREDIT HOURS                                  3


COURSE TITLE                         Introduction to C++ Programming


PREREQUISITES                           CSCI 1301, with a C or better, or permission from the instructor.


CATALOG DESCRIPTION             The focus of this course is to transition students with knowledge of another computer language to C++.  It continues the introduction of the fundamental principles of computer science from CSCI 1301.  It extends algorithm development to large programs and introduces additional data structures, pointers, recursion, abstract data types, object-oriented design and programming, algorithm analysis, and file processing techniques, while continuing to emphasize structured programming techniques.




Completing this course with a grade of C or better, the student will:


1.                  Construct program code to define, set up, read data from, and write data to a data file of type other than text.

2.                  Compare and contrast text files and binary files and describe differences in program code implementation.

3.                  Determine output from a segment of code, which uses a recursive subprogram.

4.                  Compare and contrast static and dynamic memory allocation.

5.                  Construct program code to define a pointer variable and use it to create, access, and dispose of a dynamic variable.

6.                  Choose and manipulate appropriate abstract data structures such as lists, stacks, queues, and trees.

7.                  Demonstrate an understanding of polymorphism and inheritance for objects by using them appropriately in a program.

8.                  Describe the appropriateness of sorting and searching algorithms in a given context.

9.                  Analyze and determine the efficiency of a specific algorithm using algorithm analysis techniques and tools such as O(n), q(n), and W(n).




I            This course addresses the general education outcome relating to communications as follows:


1.                  Students develop their reading comprehension skills by reading the text and handouts.


2.                  Students will further develop their communication and critical thinking skills by reading, interpreting, and implementing program requirements to create a well-behaved software system.


3.                  Students develop their listening skills through lecture and small group problem solving.  Lecture material is presented that is not included in the text or handout material and is included as part of the tests or assignments.


4.                  Students develop their reading and writing skills through the use of problems and activities, including development of computer programs and documentation, designed specifically to enhance their understanding of computer science principles and programming language skills.  Students provide written or oral solutions to these problems in either individual or group format.  They must also answer short-answer type questions on course exams.


II            This course addresses the general education outcome relating to problem-solving and critical thinking skills through programming assignments that take the student through the programming process from understanding the problem all the way to finalizing a correct program solution to the problem.


III            This course addresses the general education outcomes relating to mathematical concept usage and scientific inquiry as follows:


            1.            Students apply mathematical concepts in the development of computer programs by creating mathematically based solutions to the assigned problems and communicating the results of those solutions to the program user.


            2.            Students apply the scientific method in the set-up and solution of the problems presented to illustrate computer programming principles.


IV.            This course addresses the general education outcome relating to organization and analysis of information using a computer by using a modern, fully-capable programming language in the solution of problems designed to illustrate the concepts and principles of computer programming.




Students entering this course will meet the expected educational outcomes of CSCI 1301.




I            Review of CS1 Required (Must be 20% of course.)

      1.      Date types in C++

2.                  Loops in C++

3.                  Conditional control structures in C++

4.                  Functions in C++

5.                  Text file I/O in C++

6.                  Arrays and vectors in C++

7.                  Basic class building in C++


II            Advanced Programming Techniques

                        1.            Additional data types (strings, sets, ordinal types)

1.                  Recursion

2.                  Pointers

3.                  Advanced sorting and searching techniques


III            Data Abstraction

1.                  Abstract data types (linked lists, stacks, queues)

2.                  Object-oriented design and implementation


IV            File processing techniques

1.            Text vs. Structured component files

2.            Characteristics of secondary storage devices

3.                  Access methods (random/sequential/direct)

4.                  Fixed-length vs. Varying-length components

5.                  Indexed files and key values


V            Analysis of Algorithms

1.                  Characteristics of analysis

2.                  Big-O Notation




A.                COURSE GRADE


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% no more than 35%.




            CSCI 2900C Special Topics (C++) will be assessed every five years. The assessment instrument will be determined by the CSCI course committee and will consist of a common project and a set of free response questions that will be included as a portion of the final examination for all students taking the course.




The CSCI Committee, or a special assessment committee appointed by the Executive Committee of the Mathematics Academic Group, will analyze the results of the assessment and determine implications for curriculum changes. The committee will prepare a report for the Academic Group summarizing its finding.