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.
Algorithm Development
Understand algorithm development as an iterative process
Communicate an algorithm as a language independent sequence of steps.
Interpret and implement recursive algorithms.
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.
Implementation and understanding of Object-Oriented Programming such as inheritance, polymorphism, and encapsulation.
Students will develop basic skills in modeling and implementing object-oriented solutions, including Linear Data Structures:
Linked lists
Stacks
Queues
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)
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.