Programming Skills
  Programming in the Small
Skill Level Program Synthesis Program Analysis Program Design Program Composition Program assessment
Expert                                                                                                                                                                                                                       Context-free and situational.  No longer relies on the analytical principle. Demonstrates a deep understanding of situation. Shows long background of experience; intuitive; holistic;and formal education preparation.
Expert in program synthesis:                     Solves small "pattern" problems with ease.  Writes excellent programs of 250 lines.  Recognizes common opertions and easily names these operations with little or no hesitation.  No longer relies on the analytical principle. Demonstrates a deep understanding of program synthesis. Shows long background of experience; intuitive; holistic;and formal preparation.                                                        8 - 10 pts.   
Expert in program analysis:                                                                                                                                                                                         No longer relies on the analytical principle, years of experience.                                                                                                                                        Demonstrates deep understanding and ability to perform all of the following without referring to a known rule:                                                                                    -use abstract data types
-identify bugs in a small program and fix them
-identify the scope of an identifier
-correlate assignments with potential uses of the value assigned
-write a conditional dispatch
-formulate the post-condition of a while loop
-identify the base and recursive cases of a simple recursion
-hand simulate a small piece of code
Expert in program design:                                                                         Selects appropriate structure from alternatives.
Uses a standard structure and adapts it with extreme ease.
Evaluates the costs and benefits of using structures and algorithms with extreme ease.
Uses sophisticated design techniques with extreme ease.
Expert in program composition:
Defines requirements and produces specifications with extreme ease.
Has intamite knowledge of tools and environments.
Seemlessly integrates higher level programming components.
Works extremely well in a team.
Expert in program assessment:
Applies techniques for program assessment with extreme ease.
Certifyies the program quality with accuracy and extreme ease.
Demonstrates a deep understanding of program assessment. Shows intuitive; holistic approaches to assessment.
  Details Examples Details Examples Details Examples Details Example Details   Example
Proficient                                                                                                                                                                                           Context-free and situational.  Begins to make decisions rather than merely following rules. Hones in on accurate region of problem.  Perceive situations as wholes, Maxims are used to guide with deep understanding of the situation and provide directions to what is important to take into consideration.
Proficient in program synthesis:                                                          Solves small "pattern" problems with reasonable ease.  Writes good programs of 250 lines.  Recognizes common opertions and easily names these operations.                                                         6 - 7 pts.
Proficient in program analysis:                                    Context-free.  Performs all the following tasks without merely following rules.                         Hones in on the problem relatively quickly for all the following:                                                                               -use abstract data types
-identify bugs in a small program and fix them
-identify the scope of an identifier
-correlate assignments with potential uses of the value assigned
-write a conditional dispatch
-formulate the post-condition of a while loop
-identify the base and recursive cases of a simple recursion
-hand simulate a small piece of code
Proficient in program design:                                       Begins to be able to select the appropriate structure from alternatives
Beginning to:                                               -use a standard structure and adapt it
-evaluate the costs and benefits of using structures and algorithms
-use some sophisticated techniques
Proficient in program composition:
Can easily define requirements and produce specifications.
Has intamite knowledge of tools and environments.
Effectively intergrates higher level programming components.
Good team worker.
Proficient in program assessment:
Accurately determines measures for program assesment.
Applies techniques for assessment with reasonable quickness.
Certifies the program quality with reasonable ease.
  Details Examples Details Examples Details Examples Details Example Details   Example
