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
Evaluate the ability of analyze problems, turn requirements into specifications, and documentating.
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
Evaluate the ability of design functions and programs.
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
Evaluate the ability of understanding the meaning and principles of 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
Evaluate the ability of understanding principles of various testing approaches, and the ability of applying these approaches.
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
Evaluate the ability of understanding the principles of computations, the measurement of program complexity, etc.
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
Evaluate the ability of abstracting over data and behavior and selecting appropriate language and framework for the abstraction.
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
Evaluate the ability of working within and betweem team(s).
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