If you complete this course and do well, you will be able to:

  1. Civic Engagement
    1. Engage and build technology that responds to human needs and helps people navigate institutional systems.
  2. Critical Thinking
    1. Assess why certain solutions might not work and to save time in coming up with a more efficient approach.
  3. Professional Readiness
    1. Work well with others and display situationally and culturally appropriate demeanor and behavior.
  4. Quantitative Literacy
    1. Perform accurate calculations, interpret quantitative information, apply and analyze relevant numerical data, and use results to support conclusions.
  5. Scientific Literacy
    1. Represent real-world objects and processes virtually by identifying properties, behavior, and operations relevant to solving problems on a computer.
  6. Written Communication
    1. Develop, convey, and exchange ideas in writing, as appropriate to a given context and audience.
  7. Review of Procedural Problem-Solving Concepts
    1. Describe activities related to program development.
    2. Solve problems using techniques such as pseudocode, flowcharts, UML, and model development.
    3. Evaluate algorithms for errors.
    4. Discuss the presence of algorithms in various activities.
  8. Review of Procedural Programming
    1. Design programs using appropriate program design techniques.
    2. Develop programs using sequential and selection operations.
    3. Choose adequate repetition structures based on the type of application.
    4. Solve problems using procedures.
    5. Develop applications using arrays.
  9. Object-Oriented Design
    1. List the members of a class and identify the purpose of each.
    2. Describe the mechanisms used to provide and restrict access to class members.
    3. Explain the difference between overloading and overriding.
    4. Explain how to construct and release objects within a program.
    5. Explain cohesion and how to achieve high cohesion.
    6. Compare procedural design to an object-oriented design.
  10. Development & Testing Tools
    1. Apply a variety of tools for program development and testing.
    2. Apply a version control system in team or multiple revision scenarios.
    3. Apply the use of an automated debugger to set breakpoints and examine data values.
  11. Abstract data type (ADT) Implementations & Applications
    1. Design and implement classes.
    2. Design, implement, and manipulate objects belonging to classes.
    3. Explain the difference between data structures that are internal versus external to a class.
  12. Recursion
    1. Explain the parallels between ideas of mathematical and/or structural induction to recursion and recursively defined structures.
    2. Create a simple program that uses recursion.
    3. Describe how recursion is implemented on a computer.
  13. Inheritance & Polymorphism
    1. Explain the benefits and restrictions of inheritance.
    2. Distinguish between inheritance of implementation and inheritance of design.
    3. Design class hierarchies using inheritance and interfaces.
    4. Create a class which implements an interface.
    5. Explain how inheritance and virtual functions implement dynamic binding with polymorphism.
  14. Files & Exceptions
    1. Create programs using file handling techniques.
    2. Describe the use of relative and absolute paths to identify a file.
    3. Detecting end of input conditions and common error conditions.
    4. Explain encapsulating exceptions.
    5. Demonstrate throwing and catching exceptions.
    6. Write code to implement try catch and finally blocks.
    7. Write code to create a custom Exception.