10 Learning Objectives

Software Ecosystem and Development

Functional Programming

Abstractions and Representations

Recognize, analyze, and revise software designs with respect to abstractions (interfaces presented to external users), and representations (implementations depended upon for internal algorithms).

Technical Reading Comprehension

Technical Writing and Rhetoric

Present your designs and implementations for a like-minded audience such that:

Documentation and Usability

This is practicing industry attractive soft-skills.

CodeGen and Metaprogramming

Language FrontEnd Design

Composing Feedback and Evaluation

Provide meaningful, actionable feedback that:

Metacognition, Reflection, and Personal Growth

5 Levels of Detail


Required level of skill to begin any of this work.

Analogous to: Multiple-choice question


Recreate solutions in the same context as that in which the material was taught (literally recall), but without hints. Analogous to: Fill in the blank


Solve a problem by recognizing that it is similar to one you have seen before. Analogous to: Word problem


Think about something big and abstract in the context provided by this course -- in order words, reason about a specific domain. Analogous to: Short essay


Bring (or radiate) the knowledge and skills acquired in the course to "real world" contexts. From pedagogy theory, this is called far-transfer learning and answers the: "Will I use this n years from now?" question. There isn't a clear analogy of assessment for radiant knowledge. Classrooms typically cannot assess how students have applied the concepts outside of the classroom because students aren't observed outside of the classroom. However, you are preparing artifacts for real world use and and we are simulating how experts in the field or end users would accept these artifacts, so, we can get pretty close to assessing your radiant knowledge.