Competent                                                                                                                                                                                               Context-free and situational.  More experience acquired.  Senses what is missing. Sees actions in terms of long-range plans and goals.  Equivalent to two to three years on the job; establishes plan and perspective;  Lacks speed and flexibility; efficient and organized; supported and reinforced institutionally.
Competent in program synthesis:                                                         Able to recognize common operations.  With time is able to write program.  Ability in solving small pattern problems acceptable.                                             4 - 5pts.
Competent in program analysis: :                                                         uses abstract data types
identify bugs in a small program and fix them
identify the scope of an identifier
correlate assignments with potential uses of the value assigned
write a conditional dispatch
formulate the post-condition of a while loop
identify the base and recursive cases of a simple recursion
hand simulate a small piece of code
Competent in program design:
select appropriate structure from alternatives
use a standard structure and adapt it
evaluate the costs and benefits of using structures and algorithms
use some sophisticated techniques
Competent in program composition:
Competent in defining requirements and producing specifications.
Has knowledge of tools and environments
Incoporates higher level programming components
Effective team worker.
Competent in program assessment:
Beginning to show more experience acquired.  Senses what is missing. Equivalent to two to three years in applying techniques for assessment; Sometimes shows an understanding of a plan and perspective in certifying the program quality; Lacks speed and flexibility; Shows efficient and organized understanding of program assessment measures; Still seems to need some support and reinforcement for assessment techniques.
  Details Examples Details Examples Details Examples Details Example Details   Example
Advanced beginner:  Context-Free.  Recognizes elements when present.  Perceives similarity with prior examples.  Demonstrates marginally acceptable performance; enough real situational experience to remember meaningful situational aspects; can not make aspects explicit and completely objective; tend to go on instructor’s guidelines; treat all attributes and aspects equally important; Needs support and help in setting priorities.
Advanced Beginner in program synthesis:                                                            Has some difficulty recognizing common operations.  Writes programs with limited difficulty.  Improved ability in solving small "pattern problems.                                                   2-3 pts.
Advanced Beginner:                                                     use abstract data types
identify bugs in a small program and fix them
identify the scope of an identifier
correlate assignments with potential uses of the value assigned
write a conditional dispatch
formulate the post-condition of a while loop
identify the base and recursive cases of a simple recursion
hand simulate a small piece of code
Advanced Beginner in program design:
select appropriate structure from alternatives
use a standard structure and adapt it
evaluate the costs and benefits of using structures and algorithms
use some sophisticated techniques
Advanced Beginner in program composition:
define requirements and produce specifications
Has knowledge of tools and environments.
higher level programming components
Functional team worker.
Advanced Beginner in program assessment:
Slightly recognizes elements when present for measuring program assessment.  Perceives similarity with prior examples.  Demonstrates marginally acceptable understanding of assessment; can not make aspects explicit and completely objective; Still relies on instructor’s guidelines for assessment; treats all attributes and techniques for assessment equally important; Needs support and help in trying to certify the program quality.
  Details Examples Details Examples Details Examples Details Example Details   Example
Novice:  Context-Free - . Acquisition of new skill.  Recognizes objective facts, features and general rules.  Actions based on fact and features.  Beginner; No experience; Uses objective attributes, tends to go with what is taught, No discretionary judgment, go by context-free rules (does not know the exceptions to the rules).
Novice in program synthesis:                                                                                 Has difficulty recognizing common operations.  Difficulty writing programs.  Limited ability in solving small "pattern problems.                                                             0 - 1 pts.
Novice in program analysis:                                                                                               Has difficulty recognizing abstract data types
Recognizes bugs in a small program and is beginning to understand how to fix them
Beginning to:                                                                 -identify the scope of an identifier
-correlate assignments with potential uses of the value assigned
-write a conditional dispatch
-formulate the post-condition of a while loop
-identify the base and recursive cases of a simple recursion
-hand simulate a small piece of code
Novice in program design:                                                              Has difficulty selecting appropriate structure from alternatives.
Has difficulty using a standard structure and adapting it.
Unable evaluate the costs and benefits of using structures and algorithms
Unable to use some sophisticated techniques
Novce in program composition:
Can define requirements and produce specifications with limited difficulty.
Has rudamentary knowledge of tools and environments
Attempts to use higher level programming components.
Can work in a team.
Novice in program assessment:
Cannot measure for assessment of programs.
Cannot apply the techniques for assessment.
Has problems in understanding the process of certifying the program quality
Cannot certify the program quality.
  Details Examples Details Examples Details Examples Details Example Details   Example