Sei sulla pagina 1di 4

Las Positas College

3033 Collier Canyon Road


Livermore, CA 94551-7650
(925) 373-5800
(925) 443-0742 (Fax)
Course Outline for Computer Science 20
ADVANCED PROGRAMMING METHODS WITH DATA STRUCTURES USING C++
I.

CATALOG DESCRIPTION:
CS 20 ADVANCED PROGRAMMING METHODS WITH DATA STRUCTURES USING
C++ 4 units
Design and implementation of larger programs in C++ using software engineering
principles. Emphasis on definition and use of data structures. Includes specification of
abstract data types, recursion, dynamic memory allocation, stacks, linked lists, queues,
binary trees, random access files, and use of hash codes. Prerequisite: Computer Science
15 or Computer Science 2 (completed with a grade of C or higher). 3 hours lecture, 3
hours laboratory.

II. NUMBER OF TIMES COURSE MAY BE TAKEN FOR CREDIT: One


III. PREREQUISITE AND/OR ADVISORY SKILLS:
Before entering the course, the student should be able to:
From Computer Science 15
1. use top-down design methods, be able to develop algorithms and programs of
intermediate difficulty and length in the C++ language, including programs broken
into several files;
2. apply knowledge of major features of the C++ language, including classes, operator
and function overloading, inheritance, virtual functions and polymorphism;
3. specify algorithms and code elementary iterative searches and sorts;
4. define what is meant by structured programming;
5. apply their thorough knowledge of C++ simple data types, operator precedence, C++
operators, and control structures to C++ programs;
6. use and manipulate pointers, and be able to apply this knowledge to C++ programs;
7. understand the concept of input/output streams and their use in a wider range of C
and C++ input/output functions, both interactive and file, and be able to sue these in
C++ programs;
8. understand object oriented programming concepts and be able to write object
oriented programs;
9. understand the concepts of scope and class of variables; local vs. global, automatic
vs. static, external, register;
10. use the structured C++ data types: arrays, structs, and classes;
11. apply knowledge of how the computer represents integers and be able to do base
conversions in C++;
12. construct truth tables and use to evaluate relational expressions involving bitwise
and relational operators.
From Computer Science 2
A.
give an overview of the evolution and present state of programming languages;

Course Outline for Computer Science 20

Page 2

ADVANCED PROGRAMMING METHODS WITH DATA STRUCTURES USING C++


B.
C.
D.
E.
F.
G.
H.
I.
J.
K.
L.

describe and employ basic principles of software engineering;


define and use C++ abstract data types in program applications;
define and implement C++ dynamic data structures (stacks, queues, etc.);
define an employ overloading of functions and operators;
write C++ functions implementing recursion and iteration;
write C++ functions implementing searching and sorting algorithms;
employ complexity analysis to compare the efficiency of sorting algorithms;
write C++ functions implementing numerical algorithms such as bisection, Gaussian
elimination, differentiation and integration;
define and illustrate encapsulation, inheritance and polymorphism in C++;
describe computability, finite-state and Turing machines;
describe current computer applications of artificial intelligence and imaging.

IV. EXPECTED OUTCOMES FOR STUDENTS:


Upon completion of the course, the student should be able to:
A.
B.
C.
D.
E.
F.
G.
H.
I.

define and understand basic operations on abstract data types (ADTs);


use dynamic memory allocation to create dynamic data structures;
implement programs using linked lists, stacks, queues and binary trees, including
implementations with the Standard Template Library;
design and implement larger programming projects (greater than 500 lines);
understand the concept of time efficiency for algorithms using Big O notation;
be able to use advanced concepts of object oriented programming;
understand and use direct access methods, including hash codes;
be able to design and implement a search program using hashing functions;
understand and be able to use template functions and template classes.

V. CONTENT:
A.
Data Abstraction
i. Concept of an ADT
ii. Typical operations in an ADT
iii. ADT implementation issues
2. Big O notation for determining time efficiency of algorithms
1.
Definition
2.
Simple examples: Time order sequential search and binary search
3. Dynamic memory allocation for data structures
4. Linear structures
1.
ADT:List
2.
Linked lists; singly and doubly linked
3.
Space/time comparison of use of array vs. linked list implementation
4.
Linked list applications
5.
ADT:Queue
6.
Implementation of queues by linked list and circular array
7.
ADT:Stack
8.
Implementation of stacks by array and by linked list
9.
Big-O time order of traversal, insertion and deletion for above data
structures;
10. Applications such as evaluation of postfix (RPN) and infix expressions
5. Implementation of algorithms that use ADTs (including implementations using the C+
+)
1.
Linked list
2.
Stack
3.
Queue
4.
String
6. Recursion
1.
Definition

