Home
Career Management
Technical Knowledge
Programming
|
Program Specification and Documentation
Program
Design Skills
Program
Contracts
Program
Testing
The
Nature of Computation and Program Evaluation
Abstractions
in Program Design
Programming
as a Teamwork
Program Specification and Documentation |
|
|
|
|
|
|
Novice |
Examples |
|
|
Analyze simple problem
statements, identify relevant information, represent it as data |
|
Variety of data: numeric,
text, images, colors, logical, ... |
|
|
|
|
Problems that involve
compound data, variants, self-reference, mutual reference |
|
|
|
|
Produce data from the given
information |
|
|
|
|
Describe the information
represented by the given data |
|
|
|
|
|
|
Advanced Beginner |
Examples |
|
|
Use diagrams to represent
the relationships among classes and among
methods |
|
Define and use class
diagrams to represent class hierarchies |
|
|
|
|
Define and use interactions
diagrams to represent the program dynamic behavior |
|
|
|
|
|
|
Competent |
Examples |
|
|
Turn requirements into
specifications and contracts |
|
Understand and use at least
one standard methods for program specification |
|
|
|
|
|
|
Proficient |
Examples |
|
|
Design program
specifications based on interactions with clients |
|
Some students will have the
opportunity to reach this level at their coop assignments or while working
on a research project |
|
|
|
|
|
|
|
|
|
|
top
Program
Design Skills |
|
|
|
|
|
|
|
|
Novice |
Examples |
|
|
Design functions/methods
for a variety of data types, including programmer-defined types |
|
|
|
|
|
|
|
|
Advanced Beginner |
Examples |
|
|
Design programs that
implement contracts for abstract data types |
|
|
|
|
|
|
|
|
Competent |
Examples |
|
|
Design moderate sized
programs that implement complex (possibly formal) contracts |
|
|
|
|
|
|
|
Proficient |
Examples |
|
|
Design
small application programs that utilize technical knowledge, such as data
base design, networks, operating systems, |
|
|
|
|
mathematical methods,
programming language theory, artificial intelligence, or domains such as
physics, biology, business processes, HCI |
|
|
|
|
|
|
|
|
|
|
|
|
top
Program
Contracts |
|
|
|
|
|
|
|
|
Novice |
Examples |
|
|
Understand the meaning of
simple contracts and design programs that satisfy these contracts -
e.g.classes that extend an abstract class, or implement an interface |
|
|
|
|
|
|
|
Advanced Beginner |
Examples |
|
|
Understand the meaning of
contracts that define abstract data types |
|
|
|
|
|
|
|
Competent |
Examples |
|
|
Understand the use of
libraries and frameworks, especially GUI frameworks |
|
|
|
|
|
|
|
Proficient |
Examples |
|
|
??? |
|
|
|
|
|
|
|
|
|
|
|
|
top
Program
Testing |
|
|
|
|
|
|
|
|
Novice |
Examples |
|
|
Understand and utilize
white-box testing |
|
|
|
|
|
|
|
Advanced Beginner |
Examples |
|
|
Understand and utilize
stress tests |
|
|
|
|
|
|
|
Competent |
Examples |
|
|
Understand and use
black-box testing and unit testing |
|
|
|
Proficient |
Examples |
|
|
Understand and use test
harnesses and integration tests |
|
|
|
|
|
|
|
|
|
|
|
|
top
The
Nature of Computation and Program Evaluation |
|
|
|
|
|
|
Novice |
Examples |
|
|
Understand the basic
principles of computation: expression evaluation, variable substitution,
method dispatch |
|
|
|
Advanced Beginner |
Examples |
|
|
Understand the different
ways of defining and assessing the equality of compound structures |
|
|
|
Programming
as a Teamwork |
Examples |
|
|
Understand and use the
basic measures of program complexity |
|
|
|
Proficient |
Examples |
|
|
Evaluate the complexity of
the program, use tools to measure the performance and to identify hot
spots |
|
|
|
|
|
|
|
|
|
|
|
|
top
Abstractions
in Program Design |
|
|
|
|
|
|
|
|
Novice |
Examples |
|
|
Design abstractions over
data and functions |
|
|
|
Advanced Beginner |
Examples |
|
|
Understand and use basic
refactoring techniques, such as abstracting over data representation and
behavior |
|
|
|
Competent |
Examples |
|
|
Use scripting languages
when appropriate |
|
|
|
Proficient |
Examples |
|
|
Select the appropriate
language and framework for a proposed application |
|
|
|
|
|
|
|
|
|
|
|
|
top
Programming
as a Teamwork |
|
|
|
|
|
|
|
|
Novice |
Examples |
|
|
Understand and practice
pair programming |
|
|
|
Advanced Beginner |
Examples |
|
|
Understand and practice
code walks |
|
|
|
Competent |
Examples |
|
|
Work effectively in a
programming team |
|
|
|
Proficient |
Examples |
|
|
Work as a leader or
co-leader of a programming team |
|
|
|
|
|
|
|
top
|