Syllabus#

Pre-requisites#

  • CSC-121 Introduction to Computer Programming

Course Description#

A second course in Computer Programming emphasizing Object-Oriented design, Linear Data Structures, and Algorithm design and analysis. Topics include: Objects, Classes, Inheritance, Linked lists, Queues, Stacks, Recursion, Searching, and Sorting.

Course Goals and Outcomes#

Building on computational thinking and problem-solving skills from CSC-121.

  1. Algorithm Development

    • Understand algorithm development as an iterative process

    • Communicate an algorithm as a language independent sequence of steps.

    • Interpret and implement recursive algorithms.

  2. Algorithm Application and Analysis

    • Choosing the right algorithm given the problem parameters (inputs and outputs)

      • Pattern recognition / transfer: When confronted with a problem being able to recall a similar problem previously seen and its solution.

    • Evaluating efficiency of algorithms.

  3. Implementation and understanding of Object-Oriented Programming such as inheritance, polymorphism, and encapsulation.

  4. Students will develop basic skills in modeling and implementing object-oriented solutions, including Linear Data Structures:

    • Linked lists

    • Stacks

    • Queues

  5. Code Literacy

    • Code tracing (with appropriate visualization)

      • State the output of a given block of code.

    • Describe what a code block does at a high-level rather than what it says (reversal of design implementation)

  6. Testing as Iterative Verification: Code writing and bug fixing, test conception and writing. Ability to identify for an algorithm: average cases, boundary cases, negative cases, extreme cases. Treat code as guilty until proven innocent.