OCCC CS Courses

From

Revision as of 07:17, 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)

[PSU CS250/Discrete Structure I] CS 250 is the first term of the two term sequence CS 250-251. The main goal of the sequence is that students obtain those skills in discrete mathematics and logic that are used in the study and practice of computer science.

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

   Describe basic properties of sets, bags, tuples, relations, graphs, trees, and functions.
   Perform traversals of graphs and trees; construct simple functions by composition of known functions; determine whether simple functions are injective, surjective, or bijective; and classify simple functions by rate of growth.
   Describe the concepts of countable and uncountable sets, and apply the diagonalization method to construct elements that are not in certain countable sets.
   Construct inductive definitions for sets, construct grammars for languages (sets of strings), and construct recursive definitions for functions and procedures.
   Determine whether a binary relation is reflexive, symmetric, or transitive and construct closures with respect to these properties.
   Construct a topological sort of a partially ordered set and determine whether a partially ordered set is well-founded.
   Use elementary counting techniques to count simple finite structures that are either ordered or unordered, to count the worst case number of comparisons and, with discrete probability, to count the average number of comparisons for simple decision trees.
   Find closed form solutions for simple recurrences using the techniques of substitution, cancellation, and generating functions.
   Demonstrate standard proof techniques and the technique of inductive proof by writing short informal proofs about simple properties of numbers, sets, and ordered structures.

[PSU CS251/Discrete Structures II] CS 251 is the second term of the two term sequence CS 250-251. The main goal of the sequence is that students obtain those skills in discrete mathematics and logic that are used in the study and practice of computer science.

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

   Apply the properties of propositional calculus to: determine whether a wff is a tautology, a contradiction, or a contingency by truth tables and by Quine's method; construct equivalence proofs; and transform truth functions and wffs into conjunctive or disjunctive normal form.
   Describe the basic inference rules and use them to write formal proofs in propositional calculus.
   Apply the properties of first-order predicate calculus to: determine whether a wff is valid, invalid, satisfiable, or unsatisfiable; construct equivalence proofs; and transform first-order wffs into prenex conjunctive or disjunctive normal form.
   Describe the rules of inference for quantifiers and use them along with the basic inference rules to write formal proofs in first-order predicate calculus.
   Write formal proofs in first-order predicate calculus with equality.
   Construct partial correctness proofs of simple imperative programs and construct termination proofs for simple loops.
   Transform first-order wffs into clausal form; and unify atoms from a set of clauses.
   Describe the resolution inference rule; use it to write formal proofs in first-order logic; and describe how resolution is used to execute a logic program.
   Transform simple English sentences into formal logic (propositional, first-order, or higher-order).
   Apply appropriate algebraic properties to: simplify Boolean expressions; simplify regular expressions; write recursive definitions for simple functions in terms of operations for abstract data types; write expressions to represent relations constructed in terms of operations for relational databases; and work with congruences.

{NOTE: everyone seems to agree that there is way too much stuff in these two classes}


Block transfers from math programs other than PSU/PCC

Personal tools
MediaWiki Appliance - Powered by TurnKey Linux