Next: The Archive
Up: Outcomes
Previous: ABET-mandated outcomes
  Contents
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.
- Must demonstrate knowledge and understanding of appropriate areas:
- mathematics,
- physical and life sciences,
- engineering (i.e., design and manufacturing processes)
- 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
- Must demonstrate knowledge of inner workings of fundamental
tools of IT: operating systems, compilers/interpreters,
databases, networks, computer architecture, digital circuitry.
- Must demonstrate ability to apply that knowledge:
- An ability to identify and demonstrate NP-completeness in
reasonably simple problems
- An ability to identify and demonstrate undecidability in simple
cases, especially those regarding behavior of programs, e.g.,
the halting problem
- An ability to construct valid proofs, especially induction-based
proofs, e.g., validity and complexity proofs for algorithms
- An ability to identify an invalid proof and say what is wrong
with it
- An ability to abstract and to deal with abstraction
- An ability to determine whether a new paradigm/metaphor
contributes any new insights
- Must demonstrate knowledge of and ability to apply statistical
thinking and empirical methods:
- An ability to reverse-engineer and to determine how to use tools
and components designed by others via experimentation, when
necessary.
- An ability to diagnose bugs both in hardware and in software
- An ability to understand analyze and model performance and
reliability data
- An ability to infer the values of parameters by fitting models
to data
- Must demonstrate ability to design, implement, validate, and
deploy IT portions of information and/or control systems:
- An ability to capture, analyze and keep track of requirements
(a.k.a., requirements engineering) -- see Appendix A,
page
- A sense of good design in hardware and/or software, including
the design of good user interfaces.
- A sense of the fundamental systems tradeoffs: cost, schedule,
features (or performance), and risk
- 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.
- An ability to write usable, maintainable, readable, idiomatic
code.
- An awareness of good programming techniques and style
- An ability to debug hardware/software systems (note similar ability
under empiricle methods above)
- An ability to generate a test plan and test cases
- An ability to participate in the deployment of a system
- 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.
- creativity and design capability
- ability to determine quickly how things work
- ability to create a concept
- ability to use abstraction (e.g., mathematical models) to
generalize and formalize a concept
- ability quickly to create a prototype and to quantatively and
thoroughly test it to predict its effectiveness and/or improve
the concept.
- Must demonstrate ability to communicate with various audiences:
- orally
- graphicly
- via listening
- in writing, e.g., ability to write user manuals, generate
specifications, and identify and efficiently report problems
- Must demonstrate a passionate awareness of what's going on in
the world of IT:
- A curiosity and skill at satisfying it (e.g., the google reflex).
- A program of life-long learning, and an awareness of the need
for one.
- A knowledge and understanding of the world of standards
- An awareness of security threats and defenses
- An understanding of intellectual-property issues
- Moore's law, etc., including current doubling rates (per-dollar)
for processor speeds, memory speeds, communication speeds, disk
capacities, etc.
- The IT marketplace, its major players and their strategies
- The ability to recognize and refute FUD pitches
- Must possess the realization that ``bits are bits'', e.g., VoIP
- Must be aware of the open-source/free-software movement
- Information vs. freedom -- DMCA and RIAA
- Ethical, professional and legal issues, e.g., privacy,
intellectual property issues, hacking, encryption, and code
breaking.
- Must demonstrate ability to use common IT tools:
- productivity tools: spread-sheets, presentation system (e.g.,
powerpoint), wordprocessors/editors, browsers, search engines,
mail readers, news readers, shells, file systems, databases
- Tools for software development: version-control system, profiler,
debugger, test-coverage tool, static analyzer, compiler, make,
formatter, linker, loader, macro-expander, interpreters.
- Tools for digital systems development: logic probes, logic
analyzer, VHDL compilers and simulators, breadboards.
- Tools for analog hardware development: oscilloscope, signal
generator, etc.
- Tools for setting up and administering databases, computer
systems, networks
- Must demonstrate an understanding of the engineering process and
the context in which it is practiced:1.13
- systems thinking.
- awareness of societal needs.1.14
- history
- 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.
- business practices, e.g., pricing to value rather than cost
when possible.
- manufacturing processes, including economic and logistic
considerations, e.g., just-in-time shipment and delivery
- environmental considerations, including the need for disposal of
manufactured goods.
- ability to determine what customers want and what customers need
(and to understand the difference and to understand which one
counts and why).
- ability to determine whether customer value and enterprise value
are aligned, in the business sense
- awareness of marketing considerations, including estimating
market size as a function of price and costs of sales and
advertising
- an appreciation of the need for agility in engineering
processes, i.e., to quickly and flexibly adjust to changing
circumstances.
- Must demonstrate ability to participate effectively on
multidisciplinary systems-(re)development teams, including
an ability and willingness to:
- understand the importance of teamwork
- acquire skill and experience in teamwork.
- 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.
- plan project progress, including contingency plans
- anticipate and estimate time and resource requirements for a
project
- work unsupervised
- follow local standards, e.g., coding standards.
- accept outside ideas, tools, standards, and components.
- find necessary documentation to use tools, standards, and
components
- use empirical methods to determine how to use tools and
components, e.g., code libraries
- anticipate where bugs are likely.
- function in a leadership role.
Next: The Archive
Up: Outcomes
Previous: ABET-mandated outcomes
  Contents
Tom Payne
2003-09-04