SlideShare a Scribd company logo
• Within Computer Science a programming paradigm (or sometimes called programming model) is
the way (the foundation of ) a programming language is designed and works and therefor the
programmer needs to know how to design a program within that paradigm. Different paradigms
require a different way of thinking!
• There are two main programming paradigms:
• Declarative languages (WHAT)→The programmer needs to tellWHAT you want to do (the
outcome), not HOW you want to do it.Also called descriptive languages.You describe what you
want.
• Imperative languages (HOW)→ The programmer needs to write down all the exact steps
(statements) to reach a desired outcome.You need to tell exactly HOW to do certain steps and tell
in which order they have to be executed.
• These paradigms require a very different way of thinking for the programmer!
Procedural programming
❑ Procedural programming =Top Down programming
❑ To design an algorithm for a complex problem we
❑ need to break it down in smaller parts.
❑We start at the top (the complex problem) and describe
❑ a solution in very rough steps (a high abstraction level)
❑We then continue to redefine these rough steps in smaller
❑ Steps and we continue this until all the steps are written
❑ in executable statements (loops, assignments, conditions)
Advantages ofTop-Down Design
An Example ofTop-Down Design
TheTop Level
Main
Sort Select Print
Read
Another Level?
Structured Programs
Another Example
TheTop Level
Main
Draw
Chimney
Draw
Door
Draw
Windows
Draw
Outline
Pseudocode for Main
Observation
Main
Draw
Chimney
Draw
Door
Draw
Windows
Draw
Outline
Draw
Door Frame
Draw
Knob
Pseudocode for Draw Door
Another Observation
Main
Draw
Windows
Draw
Outline . . .
Draw
Window 3
Draw
Window 2
Draw
Window 1
One Last Observation
Reusing theWindow Code
Main
Draw
Windows
Draw
Outline . . .
Draw a
Window
Pseudocode for DrawWindows
An interesting historical coincidence…..
✓ Top-Down design (abstraction) : 1950’s!
✓ The first family of programming languages
✓ that used this paradigm was ALGOL, short
✓ for ALGOrithmic Language (1960’s)
✓ ALGOL68 (1968) was one of the first wide spread languages.
✓ One of the designers of this language was the Dutch CS
✓ Professor Cornelis H.A. Koster (https://en.wikipedia.org/wiki/Cornelis_H._A._Koster)
✓ In 1994, when I started my masters in Computer Science, I took
✓ Professor Koster’s classes on algorithm design and programming.
✓ He wrote a couple of very influential books, like the one above.
✓ I will use one of his examples from this book.
6.4 Example: Designing a grid
We would like to design a grid
on paper that follows this pattern.
A very elegant
Top Down design
In Pseudocode
by professor Koster….
But in Dutch….
Let me translate in
English…..
- Functions have a unique name
like procedures
- Functions are called by their
name and their input
parameters
- Function call with wrong
number of parameters or
wrong datatype yield errors
- Function return a value that
has to be ‘captured’ by the
calling program
Top_down_programming..............................
Top_down_programming..............................
Top_down_programming..............................

More Related Content

Similar to Top_down_programming..............................

DMA113 Chap1
DMA113 Chap1DMA113 Chap1
DMA113 Chap1
Bro Shola Ajayi
 
maincse-150510153437-lva1-app6892 (1).pptx
maincse-150510153437-lva1-app6892 (1).pptxmaincse-150510153437-lva1-app6892 (1).pptx
maincse-150510153437-lva1-app6892 (1).pptx
Karuthayya
 
Compilers.pptx
Compilers.pptxCompilers.pptx
Compilers.pptx
MohammedMohammed578197
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languages
Varun Garg
 
Presentation on Programming Languages.
Presentation on Programming Languages.Presentation on Programming Languages.
Presentation on Programming Languages.
Mohammad Shakirul islam
 
English de lenguaje de programacion
English de lenguaje de programacionEnglish de lenguaje de programacion
English de lenguaje de programacion
Villalba Griselda
 
Interference with High level language.pdf
Interference with High level language.pdfInterference with High level language.pdf
Interference with High level language.pdf
ARslan Ahmad
 
Introduction to programming c
Introduction to programming cIntroduction to programming c
Introduction to programming c
Md. Rakibuzzaman Khan Pathan
 
Golang, Python or C/C++, who wins
Golang, Python or C/C++, who wins Golang, Python or C/C++, who wins
Golang, Python or C/C++, who wins
Obed N Muñoz
 
Programming Languages and the Programming Process
Programming Languages and the Programming ProcessProgramming Languages and the Programming Process
Programming Languages and the Programming Process
Sajib Barua
 
Programming in Java: Getting Started
Programming in Java: Getting StartedProgramming in Java: Getting Started
Programming in Java: Getting Started
Martin Chapman
 
Introduction Programming Languages
Introduction Programming LanguagesIntroduction Programming Languages
Introduction Programming Languages
Manish Kharotia
 
Introduction to Coding
Introduction to CodingIntroduction to Coding
Introduction to Coding
St. Petersburg College
 
Python-unit -I.pptx
Python-unit -I.pptxPython-unit -I.pptx
Python-unit -I.pptx
crAmth
 
Programming languages
Programming languagesProgramming languages
Programming languages
Asmasum
 
Programming Fundamentals Chapter-1.pptx
Programming Fundamentals Chapter-1.pptxProgramming Fundamentals Chapter-1.pptx
Programming Fundamentals Chapter-1.pptx
abdullahabid56
 
Language translators Of Programming in Computer science
Language translators Of Programming in Computer scienceLanguage translators Of Programming in Computer science
Language translators Of Programming in Computer science
RaianaTabitha
 
Computer programing 111 lecture 1
Computer programing 111 lecture 1 Computer programing 111 lecture 1
Computer programing 111 lecture 1
ITNet
 
About programming languages
About programming languagesAbout programming languages
About programming languages
Ganesh Samarthyam
 
Design patterns for TypeScript and other languages
Design patterns for TypeScript and other languagesDesign patterns for TypeScript and other languages
Design patterns for TypeScript and other languages
Sergio Brito
 

Similar to Top_down_programming.............................. (20)

DMA113 Chap1
DMA113 Chap1DMA113 Chap1
DMA113 Chap1
 
maincse-150510153437-lva1-app6892 (1).pptx
maincse-150510153437-lva1-app6892 (1).pptxmaincse-150510153437-lva1-app6892 (1).pptx
maincse-150510153437-lva1-app6892 (1).pptx
 
Compilers.pptx
Compilers.pptxCompilers.pptx
Compilers.pptx
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languages
 
Presentation on Programming Languages.
Presentation on Programming Languages.Presentation on Programming Languages.
Presentation on Programming Languages.
 
English de lenguaje de programacion
English de lenguaje de programacionEnglish de lenguaje de programacion
English de lenguaje de programacion
 
Interference with High level language.pdf
Interference with High level language.pdfInterference with High level language.pdf
Interference with High level language.pdf
 
Introduction to programming c
Introduction to programming cIntroduction to programming c
Introduction to programming c
 
Golang, Python or C/C++, who wins
Golang, Python or C/C++, who wins Golang, Python or C/C++, who wins
Golang, Python or C/C++, who wins
 
Programming Languages and the Programming Process
Programming Languages and the Programming ProcessProgramming Languages and the Programming Process
Programming Languages and the Programming Process
 
Programming in Java: Getting Started
Programming in Java: Getting StartedProgramming in Java: Getting Started
Programming in Java: Getting Started
 
Introduction Programming Languages
Introduction Programming LanguagesIntroduction Programming Languages
Introduction Programming Languages
 
Introduction to Coding
Introduction to CodingIntroduction to Coding
Introduction to Coding
 
Python-unit -I.pptx
Python-unit -I.pptxPython-unit -I.pptx
Python-unit -I.pptx
 
Programming languages
Programming languagesProgramming languages
Programming languages
 
Programming Fundamentals Chapter-1.pptx
Programming Fundamentals Chapter-1.pptxProgramming Fundamentals Chapter-1.pptx
Programming Fundamentals Chapter-1.pptx
 
Language translators Of Programming in Computer science
Language translators Of Programming in Computer scienceLanguage translators Of Programming in Computer science
Language translators Of Programming in Computer science
 
Computer programing 111 lecture 1
Computer programing 111 lecture 1 Computer programing 111 lecture 1
Computer programing 111 lecture 1
 
About programming languages
About programming languagesAbout programming languages
About programming languages
 
Design patterns for TypeScript and other languages
Design patterns for TypeScript and other languagesDesign patterns for TypeScript and other languages
Design patterns for TypeScript and other languages
 

More from FerryKemperman

Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
FerryKemperman
 
Working with files (concepts/pseudocode/python)
Working with files (concepts/pseudocode/python)Working with files (concepts/pseudocode/python)
Working with files (concepts/pseudocode/python)
FerryKemperman
 
OOP in Python, a beginners guide..........
OOP in Python, a beginners guide..........OOP in Python, a beginners guide..........
OOP in Python, a beginners guide..........
FerryKemperman
 
Search and Sort algorithms. Bubble, Insertion, Selection.
Search and Sort algorithms. Bubble, Insertion, Selection.Search and Sort algorithms. Bubble, Insertion, Selection.
Search and Sort algorithms. Bubble, Insertion, Selection.
FerryKemperman
 
Structured Query Language introduction..
Structured Query Language introduction..Structured Query Language introduction..
Structured Query Language introduction..
FerryKemperman
 
SDT introduction as given at MKIS, KL, 2023
SDT introduction as given at MKIS, KL, 2023SDT introduction as given at MKIS, KL, 2023
SDT introduction as given at MKIS, KL, 2023
FerryKemperman
 
Computer Architecture Machine Cycle (1).pdf
Computer Architecture Machine Cycle (1).pdfComputer Architecture Machine Cycle (1).pdf
Computer Architecture Machine Cycle (1).pdf
FerryKemperman
 
Referential integrity in databases.pptx
Referential integrity in databases.pptxReferential integrity in databases.pptx
Referential integrity in databases.pptx
FerryKemperman
 

More from FerryKemperman (8)

Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Working with files (concepts/pseudocode/python)
Working with files (concepts/pseudocode/python)Working with files (concepts/pseudocode/python)
Working with files (concepts/pseudocode/python)
 
OOP in Python, a beginners guide..........
OOP in Python, a beginners guide..........OOP in Python, a beginners guide..........
OOP in Python, a beginners guide..........
 
Search and Sort algorithms. Bubble, Insertion, Selection.
Search and Sort algorithms. Bubble, Insertion, Selection.Search and Sort algorithms. Bubble, Insertion, Selection.
Search and Sort algorithms. Bubble, Insertion, Selection.
 
Structured Query Language introduction..
Structured Query Language introduction..Structured Query Language introduction..
Structured Query Language introduction..
 
SDT introduction as given at MKIS, KL, 2023
SDT introduction as given at MKIS, KL, 2023SDT introduction as given at MKIS, KL, 2023
SDT introduction as given at MKIS, KL, 2023
 
Computer Architecture Machine Cycle (1).pdf
Computer Architecture Machine Cycle (1).pdfComputer Architecture Machine Cycle (1).pdf
Computer Architecture Machine Cycle (1).pdf
 
Referential integrity in databases.pptx
Referential integrity in databases.pptxReferential integrity in databases.pptx
Referential integrity in databases.pptx
 

Recently uploaded

Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
Hironori Washizaki
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
lorraineandreiamcidl
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Envertis Software Solutions
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
kalichargn70th171
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 

Recently uploaded (20)

Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 

Top_down_programming..............................

  • 1.
  • 2. • Within Computer Science a programming paradigm (or sometimes called programming model) is the way (the foundation of ) a programming language is designed and works and therefor the programmer needs to know how to design a program within that paradigm. Different paradigms require a different way of thinking! • There are two main programming paradigms: • Declarative languages (WHAT)→The programmer needs to tellWHAT you want to do (the outcome), not HOW you want to do it.Also called descriptive languages.You describe what you want. • Imperative languages (HOW)→ The programmer needs to write down all the exact steps (statements) to reach a desired outcome.You need to tell exactly HOW to do certain steps and tell in which order they have to be executed. • These paradigms require a very different way of thinking for the programmer!
  • 3.
  • 4. Procedural programming ❑ Procedural programming =Top Down programming ❑ To design an algorithm for a complex problem we ❑ need to break it down in smaller parts. ❑We start at the top (the complex problem) and describe ❑ a solution in very rough steps (a high abstraction level) ❑We then continue to redefine these rough steps in smaller ❑ Steps and we continue this until all the steps are written ❑ in executable statements (loops, assignments, conditions)
  • 5.
  • 16. Another Observation Main Draw Windows Draw Outline . . . Draw Window 3 Draw Window 2 Draw Window 1
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26. An interesting historical coincidence….. ✓ Top-Down design (abstraction) : 1950’s! ✓ The first family of programming languages ✓ that used this paradigm was ALGOL, short ✓ for ALGOrithmic Language (1960’s) ✓ ALGOL68 (1968) was one of the first wide spread languages. ✓ One of the designers of this language was the Dutch CS ✓ Professor Cornelis H.A. Koster (https://en.wikipedia.org/wiki/Cornelis_H._A._Koster) ✓ In 1994, when I started my masters in Computer Science, I took ✓ Professor Koster’s classes on algorithm design and programming. ✓ He wrote a couple of very influential books, like the one above. ✓ I will use one of his examples from this book.
  • 27. 6.4 Example: Designing a grid We would like to design a grid on paper that follows this pattern.
  • 28. A very elegant Top Down design In Pseudocode by professor Koster…. But in Dutch…. Let me translate in English…..
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35. - Functions have a unique name like procedures - Functions are called by their name and their input parameters - Function call with wrong number of parameters or wrong datatype yield errors - Function return a value that has to be ‘captured’ by the calling program