Programming skills for a changing world: back to the basics

  • Authors:
  • Ronnie E. King;Robert F. Roggio;J. Gray Killinger

  • Affiliations:
  • University of North Florida;University of North Florida;University of North Florida

  • Venue:
  • Journal of Computing Sciences in Colleges
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

A central topic in computer science is performance. Algorithm efficiency is pivotal in many software applications from life support to automatic teller machines. During the 1960s, the notion of efficiency was synonymous with structured programming, elimination of the goto statement, and modular coding. Forty years later, software students seldom appreciate their unique role in an algorithm's overall performance. This situation is understandable given today's very fast processors and highly efficient compilers. A wealth of research has gone into processor architecture and compiler optimization, but little thought has been given to what today's programming students need to understand about pipelining and instruction level parallelism to avoid various performance-robbing coding techniques. This paper explains how programmers can work with compilers and today's pipelined processors to enhance parallelism in their code to significantly enhance performance, without sacrificing software engineering principles such as abstraction, modularity, information hiding and other features that provide for rapid application development, reuse, and maintainability of an application.