Programming

Rubric of CCIS

July 2006 and September 2008

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 amongmethods

  •  

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