Course Outline for Computer Science 20

Page 3

ADVANCED PROGRAMMING METHODS WITH DATA STRUCTURES USING C++


2.
3.
4.

7.

8.

9.

10.

11.

Coding recursive functions


Base and general case
Use of the program stack and understand stack activation record and its role
in implementing recursive calls
5.
Recursive data structures
Search algorithms
1.
Direct access through use of hash codes
2.
Iterative binary search
3.
Recursive binary search
4.
Using a binary search tree
5.
Timing of search algorithms
Trees
1.
General definition, types, and terminology of trees
2.
ADT:Binary Tree
3.
Implementation of Binary Trees
4.
Applications of Binary Trees
5.
Complete Binary Trees: building a heap
6.
Time order of various Binary Tree operations
Sorting Algorithms: implementation and comparison
1.
Elementary iterative sorting algorithms
2.
Recursive sort such as QuickSort, MergeSort, or HeapSort
3.
Timing of sort algorithms selected in course
Larger projects
1.
Class design diagrams
2.
Industry documentation standards
3.
Use of inheritance for code reuse
4.
Top-down and bottom-up design
5.
Testing issues and techniques
Hashing Algorithms
1.
Concept of searching by direct access: Hash Tables
2.
Construction of an elementary hashcode function
3.
Resolving collisions by linear probing and chaining
4.
Application of hash codes to storage of records in a direct access file or
object

VI. METHODS OF INSTRUCTION:


A.
If taught in class:
1.
Reading assignments
2.
Lecture
3.
Discussion
4.
Classroom demonstrations
5.
Computer laboratory assignments
B.
If taught online:
1.
Reading assignments
2.
Programming assignments
3.
Online slide shows
4.
Participation in online office hours
5.
Participation in threaded discussions
VII. TYPICAL ASSIGNMENTS:
A.
Programming
1.
Write, debug and test a C++ program that uses a stack to evaluate postfix
expressions.
2.
Write, debug and test a C++ program that compares the runtime efficiency of
insertion sort and quicksort algorithms
B.
Reading
1.
Study Chapter 8, Priority Queues, in the textbook.

Course Outline for Computer Science 20

Page 4

ADVANCED PROGRAMMING METHODS WITH DATA STRUCTURES USING C++


2.
VIII.

Study an assigned website on the Standard Template Library.

EVALUATION:
A.
Methods of evaluation
1.
There shall be a comprehensive, proctored, in-class final examination.
2.
There shall be an in-class, proctored midterm examination.
3.
There shall be either a quiz on each chapter of the textbook covered in the
course, or a second midterm examination.
4.
Students will be required to write and implement several assigned programs
of substantial size and complexity that utilize all topics included above in the
course of study.
5.
Students must design, code, test, and document at least one project
consisting of 500 or more lines of student-written code.
6.
Grading shall be based upon a combination of examination scores and
assignment grades.
2. Typical problems
1.
Quiz question: For best running time efficiency, a(n) ________ would be
chosen to implement a list where there will be frequent insertions and
deletions at random locations.
a.
Array
b.
Linked list
c.
vector
ii. Programming homework problem: Write a C++ program that
implements a recursive function to determine if an input string is a
palindrome.
iii. Final examination question: Describe the structure and function of
the heap. Explain a typical application.
iv. Final examination programming problem: Write a program
fragment that implements a template function to insert an object
into a doubly linked list.
v. Laboratory assignment: Create a vector of 100,000 random
integers and sort with quicksort. Write a C++ program that
measures and compares the execution times of functions that
implement a binary search and a sequential search of the vector.

IX. TYPICAL TEXTS:


A.
Budd, Timothy. Data Structures in C++: Using the Standard Template Library (STL),
1st Edition. Boston: Addison Wesley, 1998.
B.
Topp, William Ford and William. Data Structures with C++ Using STL, 2nd Edition.
Upper Saddle River, NJ: Prentice Hall, 2001.
C.
Collins, William J. Data Structures and the Standard Template Library, 1st Edition.
New York, NY: McGraw-Hill, 2003.
X. OTHER MATERIALS REQUIRED OF STUDENTS:
Students taking the online version of this course must have access to a Pentium class
computer with a CD drive and an Internet connection.
Creation Date:
Revision Date: 9/02
Date Approved by Curriculum Committee: 11/13/02
Effective Date: Fall 2003
Approved for Distance Education: 11/13/02

Potrebbero piacerti anche