Outcomes notes
From
(Difference between revisions)
Robertsurton (Talk | contribs) (handoff) |
Robertsurton (Talk | contribs) (handoff) |
Current revision as of 11:24, 21 September 2019
- We need to talk more about parallelism, distributed systems, multithreading, POSIX threads, OpenMP, kinds of parallelism, the theory of parallel algorithms, etc., and we need to expose students to it earlier, but that perspective is not yet well reflected in these outcomes. We need to make a pass through the whole project and figure out what we expect and how and where to express it in the outcomes.
- Other ways to connect a program with its environment are important but probably out-of-scope:
- Parse and generate binary-formatted external files.
- Interact with a document that provides context for the program through a DOM. (Fundamental if the student is learning Javascript.)
- Read and write messages over a network protocol.
- Share information with other programs through an IPC mechanism.
- Interact with the user through a GUI.
- We need to make sure we’re setting the right expectations, early enough, about internationalization, localization, correct use of Unicode strings, etc.
- The coverage of object-oriented programming and generic programming in the programming outcomes needs to be expanded.
- The computational thinking section is rudimentarily sorted but neither in prose nor complete.
- Three levels/kinds of skill at doing X: I can do X by correctly and idiomatically using a tool provided by a language, library, etc.; I can do X myself but do not understand how well enough to explain it in the form of an algorithm; I can do X by writing a program to do it. They are not really hierarchical, except that you can’t program something you don’t know in principle how to do yourself. It would be good to be clearer about the distinction between these kinds of skill throughout this project; for example, in DSA it’s mostly write-a-program-to-do, but in programming it’s mostly do-using-a-tool-provided-by-language, and there’s a lot of do-myself in computational thinking.
- When discussing data structures, I use both “collection” (the more mathematically clear word and the one used in Java) and “container” (the more popular word used in C++), but we should settle on one consistently. I tried to correct all instances of “element” to “item”. Data structures have a lot of synonyms, which
- The dependability outcomes should incorporate more of the terminology and perspectives of “Basic Concepts and Taxonomy of Dependable and Secure Computing” by Avižienis et al.
- Math for computing is missing as a subject. We should incorporate discrete math outcomes, rather than being afraid to step on math departments’ toes, and clarify what mathematical competency is expected, rather than punting to a calculus requirement.