# Computer Science (CS)

### Courses

**CS 134 Programming Fundamentals (4 Hours)**

In this introductory course, students will create interactive computer applications that perform tasks and solve problems. Students will utilize fundamental logic, problem-solving techniques and key programming concepts to design, develop and test modular applications written in an object-oriented programming language. 3 hrs. lecture, 2 hrs. lab /wk.

**CS 200 Concepts of Programming Algorithms Using C++* (4 Hours)**

**Prerequisites:** CS 134 with a grade of "B" or higher or CS 201 or CS 205 or MATH 241or appropriate score on waiver test or department approval for prior work-related experience

This course emphasizes problem solving using a high level programming language and the software development process. Algorithm design and development, programming style, documentation, testing and debugging will be presented. Standard algorithms and data structures will be introduced. Data abstraction and an introduction to object-oriented programming will be studied and used to implement algorithms. 3 hrs. lecture, 2 hrs. lab by arrangement/wk.

**CS 200H HON: Concepts/Prog. Algorithms (1 Hour)**

One-credit hour honors contract is available to qualified students who have an interest in a more thorough investigation of a topic related to this subject. An honors contract may incorporate research, a paper, or project and includes individual meetings with a faculty mentor. Student must be currently enrolled in the regular section of the courses or have completed it the previous semester. Contact the Honors Program Office, COM 201, for more information.

**CS 201 Concepts of Programming Algorithms using C#* (4 Hours)**

**Prerequisites:** CIS 134 or CS 134 or ENGR 171 or equivalent experience

This course emphasizes programming methodology and problem-solving using C#. Algorithm design and development, data abstraction, good programming style, testing and debugging will be presented. 3 hrs. lecture, 2 hrs. open lab/wk.

**CS 205 Concepts of Programming Algorithms using Java* (4 Hours)**

**Prerequisites:** CIS 134 or CS 134 or ENGR 171 or equivalent experience

This course emphasizes programming methodology and problem-solving using Java. Algorithm design and development, data abstraction, good programming style, testing and debugging will be presented. 3 hrs. lecture, 2 hrs. open lab/wk.

**CS 210 Discrete Structures I* (3 Hours)**

**Prerequisites:** MATH 171 or both MATH 116 and CIS 134 or CS 134 or appropriate math assessment scores

Upon successful completion of this course, the student should be able to use fundamental discrete mathematics as it relates to computers and computer applications. The student will be exposed to a variety of discrete mathematical topics. The course will include fundamental mathematical principles, combinatorial analysis, mathematical reasoning, graphs and trees, and Boolean logic circuits. 3 hrs. lecture/wk.

**CS 210H HON: Discrete Structures I (1 Hour)**

One-credit hour honors contract is available to qualified students who have an interest in a more thorough investigation of a topic related to this subject. An honors contract may incorporate research, a paper, or project and includes individual meetings with a faculty mentor. Student must be currently enrolled in the regular section of the courses or have completed it the previous semester. Contact the Honors Program Office, COM 201, for more information.

**CS 211 Discrete Structures II* (3 Hours)**

**Prerequisites:** CS 210

Upon successful completion of this course, the student should be able to use fundamental discrete mathematics as it relates to computers and computer applications. The student will experiment with a variety of discrete mathematical topics. The course will include fundamental mathematical principles, combinatorial analysis, mathematical reasoning, graphs and trees, and Boolean logic circuits. 3 hrs. lecture/wk.

**CS 211H HON: Discrete Structures II (1 Hour)**

One-credit hour honors contract is available to qualified students who have an interest in a more thorough investigation of a topic related to this subject. An honors contract may incorporate research, a paper, or project and includes individual meetings with a faculty mentor. Student must be currently enrolled in the regular section of the courses or have completed it the previous semester. Contact the Honors Program Office, COM 201, for more information.

**CS 225 Digital Logic with VHDL* (2 Hours)**

**Prerequisites:** ELEC 125

This course introduces students to the Very High Speed Integrated Circuit Hardware Descriptive Language (VHDL) used to implement digital logic designs with programmable logic devices. Students will learn the different types of programmable logic devices and how to use an industry-standard programming environment to code designs with VHDL. 1hr. lecture & 2 hrs. instuctional lab/wk.

**CS 235 Object-Oriented Programming Using C++* (4 Hours)**

**Prerequisites:** CS 200 or CS 201 or CS 205

This course emphasizes programming methodology and problem solving using the object-oriented paradigm. Students will develop software applications using the object-oriented concepts of data abstraction, encapsulation, inheritance, and polymorphism. Students will apply the C++ techniques of dynamic memory, pointers, built-in classes, function and operator overloading, exception handling, recursion and templates. 3 hrs. lecture, 2 hrs. lab by arrangement/wk.

**CS 236 Object-Oriented Programming Using C#* (4 Hours)**

**Prerequisites:** CS 201

This course prepares students to develop object-oriented, C# applications that solve a variety of problems. Students will apply object-oriented concepts including inheritance, function overloading, and polymorphism and will utilize available classes as well as design their own. Event-driven programming, Windows applications, web development, common data structures, database access, and frameworks will be presented. 3 hrs. lecture, 2 hrs. instructional lab/wk.

**CS 250 Basic Data Structures using C++* (4 Hours)**

**Prerequisites:** (CS 235 or CIS 235) OR CS 200 and (CS 210 or CS 236 or CS 255 or CIS 240 or MATH 242)

This course continues developing problem solving techniques by focusing on object-oriented styles using C++ abstract data types. Basic data structures such as queues, stacks, trees, dictionaries, their associated operations, and their array and pointer implementations will be studied. Topics also include recursion, templates, fundamental algorithm analysis, searching, sorting, hashing, object-oriented concepts and large program organization. Students will write programs using the concepts covered in the lecture. 3 hrs. lecture, 2 hrs. lab by arrangement/wk.

**CS 255 Basic Data Structures Using Java* (4 Hours)**

**Prerequisites:** CS 205 or CS 236 or CIS 240

This course will cover advanced programming topics using Java. Files, recursion, data structures and large program organization will be implemented in projects using object-oriented methodology. Students will write programs using queues, stacks, lists and other concepts covered in the lecture. 3 hrs. lecture, 2 hrs. lab by arrangement/wk.

