OCCC CS Courses

From

Revision as of 07:10, 29 October 2011 by 67.170.169.154 (Talk)
Jump to: navigation, search

Contents

CS lower division transfer course descriptions

ACM CS0 (CS160)

Explores the disciplines and professions of Computer Science and Software Engineering. Overviews computer hardware and software architecture, the study of algorithms, software design and development, data representation and organization, problem-solving strategies, ethics in the digital world, and the history of computing and its influences on society. Explores career options and begins the process of planning a program of study. Exposes students to both low-level and high-level programming languages.

Draft outcomes: Paul Wilkins/Mitch Fry

ACM CS1 (CS161/CS162)

[OSU CS1]

{PSU CS1]

CS161 {I need to convert these to outcomes} The goals of this class are to introduce students to the fundamental concepts of computing. Problem solving, the design of algorithms for solutions, and the translation of tested algorithms into the grammar of a high-level computer language are emphasized. Students are encouraged to develop a consistent programming style and a systematic method of internal program documentation.

CS162 {I need to convert these to outcomes} The goals of this class are to teach the syntax of a high level programming language to students who already know what programs are. This course will introduce the syntax of C++ including: data types, variables, conditionals, loops, functions, and arrays. It will introduce new constructs such as classes, pointers, dynamic memory, linear linked lists, recursion, and multi-dimensional arrays to prepare students for CS163, Data Structures. To learn and use advanced concepts provided by a modern structured computer language, such as data abstraction, separate compilation and the use of library procedures.


Draft: Colin Goble, Warren Harrison

ACM CS2 Data Structures (CS260/CS261/CS163)

To be drafted


[PSU CS163] The goal of this class is to acquaint students with structures used in C++ for the storage and manipulation of data. The concept of data abstraction and the problem of building implementations of abstract data types are emphasized. Both static and dynamic implementations of major structures are presented and the advantages and disadvantages of each are discussed. Structures include lists of several types, stacks, queues, trees, binary trees, B-trees and graphs. Recursion and key transformation (hashing) are examined. Students are encouraged to examine algorithms and to make judgments about the practical and social application of these algorithm concepts to large scale programming projects; the course stresses the importance of quantitative methods in designing software.

Upon the successful completion of this course students will be able to:

   Apply data abstraction in a C++ programming problem.
   Become proficient at evaluating the benefits and drawbacks of their design in terms of memory and run time efficiency.
   Program using classes and linear linked lists, circular linked lists, doubly linked lists, binary search trees, arrays of linear linked lists.
   Select the proper sorting algorithm for a problem.
   Design solutions to problems requiring complex data structures (combinations of lists, stacks, queues, hash tables, and trees).
   Apply data abstraction.
   Apply both static and dynamic implementations of lists, stacks, queues, hash tables and trees.
   Evaluate the performance tradeoffs between binary search, 2-3, 2-3-4, red-black, B-trees, and AVL trees.
   Build and traverse data structures to manage a simple graph.
   Apply recursion and key transformations.
   Make judgments about the practical and social application of algorithm concepts as they apply to large scale programming projects.


Draft: Mitch Fry, Dodi Coreson, Jay Bockelman

ACM CS3 Computer Architecture (CS271 or CS201)

To be drafted

[PSU CS201/Computer Systems Programming] The goal of this course is to introduce computer systems from a software perspective. Teach C and assembly language programming and reading skills. Teach basic systems programming skills and tools. Show how to measure and improve program performance based on an understanding of key aspects of machine architecture.

Upon the successful completion of this course students will be able to:

   Describe basic computer system organization including the operating system (processes, files, virtual memory) and the underlying hardware (CPU, registers, memory hierarchy).
   Describe the compilation system (preprocessing, assembling, compiling, and linking) and the function of object/executable files and shared libraries, as well as how basic system utilities such as debuggers and Makefiles work.
   Write C programs to illustrate basic systems programming concepts, including file I/O, system calls, memory management, exception handling and process management.
   Do arithmetic in hexadecimal, decimal, octal, and binary notation, and convert among these notations.
   Explain how data types such as integers, characters, floating point numbers, arrays, pointers, and structures are represented.
   Describe the basic instruction set architecture for the IA32 family (or similar machine), including the arithmetic/logic instructions, registers, memory model and addressing, and control instructions.
   Explain how high-level programming constructs such as loops and stack-based function calls are implemented in underlying machine code.
   Explain how exceptions, traps, and context switches occur and how they are handled at the machine level.
   Explain the performance impact of hardware features such as pipelining, and architecture principles such as memory locality.
   Use profiling and timing facilities to identify performance bottlenecks in C programs. 

Bob Broeg, Paul Paulson

Discrete Math (Mth231/232 or CS250/251)

Block transfers from math programs other than PSU/PCC

Personal tools
MediaWiki Appliance - Powered by TurnKey Linux