Module 11 Objective Mapping

Thomas J. Kennedy

Contents:

1 Module Objectives

You will notice quite a few mappings of Module 11 objectives (row) to Course Objectives (column). NumPy provides a number of mechanics that provide more performant C-level implementations of conditional blocks and loops.

# Module Objective 1 2 3 4 5 6.A 6.B 7.A 7.B 8 9 10 11 12 13 14 15
1 Create an empty (uninitialized) numpy.array.
2 Create a numpy.array initialized to all zeroes.
3 Create a numpy.array initialized to all ones.
4 Create a numpy.array of ints from a Python list.
5 Create a numpy.array of floats from a Python list.
6 Obtain the dimensions of a numpy.array using shape.
7 Write and rewrite code to make use of NumPy’s broadcast functionality in place of a loop.
8 Perform basic statistical analysis (e.g., mean, min, max, and standard deviation) using NumPy.
9 Explain the axis parameter.
10 Summarize the performance (runtime and memory utilization) of NumPy in comparison the Python lists.

2 Lectures & Objectives

The following table shows lectures (rows) vs Module Level Objectives (columns).

Lecture 1 2 3 4 5 6 7 8 9 10
Module 11 Objective Mapping
Creating Arrays
Broadcasting
Statistics
NumPy & Multi-Dimension Arrays
NumPy & Multi-Dimension Arrays - Refactoring
NumPy & Multi-Dimension Arrays - NumPy Magic
Module 11 Summary

3 Course Level Objectives

The course objectives are listed in section 2.4 of the syllabus and reproduced in this document for reference.

A student who successfully completes this course will be able to (in Python):

  1. Run a program consisting of a single file and containing a main function.
  2. Run a program consisting of multiple modules and containing a main function.
  3. Organize code into multiple modules.
  4. Write tests for a module.
  5. Apply the basics of test-driven development through PyTest and/or unittest.
  6. Make use of the various loops (for and while)
    1. Compare the various loops (for and while)
    2. Choose the most appropriate loop (for or while) for a given problem
  7. Make use of the conditional blocks (i.e., if, if-else, and if-else-if-else).
    1. Compare the various conditional blocks (i.e., if, if-else, and if-else-if-else)
    2. Construct the appropriate conditional block (i.e., if, if-else, and if-else-if-else) for a given problem.
  8. Test and write functions.
  9. Design ADTs in accordance with the Class Checklist.
  10. Discuss when polymorphism is appropriate.
  11. Discuss when it is appropriate to utilize dataclasses, classes, and enums.
  12. Write code that utilizes dunder functions.
  13. Refactor code to follow best practices (e.g., PEP 8 and PEP 20).
  14. Apply code linting tools (e.g., pylint and black) to write idiomatic (Pythonic) code.
  15. Discuss the various NumPy np.array mechanics (e.g., broadcasting).