# CS 134

**Title:**Programming Fundamentals**Number:**CS 134**Effective Term:**Spring 2015**Credit Hours:**4**Contact Hours:**5**Lecture Hours:**3**Lab Hours:**2

### Description:

In this introductory course, students will create interactive computer applications that perform tasks and solve problems. Students will utilize fundamental logic, problem-solving techniques and key programming concepts to design, develop and test modular applications written in an object-oriented programming language. 3 hrs. lecture, 2 hrs. lab /wk.

### Course Fees:

None### Textbooks:

http://bookstore.jccc.edu/### Supplies:

Refer to the instructor's course syllabus for details about any supplies that may be required.### Objectives

- Describe software development careers and types of software applications.
- Describe internal and external data representation.
- Apply different problem-solving techniques.
- Write computer programs that utilize fundamental statements and processes.
- Break solutions into more manageable code using functions and methods.
- Create solutions using object-oriented methodology.
- Write computer programs that respond to events.

### Content Outline and Competencies:

I. Software Development Careers and Software Applications A. Describe different types of careers available to software developers. B. Identify real-world applications that are based upon computer programs. II. Internal and External Data Representation& A. Convert characters to and from ASCII (American Standard Code for Information Interchange) code. B. Convert among binary, decimal and hexadecimal numbers. C. Discuss data storage. III. Problem-Solving Techniques for Software Development A. Develop logic to solve computer programs. B. Represent problems and solutions. 1. Use flowcharts to represent logical flow. 2. Use hierarchy charts to represent relationships among modules. 3. Use pseudo-code to represent algorithms. C. Discuss Top-Down Design. D. Explain the software development life cycle. E. Break a larger problem into smaller, more manageable units. F. Develop and implement plans to test solutions. G. Trace program flow manually and with a debugger. IV. Fundamental Statements and Processes A. Declare variables using appropriate data types. B. Use assignment operators. C. Use arithmetic, relational and logical operators. D. Use branching statements. E. Use at least two different types of looping statements. F. Process user input. G. Generate user output. H. Declare and manipulate arrays. V. Functions and Methods A. Call built-in and user-defined functions. B. Pass parameters. C. Process returned values. D. Write functions and methods. VI. Object-Oriented Methodology A. Discuss advantages of object-oriented techniques. B. Utilize objects and methods from built-in classes. C. Create user-defined classes. 1. Create and utilize static and non-static instance variables. 2. Create and utilize static and non-static methods. 3. Create constructors to initialize instance variables. 4. Properly use public and private access modifiers. D. Instantiate objects from classes. VII. Event-driven Programming A. List different types of event triggers. B. Use built-in classes to capture events C. Write event handlers to process events.

### Method of Evaluation and Competencies:

Students will complete a minimum of 20 computer programs and complete at least two major exams. Labs and Projects 20-60% Assignments and Exercises 10-40% Quizzes and Exams 20-60% 100%

Criteria for grade: A = 90% B = 80% C = 70% D = 60% F = less than 60%

### Grade Criteria:

### Caveats:

Students must be proficient in keyboarding and in performing tasks with a Windows or Macintosh operating system. Operating system and office application courses are available in CPCA and CIS to enhance these skills.### Student Responsibilities:

### Disabilities:

If you are a student with a disability, and if you will be requesting accommodations, it is your responsibility to contact Access Services. Access Services will recommend any appropriate accommodations to your professor and his/her director. The professor and director will identify for you which accommodations will be arranged.

JCCC provides a range of services to allow persons with disabilities to participate in educational programs and activities. If you desire support services, contact the office of Access Services for Students With Disabilities (913) 469-8500, ext. 3521 or TDD (913) 469-3885. The Access Services office is located in the Success Center on the second floor of the Student Center.

# CS 200

**Title:**Concepts of Programming Algorithms Using C++***Number:**CS 200**Effective Term:**Spring 2015**Credit Hours:**4**Contact Hours:**5**Lecture Hours:**3**Other Hours:**2

### Requirements:

**Prerequisites:** CS 134 with a grade of "B" or higher or CS 201 or CS 205 or MATH 241or appropriate score on waiver test or department approval for prior work-related experience

### Description:

This course emphasizes problem solving using a high level programming language and the software development process. Algorithm design and development, programming style, documentation, testing and debugging will be presented. Standard algorithms and data structures will be introduced. Data abstraction and an introduction to object-oriented programming will be studied and used to implement algorithms. 3 hrs. lecture, 2 hrs. lab by arrangement/wk.

### Course Fees:

None### Textbooks:

http://bookstore.jccc.edu/### Supplies:

Refer to the instructor's course syllabus for details about any supplies that may be required.### Objectives

Upon successful completion of this course, the student should be able to:

- Describe computer systems.
- Solve problems using a disciplined approach to software development.
- Utilize fundamental programming language features.
- Implement procedures.
- Employ fundamental data structures and algorithms.
- Write code using object-oriented techniques.
- Write code according to commonly accepted programming standards.
- Utilize a professional software development environment.

### Content Outline and Competencies:

I. Computer Systems and Ethics

A. Describe basic hardware components.

1. Describe primary memory.

2. Describe the central processing unit.

3. Describe secondary memory.

4. Describe peripherals.

B. Describe basic software components.

1. Describe operating systems.

2. Describe high-level and machine languages.

3. Describe compilers.

C. Ethics

1. Describe ethics in the context of software development.

2. Describe the impact of ethics violations on software developers.

3. Describe the impact of ethics violations on software users.

II. Problem Solving in Software Development

A. Define the problem.

B. Develop a solution.

1. Utilize top-down design.

2. Consider previous problems and solutions.

3. Re-use pertinent algorithms.

4. Represent algorithms with pseudo-code.

5. Identify input, output, processing and modules.

C. Code the solution.

D. Test the solution.

1. Perform unit and integration testing.

2. Select appropriate test data.

3. Trace code by hand (desk-checking) and with a debugger.

4. Evaluate code efficiency and simplicity.

III. Fundamental Programming Features

A. Declare and initialize variables and constants.

B. Use built-in operators to create expressions and statements.

1. Write assignment statements.

2. Create expressions with arithmetic, relational and logical operators.

