In the past year, I’ve had a growing interest in formal methods of Instructional Design. One of my new favorite activities is writing learning objectives. I’m still developing that skill, but I though it would be interesting to share some of the objectives I’ve written for the Computational Thinking course. As you can see, there are a large number of learning objectives, and I doubt we actually cover all of them in the CT course. There’s still a lot to improve about the curriculum. There’s also a lot to improve about these outcomes. I noticed while reviewing them that there isn’t anything about students working with nested control structures, for instance.
-
Algorithms
-
Control Structures
-
State the control structures of algorithms
-
Differentiate between sequence, decision, and iteration [and function]
-
Explain the behavior of nesting control structures inside of each other.
-
-
Program State
-
Define the concept of a program’s state
-
Describe how program state changes with respect to time
-
Trace program execution with sequence, decision, and iteration
-
Relate program state with the inputs and outputs of a program.
-
-
Decision
-
Identify the condition, body, else-body of a decision
-
Write a numerical condition
-
Write a Boolean condition
-
Write a condition with a logical AND or OR
-
Explain the behavior of commands inside a decision.
-
Solve a problem that requires decision
-
-
Iteration
-
Identify the iteration variable, iteration list, and body of an Iteration
-
Write an iteration over a list of complex structured data
-
Write an iteration over a list of primitive data
-
Evaluate the name of the iteration variable
-
Express implicit solutions in terms of explicit iteration commands
-
Explain the behavior of commands inside an iteration
-
-
Documentation
-
Explain the use, power, limitation, and danger of importing
-
Define documentation for an API
-
Identify the inputs and outputs for a given function of an API
-
Explain how to search for help on an API
-
-
Reporting
-
Predict the printed output for a string variable
-
Predict the printed output for a string
-
Predict the printed output for an integer
-
Predict the printed output for a list
-
Differentiate between storing, importing, printing, and plotting
-
-
Create an algorithm to solve a problem involving real-world data.
-
-
Abstraction
-
Types
-
List the types of data used in this course (String, integer, float, Boolean, list, or dictionary)
-
Differentiate between simple/primitive types of data and complex types.
-
Differentiate between a variable and a string
-
-
Real-world vs Code
-
Create an abstraction, including the real-world entity, stakeholder, variables
-
Instantiate an abstraction, including the values for each variable
-
Code an abstraction as an integer, string, Boolean, list, dictionary
-
Interpret an abstraction to identify the real-world entity, potential stake-holders, limitations, and potential questions it could be used to answer
-
-
Variable Creation and Manipulation
-
Create a value to print
-
Create a list of values for a plot
-
Append values to an empty list using iteration
-
Manipulate an existing variable
-
Evaluate the name of a variable for clarity, correctness, and disambiguity
-
Calculate the result of an assignment involving constant expressions.
-
Calculate the result of an assignment involving self-referential expressions.
-
Estimate the result of an assignment involving a function call
-
Evaluate the benefit of storing the result of a call in a variable for use
-
-
Dictionaries
-
Access an element of a dictionary
-
Access a dictionary inside of a dictionary
-
Identify the elements of a dictionary (name of key, type of value)
-
Differentiate between a dictionary and a list
-
-
Lists
-
Identify the type of a list
-
Explain the difference between an empty list a non-empty list
-
Explain the purpose of the “append” function of lists
-
Identify how to access data within a list
-
-
Structured data
-
Outline the structure of data
-
Give the path to an element of structured data
-
Relate a path to the needed control statements to access that data (iteration, dictionary access)
-
-
Analysis
- Criticize a data set for its limitations
-
-
Social Impacts
-
In Society
-
Identify the stakeholders, impact, conflicts, and pressures of a scenario.
-
Evaluate a conflict to identify an ethical action to take
-
Describe the pervasiveness of computing for a stakeholder
-
Identify stakeholder pressures and judge whether they are external or internal
-
Describe the privileges (or lack thereof) of stakeholders in relation to computing
-
Describe the privacy rights and expectations of stakeholders in relation to computing
-
Describe the powers of stakeholders’ over computing
-
-
In Your Life
-
Relate computing ethics to your profession.
-
Use ethics to decide on and defend your computing behavior
-
-
-
Data Science (Secondary objectives)
-
Plotting
-
Identify the scenarios where you would want to use a given type of plot
-
Differentiate between line plots, XY plots, scatter plots, histograms, bar charts, maps
-
Interpret a plot to answer a question
-
Evaluate a plot for its clarity and beauty
-
-
Statistics
-
Give descriptive statistics for a list of numbers (min, max, mean, std dev)
-
Explain the value of reporting the standard deviation alongside the mean.
-
-
-
Project Management
-
Develop a project iteratively
-
Debug a program that is not behaving
-
Detect the problem in a program
-
Work on a project early, consistently, and in reasonable chunks.
-