Programming Skills

 

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