3. Use the conditional (ternary) operator.

4. Evaluate expressions using rules of operator precedence.

5. Compare strings and numeric types.

6. Dereference and assign values to pointers.

C. Perform input and output.

1. Retrieve data from the keyboard.

2. Retrieve data from input files.

3. Write data to the console window.

4. Write data to output files.

D. Call built-in mathematical functions.

E. Implement type-casting.

F. Control program flow.

1. Implement selection statements.

a. Write code with if, else and else-if statements.

b. Use switch statements.

c. Write nested selection statements.

2. Implement repetition statements

a. Write while, for and do loops.

b. Create nested loops.

c. Analyze break and continue semantics.

G. Trap errors using selection or repetition.

IV. Procedures

A. Define and call functions with void and non-void return values.

B. Declare functions (prototyping).

C. Implement pass-by-value and pass-by-reference parameters.

D. Differentiate between actual and formal parameters.

E. Analyze and write elementary recursive code.

F. Analyze variable scope and lifetime.

G. Implement static variables.

V. Fundamental Data Structures and Algorithms

A. Implement single dimensional arrays.

1. Implement an array of integers.

2. Implement null-terminated strings.

B. Implement two dimensional arrays.

C. Implement dynamic arrays.

1. Use new and delete to manage memory.

2. Declare pointers.

D. Search arrays.

1. Implement sequential search.

2. Implement binary search.

E. Sort arrays.

1. Sort data using bubble sort.

2. Sort data using selection sort.

3. Sort data using insertion sort.

F. Implement structures.

G. Implement an array of structures.

VI. Object-oriented Programming

A. Write code using the built-in string class and associated methods.

B. Write code using the built-in vector class and associated methods.

C. Implement encapsulation and data abstraction by writing user-defined classes.

D. Differentiate between private and public access modifiers.

E. Hide member data.

F. Write accessors, mutators and other member functions that process member data.

G. Write code that utilizes objects.

H. Implement an array of objects.

VII. Code Standards

A. Create descriptive identifiers according to language naming conventions.

B. Write structured and readable code.

C. Create documentation.

VIII. Professional Development Environment

A. Write code using a professional, integrated development environment (IDE)

B. Utilize key editor features.

C. Debug code using the integrated debugger.

D. Include and use standard libraries.

### Method of Evaluation and Competencies:

40 – 60% Exams (at least three)

20 – 30% Labs (Weekly coding activities covering current lecture topics)

10 – 20% Projects (Comprehensive coding activities covering multiple topics)

10 – 20% Exercises

0 – 20% Quizzes

100%

### Grade Criteria:

90 – 100% = A80 – 89% = B

70 – 79% = C

60 – 69% = D

0 – 59 % = F

### Caveats:

None

### Student Responsibilities:

### Disabilities:

If you are a student with a disability, and if you will be requesting accommodations, it is your responsibility to contact Access Services. Access Services will recommend any appropriate accommodations to your professor and his/her director. The professor and director will identify for you which accommodations will be arranged.

JCCC provides a range of services to allow persons with disabilities to participate in educational programs and activities. If you desire support services, contact the office of Access Services for Students With Disabilities (913) 469-8500, ext. 3521 or TDD (913) 469-3885. The Access Services office is located in the Success Center on the second floor of the Student Center.

# CS 200H

No information found.# CS 201

**Title:**Concepts of Programming Algorithms using C#***Number:**CS 201**Effective Term:**Spring 2015**Credit Hours:**4**Contact Hours:**5**Lecture Hours:**3**Other Hours:**2

### Requirements:

**Prerequisites:** CIS 134 or CS 134 or ENGR 171 or equivalent experience

### Description:

This course emphasizes programming methodology and problem-solving using C#. Algorithm design and development, data abstraction, good programming style, testing and debugging will be presented. 3 hrs. lecture, 2 hrs. open lab/wk.

### Course Fees:

None### Textbooks:

http://bookstore.jccc.edu/### Supplies:

Refer to the instructor's course syllabus for details about any supplies that may be required.### Objectives

- Solve problems using a disciplined approach to object development.
- Create, test and debug programs using the C# programming language
- Describe and use well-known algorithms and data structures.
- Code and document using commonly accepted programming standards.
- Demonstrate an understanding of procedural and data abstraction.

### Content Outline and Competencies:

I. Solve Problems and Develop Algorithms A. Incorporate strategies for Problem Solving 1. Step-wise Refinement 2. Solution by Analogy 3. Use of Previously Developed Subalgorithms B. Practice Problem Analysis 1. Understand the Problem 2. Identify the Input 3. Describe the Output C. Represent Algorithms Using Pseudocode D. Verify Algorithms 1. Desk Checking 2. Selecting Test Data II. Describe and Practice Program Development Methods and Style A. Design 1. Procedural Abstraction 2. Data Abstraction 3. Top-down Design and Step-wise Refinement B. Program Correctness C. Development of Reusable Modules D. Analysis of Program Size and Execution Time III. Create Programs Using the Following Program Structures A. Input B. Output C. Assignment D. Conditional E. Looping F. Subalgorithm Call IV. Describe and Use Features of an Object-Oriented Programming Language A. Data 1. Types and Declarations 2. Scalar Types 3. Structured Types B. Block Structure and Scope of Identifiers C. Expressions 1. Operators 2. Relations 3. Functions 4. Rules of Precedence D. Assignment Statements E. Input and Output 1. Format 2. Screen 3. Printer 4. Disk Files F. Control Structures 1. Sequential 2. Conditional 3. Loops G. Subprograms 1. Functions 2. Value and Reference Parameters 3. Recursion H. Coding Standards and Documentation V. Utilize Data Structures A. One and Two-dimensional Arrays B. Strings C. Objects D. Combinations of Objects VI. Program Well-known Algorithms A. Searches 1. Sequential 2. Binary B. Sorts 1. Insertion 2. Selection 3. Bubble VII. Define Computer Systems A. List and Describe Hardware Components 1. Primary Memory 2. Central Processing Unit 3. Secondary Memory 4. Peripherals B. List and Define System Software 1. Operating Systems 2. Language Translators 3. File Systems

### Method of Evaluation and Competencies:

