CS 2308 - Foundations of Computer Science II

Course Description:

The course is an introduction to Abstract Data Types (ADTs) including lists, stacks, and queues. Searching and sorting, pointers and dynamic memory allocation, and simple classes and objects also will be covered. The course is a continuation of CS 1428.

Prerequisite:

Course Objectives:

1.

Develop and use appropriate algorithms.

2.

Know that there are typically many algorithms for the same task (for example, searching and sorting).

3.

Implement a divide-and-conquer algorithm to solve an appropriate problem (binary search).

4.

Have an introductory knowledge of the time/space efficiency of various algorithms.

5.

Understand structured programming in terms of modules and functions.

6.

Understand how to separate source code into multiple files, including header (.h) files.

7.

Use pointer variables and memory operations.

8.

Resize an array with dynamic memory allocation.

9.

Delete allocated memory to avoid memory leaks.

10.

Create and use simple linked-lists.

11.

Insert into, delete from, and traverse a linked structure.

12.

Understand the principle of the Abstract Data Type (ADT) and, in particular, the separation of interface and implementation.

13.

Implement user-defined data structures in a high-level language.

14.

Compare and contrast the costs and benefits of dynamic and static data structure implementations.

15.

Have an introductory understanding of object-oriented programming.

16.

Write a program using an array of objects.

17.

Design, implement, test, and debug simple programs in an object-oriented programming language.

18.

Describe how the class mechanism supports encapsulation and information hiding.

19.

Write programs that use each of the following data structures: arrays, structures, strings, and linked lists.

20.

Describe and understand concepts of Stacks and Queues.

21.

Be able to create, compile, and run a program in a Unix style, command-line environment.

Course Notes:

COSC 2315.

Section Info:

Lecture/Lab Hours: 3 hours lecture, 0 hours lab
Offered: Very frequently (typically every semester).