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 Object- Oriented Principles
    1. Compare and contrast procedural versus object-oriented programming.
    2. Design class hierarchies using inheritance and interfaces.
    3. Implement in code OOP constructs including encapsulation, inheritance, and polymorphism.
    4. Review the design, implementation, and efficiency of recursive algorithms.
    5. Review of arrays and exception handling.
  8. Analysis of Algorithms
    1. Discuss the differences between iterative vs. recursive algorithms.
    2. Demonstrate worst-case complexity function.
    3. Define other complexity functions such as best case, average case, and amortized.
  9. Data Structures
    1. Describe and explain abstract data types including stacks, queues, singly and doubly linked list, sets, maps and graphs.
    2. Compare and contrast contiguous and linked structures.
    3. Explain the purpose and use of iterators.
    4. Implement in code the various data structures using both contiguous and linked applications where applicable.
    5. Analyze the time and space efficiency of data structures and algorithms and apply this analysis to select the best tools for solving problems.
    6. Explain how generics and parameterized types implement dynamic binding with polymorphism.
  10. Searching and Sorting Algorithms
    1. Analyze a variety of algorithms for searching and sorting.
    2. Classify the various sorting algorithms in terms of their Big-O analysis.
    3. Implement both recursive and non-recursive algorithms for searches.
  11. Additional Data Structures
    1. Demonstrate the appropriate use of trees, graphs, sets, heaps, hash tables, and maps to computational problems.
    2. Describe techniques to generate keys for hashed structures.
    3. Discuss collision handling for hashing analysis.
    4. Demonstrate the use of binary search trees.
    5. Identify other types of tree data structures and their applications.
  12. Real-World Applications
    1. Create a solution to real-world computing problems by applying appropriate data structures.
    2. Employ best practices to design, document and implement the solution to a real-world application.
    3. Make efficient use of formal testing and debugging.
    4. Apply the use of a version control system or a sandbox environment in team or multiple revision scenarios.
    5. Demonstrate proficiency in the use of programming languages to solve complex problems in a secure and robust manner.
    6. Discuss ethical aspects of programming and data handling.