Three Examinations 70% of grade Seven Programming Projects 30% of grade 100% Grading Criteria: A = 90 - 100% B = 80 - 89% C = 70 - 79% D = 60 - 69% F = 0 - 59%

### Grade Criteria:

### Caveats:

None### Student Responsibilities:

### Disabilities:

If you are a student with a disability, and if you will be requesting accommodations, it is your responsibility to contact Access Services. Access Services will recommend any appropriate accommodations to your professor and his/her director. The professor and director will identify for you which accommodations will be arranged.

JCCC provides a range of services to allow persons with disabilities to participate in educational programs and activities. If you desire support services, contact the office of Access Services for Students With Disabilities (913) 469-8500, ext. 3521 or TDD (913) 469-3885. The Access Services office is located in the Success Center on the second floor of the Student Center.

# CS 205

**Title:**Concepts of Programming Algorithms using Java***Number:**CS 205**Effective Term:**Spring 2015**Credit Hours:**4**Contact Hours:**5**Lecture Hours:**3**Other Hours:**2

### Requirements:

**Prerequisites:** CIS 134 or CS 134 or ENGR 171 or equivalent experience

### Description:

This course emphasizes programming methodology and problem-solving using Java. Algorithm design and development, data abstraction, good programming style, testing and debugging will be presented. 3 hrs. lecture, 2 hrs. open lab/wk.

### Course Fees:

None### Textbooks:

http://bookstore.jccc.edu/### Supplies:

Refer to the instructor's course syllabus for details about any supplies that may be required.### Objectives

- Solve problems using a disciplined approach to object development.
- Create, test and debug programs using the Java programming language.
- Describe and use well-known algorithms and data structures.
- Code and document using commonly accepted programming standards.
- Demonstrate an understanding of procedural and data abstraction.

### Content Outline and Competencies:

I. Solve Problems and Develop Algorithms A. Incorporate strategies for problem solving 1. Step-wise refinement 2. Solution by analogy 3. Use of previously developed subalgorithms B. Practice problem analysis 1. Understand the problem 2. Identify the input 3. Describe the output C. Represent algorithms using pseudocode D. Verify algorithms 1. Desk checking 2. Selecting test data II. Describe and Practice Program Development Methods and Style A. Design 1. Procedural abstraction 2. Data abstraction 3. Top-down design and step-wise refinement B. Program dorrectness C. Development of reusable modules D. Analysis of program size and execution time III. Create Programs Using the Following Program Structures A. Input B. Output C. Assignment D. Conditional E. Looping F. Subalgorithm call IV. Describe and Use Features of an Object-Oriented Programming Language A. Data 1. Types and declarations 2. Scalar types 3. Structured types B. Block structure and scope of identifiers C. Expressions 1. Operators 2. Relations 3. Functions 4. Rules of precedence D. Assignment statements E. Input and output 1. Format 2. Screen 3. Printer 4. Disk files F. Control structures 1. Sequential 2. Conditional 3. Loops G. Subprograms 1. Functions 2. Parameters a. Actual and formal b. Value and reference 3. Recursion H. Coding standards and documentation V. Utilize Data Structures A. One and two-dimensional arrays B. Strings C. Objects D. Combinations of objects VI. Program Well-known Algorithms A. Searches 1. Sequential 2. Binary B. Sorts 1. Insertion 2. Selection 3. Bubble VII. Define Computer Systems A. List and describe hardware components 1. Primary memory 2. Central processing unit 3. Secondary memory 4. Peripherals B. List and define system software 1. Operating systems 2. Language translators 3. File systems

### Method of Evaluation and Competencies:

A minimum of three Examinations 70% of grade A minimum of seven Programming Projects 30% of grade 100% Grade Criteria: A = 90% B = 80% C = 70% D = 60% F = less than 60%

### Grade Criteria:

### Caveats:

None### Student Responsibilities:

### Disabilities:

# CS 210

**Title:**Discrete Structures I***Number:**CS 210**Effective Term:**Spring 2015**Credit Hours:**3**Contact Hours:**3**Lecture Hours:**3

### Requirements:

**Prerequisites:** MATH 171 or both MATH 116 and CIS 134 or CS 134 or appropriate math assessment scores

### Description:

Upon successful completion of this course, the student should be able to use fundamental discrete mathematics as it relates to computers and computer applications. The student will be exposed to a variety of discrete mathematical topics. The course will include fundamental mathematical principles, combinatorial analysis, mathematical reasoning, graphs and trees, and Boolean logic circuits. 3 hrs. lecture/wk.

### Course Fees:

None### Textbooks:

http://bookstore.jccc.edu/### Supplies:

Refer to the instructor's course syllabus for details about any supplies that may be required.### Objectives

- Apply the mathematical tools and techniques basic to and needed for most courses in computer science
- Develop the ability to reason precisely using discrete mathematics models
- Apply the relationship between discrete mathematics and computer science
- Apply the elements of logic to computer science
- Write the truth table of a proposition
- Demonstrate how a proposition is used in computer science
- Apply combinatorial circuits and their use in computer science
- Demonstrate how to simplify Boolean expressions and their use in computer science
- Apply the elements of set theory and related topics to computer science
- Demonstrate Cartesian product and their use in computer science
- Demonstrate sequences and their use in computer science
- Demonstrate mathematical induction and its use in computer science
- Demonstrate matrices and their use in computer science
- Demonstrate graphs and their use in computer science
- Demonstrate trees and their use in computer science
- Demonstrate proofs and arguments and their use in computer science

### Content Outline and Competencies:

