Programming Fundamentals

Mithat Konar
with material from Capron's “Essentials of Computing”, 2/e

What is programming?

  • programming: the discipline of creating computer programs.
  • computer program:
    • a set of step-by-step instructions
    • that directs the computer to do the tasks you want it to do
    • and produce the results you want.
  • Programmer → computer program → software.

What programmers do

  • “Write programs”
    • Prepare the instructions of a computer program.
    • Test and correct programs.
    • Document the way a program works.
    • Interact with other programmers, systems analysts, clients.

Programming languages

  • programming language:
    • a set of rules used to write computer programs.
    • a way of telling the computer what operations to perform.
  • Computers are binary machines.
    • Use only ON/OFF switches to control internal states.
    • Only understand instructions that are expressed in ON/OFF (or 1/0) terms.
  • Programming languages have been invented to make it easier for humans to write programs.

Levels of language

  • Programming languages exist on a spectrum of low to high level.
    • low level: close to the 1/0 language the computer directly uses.
    • high level: closer to natural language or mathematics.
  • Five levels:
    • machine language
    • assembly languages
    • high level languages
    • very high level languages
    • natural language programming

Machine language

  • Lowest level of language.
  • Just 1’s and 0’s.
  • Very hard not to make a mistake.
  • Each type of computer processor has its own machine language.

Assembly language

MOV AL, 1h
MOV CL, 2h
MOV DL, 3h
  • Alphanumeric abbreviations or mnemonic codes replace 1's and 0's.
    • ADD for Add, CMP for Compare, MOV for Move, etc.
  • Assembler program converts assembly language programs into machine language.

High-level languages

if score > 60:
    print('You passed!')
    print('Try harder!')
  • Uses math-like or English-like notation systems.
  • Allows programmer to think less about language details and more about solving problems.
  • Portability

Very high-level languages

  • Try to come closer to natural language than high-level languages.

Natural language programming

  • Tries to let people program using everyday language.
  • “Show a list of names from the contact list,” same as “Display the names of everyone in the contact list.”

Kinds of translation

  • High-level languages need to be translated into machine language.
  • Three approaches:
    • interpreted: translate one line of the program, run it, move to the next.
    • compiled: translate the whole program at once. Produces a new file full of machine code.
    • hybrid: translate the whole program into an in-between language; execute the in-between language in an interpreter.

Kinds of errors

  • syntax error: you broke a language rule.
  • semantic or logic error: the program runs and doesn't complain, but it doesn't produce the desired result.
  • runtime error: you ask the program to do something it can't, like divide A by B when B happens to be zero.

Programming process

  1. Define the problem.
  2. Design a solution.
  3. Code the solution.
  4. Test the solution.
  5. Document the solution.

Define the problem

  • Undefined problems cannot be solved.
  • May be formal or informal.
  • Sometimes simple, often not.

Design a solution

  • Design your solution before you try to build it!
  • 80/20 rule: spend 80% of your time designing, 20% writing.

Code the solution

  • Write the programming language statements and other resources you need to implement the design.

Test the solution

  • debugging: detecting, locating, and fixing mistakes.
  • desk checking: working through your code without running it to find mistakes.

Document the solution

  • documentation: a written detailed description of the programming cycle and specific facts about the program.
  • Most languages let you include some documentation in the program code.
  • Documentation is needed:
    • to help organize program planning
    • to help communicate with others about your program.
    • to help remind you what your program is doing.
  • Very important!!!

Programming tools

  • code editor: used to write the program code (i.e., source code).
  • translator: used to translate source code into a form the computer can execute.
  • debugger: used to interactively run a program and observe its internal state.
  • project manager: used to organize source code and other files associated with a program.
  • IDE (integrated development environment): integrates a number of these tools into one unified environment to help increase productivity.