next up previous contents
Next: The Archive Up: Outcomes Previous: ABET-mandated outcomes   Contents

Discipline-specific interpretation of a-k outcomes

Obviously, the above list needs to be extend to one that supports the goals of the Department's degree programs. Also, there needs to be a rationale for why achieving the outcomes guarantees that the goals will be achieved.1.12 Below, clustered into categories that partially correspond to ABET's a-k outcomes, are the competencies that every young computer person should be able to demonstrate. We need to refine that list, distinguish between the desirable and the necessary, establish performance criteria which can be mapped to our extension of the a-k outcomes list.

  1. Must demonstrate knowledge and understanding of appropriate areas:

    1. mathematics,
    2. physical and life sciences,
    3. engineering (i.e., design and manufacturing processes)
    4. Must demonstrate a knowledge and understanding of computation including: theory and principles of computation (e.g., Turing's thesis), design and analysis of algorithms, principles and techniques for dealing with concurrency, principles of design and implementation of programming languages, binding, protection, addressing, caching, modeling and simulation
    5. Must demonstrate knowledge of inner workings of fundamental tools of IT: operating systems, compilers/interpreters, databases, networks, computer architecture, digital circuitry.

  2. Must demonstrate ability to apply that knowledge:

    1. An ability to identify and demonstrate NP-completeness in reasonably simple problems
    2. An ability to identify and demonstrate undecidability in simple cases, especially those regarding behavior of programs, e.g., the halting problem
    3. An ability to construct valid proofs, especially induction-based proofs, e.g., validity and complexity proofs for algorithms
    4. An ability to identify an invalid proof and say what is wrong with it
    5. An ability to abstract and to deal with abstraction
    6. An ability to determine whether a new paradigm/metaphor contributes any new insights

  3. Must demonstrate knowledge of and ability to apply statistical thinking and empirical methods:

    1. An ability to reverse-engineer and to determine how to use tools and components designed by others via experimentation, when necessary.
    2. An ability to diagnose bugs both in hardware and in software
    3. An ability to understand analyze and model performance and reliability data
    4. An ability to infer the values of parameters by fitting models to data

  4. Must demonstrate ability to design, implement, validate, and deploy IT portions of information and/or control systems:

    1. An ability to capture, analyze and keep track of requirements (a.k.a., requirements engineering) -- see Appendix A, page [*]
    2. A sense of good design in hardware and/or software, including the design of good user interfaces.
    3. A sense of the fundamental systems tradeoffs: cost, schedule, features (or performance), and risk
    4. An ability to predict performance and to diagnose performance issues, e.g., an understanding of the distinction between throughput and latency and the ability to model the effects of scheduling in various circumstances.
    5. An ability to write usable, maintainable, readable, idiomatic code.
    6. An awareness of good programming techniques and style
    7. An ability to debug hardware/software systems (note similar ability under empiricle methods above)
    8. An ability to generate a test plan and test cases
    9. An ability to participate in the deployment of a system
    10. An ability to dig-up information from libraries, bookstores, and on-line sources, e.g., on the use of tools and components designed by others.
    11. creativity and design capability
    12. ability to determine quickly how things work
    13. ability to create a concept
    14. ability to use abstraction (e.g., mathematical models) to generalize and formalize a concept
    15. ability quickly to create a prototype and to quantatively and thoroughly test it to predict its effectiveness and/or improve the concept.

  5. Must demonstrate ability to communicate with various audiences:

    1. orally
    2. graphicly
    3. via listening
    4. in writing, e.g., ability to write user manuals, generate specifications, and identify and efficiently report problems

  6. Must demonstrate a passionate awareness of what's going on in the world of IT:

    1. A curiosity and skill at satisfying it (e.g., the google reflex).
    2. A program of life-long learning, and an awareness of the need for one.
    3. A knowledge and understanding of the world of standards
    4. An awareness of security threats and defenses
    5. An understanding of intellectual-property issues
    6. Moore's law, etc., including current doubling rates (per-dollar) for processor speeds, memory speeds, communication speeds, disk capacities, etc.
    7. The IT marketplace, its major players and their strategies
    8. The ability to recognize and refute FUD pitches
    9. Must possess the realization that ``bits are bits'', e.g., VoIP
    10. Must be aware of the open-source/free-software movement
    11. Information vs. freedom -- DMCA and RIAA
    12. Ethical, professional and legal issues, e.g., privacy, intellectual property issues, hacking, encryption, and code breaking.

  7. Must demonstrate ability to use common IT tools:

    1. productivity tools: spread-sheets, presentation system (e.g., powerpoint), wordprocessors/editors, browsers, search engines, mail readers, news readers, shells, file systems, databases
    2. Tools for software development: version-control system, profiler, debugger, test-coverage tool, static analyzer, compiler, make, formatter, linker, loader, macro-expander, interpreters.
    3. Tools for digital systems development: logic probes, logic analyzer, VHDL compilers and simulators, breadboards.
    4. Tools for analog hardware development: oscilloscope, signal generator, etc.
    5. Tools for setting up and administering databases, computer systems, networks

  8. Must demonstrate an understanding of the engineering process and the context in which it is practiced:1.13

    1. systems thinking.
    2. awareness of societal needs.1.14
    3. history
    4. economics: Moore's law and its implications, life-cycle costs, total cost of ownership, time-to-market effects, delivery cycles, cost of marketing and sales.
    5. business practices, e.g., pricing to value rather than cost when possible.
    6. manufacturing processes, including economic and logistic considerations, e.g., just-in-time shipment and delivery
    7. environmental considerations, including the need for disposal of manufactured goods.
    8. ability to determine what customers want and what customers need (and to understand the difference and to understand which one counts and why).
    9. ability to determine whether customer value and enterprise value are aligned, in the business sense
    10. awareness of marketing considerations, including estimating market size as a function of price and costs of sales and advertising
    11. an appreciation of the need for agility in engineering processes, i.e., to quickly and flexibly adjust to changing circumstances.

  9. Must demonstrate ability to participate effectively on multidisciplinary systems-(re)development teams, including an ability and willingness to:

    1. understand the importance of teamwork
    2. acquire skill and experience in teamwork.
    3. build on and contribute to the work of others, i.e., to subordinate one's own creative impulses to the needs of a project, e.g., to accept outside ideas (opposite of the NIH syndrome) -- see Brooks, The Mythical Man Month, on the Cathedral at Rheims.
    4. plan project progress, including contingency plans
    5. anticipate and estimate time and resource requirements for a project
    6. work unsupervised
    7. follow local standards, e.g., coding standards.
    8. accept outside ideas, tools, standards, and components.
    9. find necessary documentation to use tools, standards, and components
    10. use empirical methods to determine how to use tools and components, e.g., code libraries
    11. anticipate where bugs are likely.
    12. function in a leadership role.


next up previous contents
Next: The Archive Up: Outcomes Previous: ABET-mandated outcomes   Contents
Tom Payne 2003-09-04