I. Introduction A. Determine whether a solution is possible in a variety of circumstances B. Count the number of solutions in a variety of circumstances C. Optimize a solution in a variety of circumstances D. Create PERT charts E. Find the critical path for a PERT chart II. Sets A. Define a set and related properties B. Use operations with sets C. Use Venn Diagrams with sets D. Use DeMorgan's Law E. Use the Cartesian Product III. Equivalence Relations A. Define an equivalence relation B. Find if a relation has the reflexive property C. Find if a relation has the symmetic property D. Find if a relation has the transitive property E. Define and use partitions IV. Congruence Classes A. Define a congruence class and related properties B. Do arithmetic operations using congruence classes V. Functions A. Define a function and related properties B. Define one-to-one and related properties C. Define onto and related properties D. Define composition and related properties VI. Define and use the concepts of Mathematics Induction VII. Graphs A. Define a graph and related properties B. Define a matrix and related properties C. Add matrices D. Subtract matrices E. Do scalar multiplication F. Do matrix multiplication G. Represent a graph as a graph, an adjacency list, and a matrix H. Change from any representation of a graph to another form I. Define and use the concept of isomorphisms J. Define a path and related properties for a graph K. Define a circuit and related properties for a graph L. Find Euler paths and circuits for a graph M. Find Hamiltonian paths and cycles for a graph N. Find the shortest path between any two points in a graph O. Color a map P. Find the graph of a map Q. Define a digraph and related properties R. Represent a digraph as a graph, an adjacency list, and a matrix S. Change the representation of a digraph from any representation of a graph to another form T. Find the Euler paths and circuits for a digraph U. Find Hamiltonian paths and cycles for a digraph VIII. Trees A. Define a tree and related properties B. Create a spanning tree for a graph C. Create a minimum spanning tree for a graph D. Create a maximum spanning tree for a graph E. Create a depth-first search spanning tree for a graph F. Create a breadth-first search spanning tree for a graph G. Define a rooted tree and related properties H. Define a binary tree and related properties I. Create an expression tree for a preorder, postorder, and inorder expression J. Evaluate a preorder, postorder, and inorder expression K. From a tree, write the preorder, postorder, and inorder expression L. Develop an optimal tree using Huffman Code M. Develop and use a binary search tree IX. Matching Problems A. Use systems of distinct representations to solve a variety of problems B. Apply the algorithms of maximal independent sets to solve a variety of problems X. Network Flows A. Define a transportation network and related properties B. Maximize a transportation network C. Find a cut for an optimal transportation network XI. Counting Techniques A. Use the product rule B. Use the sum rule C. Use the Pigeonhole Principle D. Use the notation for permutations and combinations E. Use combinations F. Use permutations G. Use the principle of inclusion-exclusion XII. Combinatorial Circuits A. Define AND, OR, and NOT gates and their related properties B. Use logical gates to create circuits C. Find the Boolean expression of a circuit D. Find the truth table for a Boolean expression E. Use Karnaugh maps to optimize a circuit or a logical expression

### Method of Evaluation and Competencies:

A minimum of 4 examinations at least 60% A minimum of 10 quizzes at least 10% A minimum of 10 homework assignments at least 10% 100% Grade Criteria: A = 90% B = 80% C = 70% D = 60% F = less than 60%

### Grade Criteria:

### Caveats:

None### Student Responsibilities:

### Disabilities:

# CS 210H

No information found.# CS 211

**Title:**Discrete Structures II***Number:**CS 211**Effective Term:**Spring 2015**Credit Hours:**3**Contact Hours:**3**Lecture Hours:**3

### Requirements:

**Prerequisites:** CS 210

### Description:

Upon successful completion of this course, the student should be able to use fundamental discrete mathematics as it relates to computers and computer applications. The student will experiment with a variety of discrete mathematical topics. The course will include fundamental mathematical principles, combinatorial analysis, mathematical reasoning, graphs and trees, and Boolean logic circuits. 3 hrs. lecture/wk.

### Course Fees:

None### Textbooks:

http://bookstore.jccc.edu/### Supplies:

Refer to the instructor's course syllabus for details about any supplies that may be required.### Objectives

- Use the mathematical tools and techniques basic to and needed for most courses in computer science
- Use logic and truth tables
- Use sets and apply set operations
- Use functions
- Use integer and mod arithmetic
- Apply matrix operations
- Develop discrete proofs including mathematical induction
- Develop and use recursive algorithms
- Use combinatorial analysis
- Use recurrence relations
- Use relations and apply their properties
- Use elementary database principles
- Represent relations with matrices
- Use Hasse diagrams to illustrate partial orderings
- Use the principles of graph theory
- Use the principles of trees
- Use logic, Boolean expressions and circuits and minimize each
- Use simple grammar applications

### Content Outline and Competencies:

I. Use fundamental mathematical tools A. Use logic B. Use truth tables C. Use propositional equivalences D. Use predicates and quantifiers E. Use sets F. Use Venn Diagrams G. Apply set operations H. Use power sets and cartesian products I. Use functions and their characteristics J. Use sequences and summations K. Use integer/mod arithmetic L. Use matrices M. Apply matrix operations II. Do mathematical proofs A. Do proofs with truth tables B. Do proofs using mathematical induction C. Use rules of inference III. Recursion A. Develop recursive algorithms B. Develop recursive functions C. Evaluate recursive definitions IV. Counting A. Use the Sum Rule B. Use the Product Rule C. Use the Pigeonhole Principle D. Use Inclusion-Exclusion Principle E. Use Tree diagrams to solve appropriate counting problems F. Use Permutations G. Use Combinations H. Use discrete probability I. Use generalized permutations and combinations J. Use recurrence relations K. Solve recurrence relations L. Apply the inclusion-exclusion principle V. Relations A. Use relations on a set B. Use the properties of relations 1. reflexive 2. irreflexive 3. symmetric 4. asymmetric 5. antisymmetic 6. transitive C. Combine relations D. Use n-ary relations E. Use elementary database principles F. Represent relations in matrix form G. Represent relations in digraph form H. Define equivalence relations I. Define partial orderings J. Use Hasse Diagrams to represent partial orderings VI. Graph Theory A. Define graphs, digraphs, simple graphs, multigraphs, pseudographs B. Represent graphs as pictures C. Represent graphs in matrix form D. Use graph terminology E. Apply graph theory to applications F. Use adjacency and incidence matrices G. Use isomorphisms and their properties H. Use connectivity, paths and circuits I. Create Euler paths and circuits J. Create Hamilton paths and cycles K. Using Dijkstra's Algorithm, find the shortest path between points L. Use planar graphs and their properties M. Color maps, create graphs of maps, and use their properties VII. Trees A. Define a tree and related vocabulary B. Use the properties of trees C. Create binary search trees D. Use trees for preorder, postorder, and inorder expressions E. Develop preorder, postorder, and inorder expressions F. Translate trees into preorder, postorder, and inorder expressions G. Translate preorder, postorder, and inorder expressions to trees H. Use tree transversal methods I. Evaluate preorder, postorder, and inorder expressions J. Evaluate preorder, postorder, and inorder trees K. Define spanning trees L. Create minimum and maximum spanning trees of graphs M. Create depth-first and breadth-first spanning trees of graphs VIII. Boolean Algebra A. Use Boolean expressions and operations B. Create a Truth Table from a Boolean expression C. Represent Boolean Expression as sums of products D. Define logic gates and related properties E. Create Boolean expressions from circuits F. Use logic gates to include OR, AND, NOT, NOR, and NAND G. Create circuits using OR, AND, NOT, NOR, and NAND gates H. Use Karnaugh Maps to minimize circuits and Boolean expressions I. Use Quine-McCluskey method to minimize circuits and Boolean expressions IX. Grammars A. Define grammars and related properties B. Use Phrase-Structure grammars C. Use finite-state machines

