Faculty of Science Home Page University of Alberta Home Page

CMPUT 201 - Practical Programming Methodology

Like the best carpenters and artists, the best programmers combine both a solid theoretical foundation with "best practices" and tools refined by years of experience. Instead of stress loads on walls and hammers, or colour theory and paint brushes, programmers work with abstract data types and software libraries.

It takes an understanding of practical programming methodology, and a diverse set of tools, to translate a creative idea into a working implementation. The programmer cares about choosing the right tool for the right problem, and is not simply interested in collecting the most tools.

CMPUT 201 is a "doing art" and not an "art appreciation" course; it requires hands-on, active learning. For a programmer, the end product is a complete, working program.

Skills Acquired

By the end of the course, you will be well-equipped to handle any intermediate programming problem using C and Unix. By combining what you learned about program design and data structures (e.g., CMPUT 114/115), with useful algorithms and mathematics (e.g., CMPUT 204/272), with application-specific knowledge (e.g., CMPUT 291/379), you can design and implement non-trivial software with the knowledge from CMPUT 201.

Course Work

Examples of intermediate programming problems include:

  1. Write a program to read a text file, find all of the unique words, and then output them in alphabetical order. (Compare with the Unix executables "uniq" and "sort".)
    This program might be used as a step before running a spell checker.
  2. Write a program that will monitor which users log into a specific computer and summarize that information on a per-hour, per-day, and per-week basis.
    This program might be part of an operating system's security system.
  3. Write a program that reads a text file whose contents are a program in a simple, special-purpose programming language.
    This program implements a scripting language, just like the Bash shell or Python.

More Information