### Method of Evaluation and Competencies:

A minimum of 3 examinations 50% A minimum of 25 homework assignments 41.66% A minimum of 5 quizzes 8.33% 100% Grade Criteria: A = 90% B = 80% C = 70% D = 60% F = less than 60%

### Grade Criteria:

### Caveats:

None### Student Responsibilities:

### Disabilities:

# CS 211H

No information found.# CS 225

**Title:**Digital Logic with VHDL***Number:**CS 225**Effective Term:**Spring 2015**Credit Hours:**2**Contact Hours:**3**Lecture Hours:**1**Lab Hours:**2

### Requirements:

**Prerequisites:** ELEC 125

### Description:

This course introduces students to the Very High Speed Integrated Circuit Hardware Descriptive Language (VHDL) used to implement digital logic designs with programmable logic devices. Students will learn the different types of programmable logic devices and how to use an industry-standard programming environment to code designs with VHDL. 1hr. lecture & 2 hrs. instuctional lab/wk.

### Course Fees:

None### Textbooks:

http://bookstore.jccc.edu/### Supplies:

Refer to the instructor's course syllabus for details about any supplies that may be required.### Objectives

- Evaluate the differences between various programmable logic devices to determine appropriate application.
- Explain how VHDL programming structures are used to implement digital logic on programmable logic devices.
- Demonstrate the organization and operation of an industry-standard VHDL programming environment.
- Design an optimized solution to a combinational digital circuit problem appropriate to a given target device.
- Create VHDL projects for a sequential digital circuit and implement on a target device.
- Demonstrate the design functionality on the hardware device in a lab environment.

### Content Outline and Competencies:

I. Programmable Logic Devices (PLD) A. Compare the characteristics of Programmable Logic Array (PLA), Field-Programmable Gate Array (FPGA), Complex Programmable Logic Device (CPLD) and other programmable logic devices. B. Evaluate circuit design considerations for each type of device. C. Appraise applications of CPLDs and FPGAs. II. Introduction to VHDL Programming A. Describe the programming structures in VHDL. B. Translate basic combinational digital circuits to VHDL code. C. Create VHDL files to model basic logic circuits. D. Describe the process for implementing a more complex digital design with VHDL. III. The VHDL Integrated Programming Environment A. Configure an industry-standard VHDL programming development environment. B. Access code library resources for VHDL coding. C. Create a hierarchical VHDL project incorporating new and existing VHDL resources. IV. Combinational Design for Programmable Logic Devices A. Apply Computer-Aided Design (CAD) tools to optimize designs for a target device. B. Explain synthesis and optimization in the VHDL environment. C. Test combinational circuit performance in simulation and hardware implementations. V. Sequential Design with VHDL A. Design a sequential logic circuit to meet functional specifications. B. Create the code within a VHDL project. C. Describe the types of simulation tools available for testing in the given development environment. D. Develop a test plan to evaluate the function of the given circuit. E. Evaluate a sequential design using simulation tools in the VHDL environment. VI. Implement Logic on Hardware A. Configure a given target device for programming and upload a tested program. B. Evaluate the performance of the circuit according to the test plan.

### Method of Evaluation and Competencies:

Quizzes/Tests 30-60% of grade Assignments/Projects 30-60% of grade Participation/Discussion 0-20% of grade Total 100% of grade Grade Criteria: A = 90-100% B = 80-89% C = 70-79% D = 60-69% F = less than 60%

### Grade Criteria:

### Caveats:

### Student Responsibilities:

### Disabilities:

# CS 235

**Title:**Object-Oriented Programming Using C++***Number:**CS 235**Effective Term:**Spring 2015**Credit Hours:**4**Contact Hours:**5**Lecture Hours:**3**Other Hours:**2

### Requirements:

**Prerequisites:** CS 200 or CS 201 or CS 205

### Description:

This course emphasizes programming methodology and problem solving using the object-oriented paradigm. Students will develop software applications using the object-oriented concepts of data abstraction, encapsulation, inheritance, and polymorphism. Students will apply the C++ techniques of dynamic memory, pointers, built-in classes, function and operator overloading, exception handling, recursion and templates. 3 hrs. lecture, 2 hrs. lab by arrangement/wk.

### Course Fees:

### Textbooks:

http://bookstore.jccc.edu/### Supplies:

### Objectives

Upon successful completion of this course, the student should be able to:

- Develop C++ programs using a disciplined object-oriented approach to software development.
- Create C++ classes using the concepts of encapsulation and data abstraction.
- Create programs that integrate advanced programming topics.
- Develop new classes by inheriting existing classes.
- Implement polymorphism to produce dynamic, run-time applications.
- Employ commonly accepted programming standards for code and documentation.

### Content Outline and Competencies:

I. Software Development

A. Identify C++ features needed to solve problems in C++.

B. Define the problem and identify the classes.

C. Develop a solution.

D. Code the solution.

E. Test the solution.

II Encapsulation and Data Abstraction

A. Apply the C++ syntax to define classes.

B. Use the string class and the vector template classes.

C. Create copy constructors.

D. Create friend functions.

E. Create overloaded operators including the >>, << and = operators.

F. Implement class composition.

G. Describe and create constructors and destructors.

H. Describe use of the “this” pointer.

I. Implement classes that contain arrays of objects.

J. Compare static and instance data members in a class.

K. Compare private and public access specifiers.

III. Advanced Programming Topics

A. Establish pointers to manage dynamic memory.

1. Use new and delete operators.

2. Declare dynamic memory arrays.

3. Define and use pointers to objects.

4. Define objects containing pointers.

B. Create recursive functions.

C. Organize projects into multiple files.

D. Handle exceptions caused by unusual or error conditions during program execution.

E. Describe and use the C++ I/O system.

F. Create templates to develop data independent classes.

IV. Inheritance

A. Explain how inheritance can be used to develop new classes.

B. Explain the “is-a” and the “has-a” relationships between classes.

C. Describe and use constructors and destructors for inherited classes.

D. Define the base class.

E. Use inherited classes.

F. Create overloaded, inherited functions.

V. Polymorphism

A. Explain how polymorphism is used to solve programming problems.

B. Create virtual functions.

C. Create abstract classes using pure virtual functions.

D. Explain static binding and dynamic binding.

VI. Code Standards

A. Create descriptive identifiers according to language naming conventions.

B. Write structured and readable code.

C. Create documentation.

### Method of Evaluation and Competencies:

20 – 30% Labs (weekly coding activities covering current lecture topics)

10 – 20% Projects (comprehensive coding activities covering multiple topics)

10 – 20% Exercises

0 – 20% Quizzes

40 – 60% Exams (at least two major exams)

100%

### Grade Criteria:

90 – 100% = A80 – 89% = B

70 – 79% = C

60 – 69% = D

0 – 59 % = F

### Caveats:

### Student Responsibilities:

### Disabilities:

# CS 236

**Title:**Object-Oriented Programming Using C#***Number:**CS 236**Effective Term:**Spring 2015**Credit Hours:**4**Contact Hours:**5**Lecture Hours:**3**Lab Hours:**2

### Requirements:

**Prerequisites:** CS 201

### Description:

This course prepares students to develop object-oriented, C# applications that solve a variety of problems. Students will apply object-oriented concepts including inheritance, function overloading, and polymorphism and will utilize available classes as well as design their own. Event-driven programming, Windows applications, web development, common data structures, database access, and frameworks will be presented. 3 hrs. lecture, 2 hrs. instructional lab/wk.

### Course Fees:

None### Textbooks:

http://bookstore.jccc.edu/### Supplies:

Refer to Instructor's course syllabus for details about any supplies that may be required.### Objectives

- Design object-oriented solutions for console applications, Windows Forms applications, and Web-based applications and select appropriate technology stacks.
- Develop, debug, build, and execute a variety of C# applications.
- Employ event-driven programming, event handlers, and the .NET library of classes.
- Develop applications that use C# to read and write information from text files.
- Employ ADO.NET to create Web Services and Web applications.
- Apply basic SQL (Structure Query Language) commands to interact with relational database management systems.
- Employ common data structures in C# programs.
- Employ a C# framework to create object-oriented C# applications.
- Explain related technologies such as LINQ (Language Integrated Query), WPF (Windows Presentation Foundation), WCF (Windows Communication Foundation) and how they support object-oriented solutions.
- Apply the principles of object-oriented design to solve current problems.

### Content Outline and Competencies:

I. Object-Oriented Programming and Frameworks

A. Discuss the history and objectives of C# and .NET.

B. Explain and utilize the characteristics of object-oriented design.

C. Utilize Visual Studio and explore an associated framework.

II. Object-Oriented Windows Solutions

A. Discuss key elements of graphical user interfaces (GUI).

B. Discuss issues related to GUI design.

C. Design, develop, debug, and execute GUI desktop solutions.

D. Employ common GUI controls.

III. Event-driven Programming

A. Implement delegates.

B. Implement event handlers.

C. Apply combo box and list box classes in C# programs.

D. Apply menus, tab controls, radio buttons, and check box classes in

C# programs.

IV. Advanced Object-Oriented Programming

A. Utilize abstraction, encapsulation, inheritance, polymorphism in

object-oriented design.

B. Explain the difference between composition and inheritance.

C. Discuss why polymorphism is a common goal in .NET.

D. Discuss multi-tier applications and component-based development.

E. Utilize abstract and partial classes.

F. Implement interfaces.

G. Implement generics

V. Error Handling

A. Explain exception classes.

B. Employ standard exceptions and create custom exceptions.

C. Employ exception handling techniques including catching and throwing

exceptions and using try, catch, and finally blocks.

D. Experiment with the numerous types of errors and exceptions and

develop advanced techniques for debugging.

E. Employ the debugger to find run-time errors.

VI. File Input and Output

A. Utilize the System.IO namespace classes.

B. Employ File and Directory classes.

C. Employ FileInfo and DirectoryInfo classes.

D. Apply stream classes to read and write data from text files in C#

programs.

E. Read and write binary files.

VII. Data Structures and Accessing Data with ADO.NET, SQL, and LINQ

A. Discuss common data structures such as lists, stacks, queues, and

trees.

B. Utilize generics with a data structure to solve an applications

problem.

C. Discuss data access technologies.

D. Employ DataReader, DataSet and DataAdapter classes.

E. Employ SQL to query databases.

F. Utilize visual development tools for data access.

G. Explain the use of LINQ.

VIII. Web Solutions

A. Compare and contrast Windows versus Web development.

B. Explain and employ ASP.NET.

C. Utilize a variety of Web controls.

D. Explain Web Services and their role in distributed applications.

E. Discuss issues related to the development of mobile applications.

IX. C# Frameworks

A. Discuss frameworks and software development kits (SDKs) - what they

are and when they are used.

B. Employ a sample framework.

C. Develop and use multimedia classes (e.g. images and sounds).

D. Discuss applications that employ additional devices and hardware.

E. Create an application using a sample framework or SDK.

### Method of Evaluation and Competencies:

Assessment Type Weight

Minimum of 2 exams 30-50

Quizzes 20-30%

Minimum of 5 projects 20-30%

Lab Assignments 10-20%

Total 100%

Grading Scale:

90-100% = A

80-89% = B

70-79% = C

60-69% = D

### Grade Criteria:

### Caveats:

### Student Responsibilities:

### Disabilities:

# CS 250

**Title:**Basic Data Structures using C++***Number:**CS 250**Effective Term:**Spring 2015**Credit Hours:**4**Contact Hours:**5**Lecture Hours:**3**Other Hours:**2

### Requirements:

**Prerequisites:** (CS 235 or CIS 235) OR CS 200 and (CS 210 or CS 236 or CS 255 or CIS 240 or MATH 242)

### Description:

This course continues developing problem solving techniques by focusing on object-oriented styles using C++ abstract data types. Basic data structures such as queues, stacks, trees, dictionaries, their associated operations, and their array and pointer implementations will be studied. Topics also include recursion, templates, fundamental algorithm analysis, searching, sorting, hashing, object-oriented concepts and large program organization. Students will write programs using the concepts covered in the lecture. 3 hrs. lecture, 2 hrs. lab by arrangement/wk.

### Course Fees:

None### Textbooks:

http://bookstore.jccc.edu/### Supplies:

Refer to the instructor's course syllabus for details about any supplies that may be required.### Objectives

Upon successful completion of this course, the student should be able to:

- Write advanced object-oriented code in the context of data structures.
- Develop programs that integrate advanced programming topics.
- Analyze and create code using fundamental data structures.
- Examine advanced algorithms and techniques.
- Write code according to commonly accepted programming standards.

### Content Outline and Competencies:

I. Advanced Object-Oriented Code

A. Implement inheritance.

B. Implement polymorphism, virtual methods and late binding.

C. Implement class and function templates.

D. Write code with classes from the Standard Template Library.

E. Implement class composition.

F. Create user-defined exception objects.

G. Implement friend classes and functions.

H. Implement overloaded operators.

II. Advanced Programming Topics

A. Manage indexing, pointers and multiple levels of indirect addressing.

B. Manage dynamic memory.

C. Write recursive programs.

D. Organize projects into multiple files.

E. Handle exceptions.

F. Pass function pointers.

G. Implement backtracking.

H. Examine and create recursive grammars and languages.

I. Implement prefix and postfix expressions.

III. Fundamental Data Structures

A. Analyze code implementing linked lists, dummy head nodes, circular linked lists and doubly linked lists.

B. Analyze code implementing stacks.

C. Analyze code implementing queues.

D. Analyze code implementing trees and associated traversals.

E. Analyze code implementing dictionaries.

F. Analyze code implementing priority queues.

G. Analyze code implementing heaps.

H. Analyze code implementing hash tables.

I. Create applications utilizing fundamental data structures.

IV. Advanced Algorithms

A. Review data sorting with selection, bubble and insertion sort.

B. Sort data with merge sort, quick sort, radix sort and heap sort.

C. Analyze algorithmic efficiency.

V. Code Standards

A. Create descriptive identifiers according to language naming conventions.

B. Write structured and readable code.

C. Create documentation.

### Method of Evaluation and Competencies:

20 – 30% Labs (Weekly coding activities covering current lecture topics)

10 – 20% Projects (Comprehensive coding activities covering multiple topics)

10 – 20% Exercises

0 – 20% Quizzes

40 – 60% Exams (Minimum of 2)

100%

### Grade Criteria:

90 – 100% = A80 – 89% = B

70 – 79% = C

60 – 69% = D

0 – 59 % = F

### Caveats:

None

### Student Responsibilities:

### Disabilities:

# CS 255

**Title:**Basic Data Structures Using Java***Number:**CS 255**Effective Term:**Spring 2015**Credit Hours:**4**Contact Hours:**5**Lecture Hours:**3**Other Hours:**2

### Requirements:

**Prerequisites:** CS 205 or CS 236 or CIS 240

### Description:

This course will cover advanced programming topics using Java. Files, recursion, data structures and large program organization will be implemented in projects using object-oriented methodology. Students will write programs using queues, stacks, lists and other concepts covered in the lecture. 3 hrs. lecture, 2 hrs. lab by arrangement/wk.

### Course Fees:

None### Textbooks:

http://bookstore.jccc.edu/### Supplies:

Refer to the instructor's course syllabus for details about any supplies that may be required.### Objectives

Upon successful completion of this course, the student should be able to:

- Write advanced object-oriented code in the context of data structures.
- Develop programs that integrate advanced programming topics.
- Analyze and create code using fundamental data structures.
- Examine advanced algorithms and techniques.
- Write code according to commonly accepted programming standards.

### Content Outline and Competencies:

I. Advanced Object-Oriented Code

A. Implement inheritance.

B. Implement polymorphism, virtual methods and late binding.

C. Implement generic classes and interfaces.

D. Write code with classes from the Java Library.

E. Implement class composition.

F. Create user-defined exception objects.

II. Advanced Programming Topics

A. Write recursive programs.

B. Organize projects into packages and multiple files.

C. Handle exceptions.

D. Examine and create recursive grammars and languages.

E. Implement prefix and postfix expressions.

F. Input and output data using advanced input/output capabilities.

III. Fundamental Data Structures

A. Analyze code implementing linked lists, dummy head nodes, circular linked lists and doubly linked lists.

B. Analyze code implementing stacks.

C. Analyze code implementing queues.

D. Analyze code implementing trees and associated traversals.

E. Analyze code implementing priority queues.

F. Analyze code implementing heaps.

G. Analyze code implementing hash tables.

H. Create applications utilizing fundamental data structures.

IV. Advanced Algorithms

A. Review data sorting with selection, bubble and insertion sort.

B. Sort data with merge sort, quick sort and heap sort.

C. Review linear and binary searching.

D. Analyze algorithmic efficiency.

V. Code Standards

A. Create descriptive identifiers according to language naming conventions.

B. Write structured and readable code.

C. Create documentation.

### Method of Evaluation and Competencies:

20 – 30% Labs (Weekly coding activities covering current lecture topics)

10 – 20% Projects (Comprehensive coding activities covering multiple topics

10 – 20% Exercises

0 – 20% Quizzes

40 – 60% Exams (Minimum of 2)

100%

### Grade Criteria:

90 – 100% = A80 – 89% = B

70 – 79% = C

60 – 69% = D

0 – 59 % = F

### Caveats:

None