Programming II (CS300)

Size: px
Start display at page:

Download "Programming II (CS300)"

Transcription

1 1 Programming II (CS300) Chapter 01: Procedural Programming MOUNA KACEM Fall 2018

2 Procedural Programming 2 Introduction Procedural Programming: General Overview Procedural Programming: Top-Down Design Method Computational Thinking Programming Tips Keep in Mind

3 Introduction 3 Algorithm An algorithm is a method or process followed to solve a problem Function Input Process Output If the algorithm is viewed as a function, then it represents the implementation for the function that transforms an input to a corresponding output

4 Introduction 4 Function Input Process Output Algorithm Input: An algorithm has zero or more inputs (acquire data) read from an external source either before that the algorithm starts or as the algorithm runs Output: An algorithm has one or more outputs (results). The output values are specifically determined by the input. Process: A computational process (performing arithmetic computations, comparisons, testing logical conditions, and so on.) that given a set of values as an input produces some value or a set of values as an output

5 Introduction 5 Algorithm A sequence of computational steps that transform the input into the output A recipe for solving a computational problem whose steps (instructions) should be concrete and completely understood An algorithm is like a food recipe: a step-by-step procedure (a list of instructions) to complete a task Algorithm Food recipe Step-by-step procedure Input: acquire data Output: desired result Step-by-step procedure Input: Ingredients Output: Cake

6 Introduction 6 Program An instantiation (or implementation) of an algorithm in a computer programming language (such as C/C++, Java, Python, etc.) A program must Be Correct: i.e. converting each input to the correct output Be of finite length: An algorithm should be composed of a finite number of steps and each step must be doable in a finite amount of time Unambiguous: Each step of an algorithm must be precisely defined and it must be no ambiguity as to which step will be performed next Terminate for all inputs: i.e. an algorithm should not go into an infinite loop.

7 Procedural Programming - General Overview 7 Procedural Programming Standard approach used in traditional Computer programming languages such as C, Pascal, Fortran, and Basic Creates a step by step program that guides the application through a sequence of instructions Each instruction is executed in order Procedural Programming focuses on processes (operations, conditions and actions)

8 Procedural Programming: Top-Down Design Method 8 Top-Down Design Method A solution method for problem solving where The problem is broken down into smaller sub-problems, The sub-problems in turn are broken down into smaller sub-problems continuing until Each sub-problem is straight forward enough to be solved individually in a few steps The smaller solutions are assembled (composed) into a big solution This method is called also Functional decomposition, Modular development, or Divide and Conquer

9 Procedural Programming: Top-Down Design Method 9 Graphical illustration of the Top-Design Method Decomposition of the Problem into smaller sub-problems Level 0 Top Level Level 1 Level 2 Level N... Statement of the Problem Sub-problem1 Sub-problem2 S-P 1.1 S-P 1.2 S-P 1.3 S-P 2.1 S-P 2.2 The number of levels (functional decomposition) continues until the sub-problem is one that can be solved directly Composition of the global solution

10 Procedural Programming: Top-Down Design Method 10 Benefits of the Top-Design Method (1) Make the Problem solving easier Smaller problems or tasks are more easier to understand than a big problem It is easier to solve small problems than solving big/complex ones If a problem can't be solved directly, decompose it into smaller tasks. There is usually a smaller problem that can be solved easier. Just Find it Make the Problem solving faster (team-work) A team of programmers can be used to solve the big problem faster Each sub-problem is independent of other sub-problems and can be solved individually Possibility to design, write and test each module independently Different programmer can be working on different modules at the same time

11 Procedural Programming: Top-Down Design Method 11 Benefits of the Top-Design Method (2) Make it easier to ensure correctness Error can be detected and fixed in a logical manner Easier to isolate the cause of an error, localize the error (within a module or a function), and fix it Ensure reusability The process of top-down design leads to a modular implementation: reusable modules. These modules can be used in future applications Solutions to smaller problems (tasks) are more likely to be re-used elsewhere (in other programs) than solutions to bigger problems Libraries of software modules can be built to solve different tasks For example, you need to use a linked list data structure to solve your problem. The routine to manage and manipulate a linked list can be mostly available to re-use

12 Procedural Programming: Top-Down Design Method 12 Graphical illustration of the Top-Design Method Decomposition of the Problem into smaller sub-problems Level 0 Top Level Level 1 Level 2 Level N... Statement of the Problem Sub-problem1 Sub-problem2 S-P 1.1 S-P 1.2 S-P 1.3 S-P 2.1 S-P 2.2 The number of levels (functional decomposition) continues until the sub-problem is one that can be solved directly Composition of the global solution

13 Procedural Programming: Top-Down Design Method 13 Main issue of the Top-Design Method The Top-Down design method starts with a specification of the system (statement of the problem) at the top level If the main problem is not well-defined (not defined correctly), changes made at the top level (the main program or procedure) will cascade to the subprocedures, and the sub-sub-procedures, and so on Any major change at an upper level may impact all the procedures (solutions to related sub-problems) in that branch of hierarchy

14 Procedural Programming: Top-Down Design Method 14 Practice Example Problem Description: An integer N is "perfect" if N is equal to the sum of the positive integers K such that K < N and K is a divisor of N. Design an algorithm to determine if a given integer is perfect

15 Procedural Programming: Top-Down Design Method 15 Problem Description: An integer N is "perfect" if N is equal to the sum of the positive integers K such that K < N and K is a divisor of N. Design an algorithm to determine if a given integer is perfect Problem Analysis Input: an integer N Precondition: N should be positive Process Determine the divisors of the number N Check if the divisors add up to the number N Output if N is perfect else Display N is perfect or return true Display N is not perfect or return false

16 Procedural Programming: Top-Down Design Method 16 Problem Description: An integer N is "perfect" if N is equal to the sum of the positive integers K such that K < N and K is a divisor of N. Design an algorithm to determine if a given integer is perfect Continuing Problem Analysis: Problem Decomposition Sub-problem 1 Read a positive integer N as input Sub-problem 2 Determine if N is perfect and display the result

17 Procedural Programming: Top-Down Design Method 17 Problem Description: An integer N is "perfect" if N is equal to the sum of the positive integers K such that K < N and K is a divisor of N. Design an algorithm to determine if a given integer is perfect Continuing Problem Analysis: Problem Decomposition Sub-problem 1 Read a positive integer N as input Sub-problem 2 Determine if N is perfect and display the result Sub-problem2 Decomposition: Determine the sum of the divisors of the number N Check if the divisors add up to the number N and display the result

18 Procedural Programming: Top-Down Design Method 18 Problem Description: An integer N is "perfect" if N is equal to the sum of the positive integers K such that K < N and K is a divisor of N. Design an algorithm to determine if a given integer is perfect Solving Sub-problem 1: Read a positive integer N as input Step1: Output a prompt asking for a positive number Step2: Input/Read the number called N Step3: Check if N is positive otherwise ask again for a valid input (Step 3 is a loop executed zero or more time; stop condition: input value N is positive) => Step3: while loop

19 Procedural Programming: Top-Down Design Method 19 Problem: Design an algorithm to determine if a given integer is perfect Coding a Solution for Sub-problem 1: Read a positive integer N as input

20 Procedural Programming: Top-Down Design Method 20 Problem Description: An integer N is "perfect" if N is equal to the sum of the positive integers K such that K < N and K is a divisor of N. Design an algorithm to determine if a given integer is perfect Recall: Problem Decomposition Sub-problem 1 Read a positive integer N as input Sub-problem 2 Determine if N is perfect and display the result Sub-problem2 Decomposition: Determine the sum of the divisors of the number N Check if the divisors add up to the number N and display the result

21 Procedural Programming: Top-Down Design Method 21 Problem Description: An integer N is "perfect" if N is equal to the sum of the positive integers K such that K < N and K is a divisor of N. Design an algorithm to determine if a given integer is perfect Solving Sub-problem 2.1: Determine the sum of the divisors of the number N Step1: Set the Sum to 1 (since 1 certainly divides N) Step2: Set div to 2 Step3: while div is less than or equal to N/2 if div is a divisor of N add div to the Sum add 1 to div => Step 3 is a for loop

22 Procedural Programming: Top-Down Design Method 22 Problem Description: An integer N is "perfect" if N is equal to the sum of the positive integers K such that K < N and K is a divisor of N. Design an algorithm to determine if a given integer is perfect Solving Sub-problem 2.2: Check the result Step1: if Sum equals N Output: Display N is perfect else Output: Display N is not perfect

23 Procedural Programming: Top-Down Design Method 23 Problem: Design an algorithm to determine if a given integer is perfect Coding a Solution for Sub-problem 2: Determine if N is perfect and display the result

24 Procedural Programming: Top-Down Design Method 24 Problem: Design an algorithm to determine if a given integer is perfect Composing a Solution for the Problem: Determine if given number N is perfect

25 Procedural Programming 25 Introduction Procedural Programming: General Overview Procedural Programming: Top-Down Design Method Computational Thinking Programming Tips Keep in Mind

26 Computational Thinking 26 Computational Thinking Processes involved in formulating problems and their solutions in a way that can be effectively performed by a computer Computational thinking is not thinking about computers. It is about looking at a problem in a way that a computer can help us to solve it A collection of diverse skills and techniques to help programmers solve problems using a computer effectively Logical reasoning Defining the best way to solve the problem Decomposition Abstraction Patterns and generalization

27 Computational Thinking 27 Logical reasoning Logical reasoning is fundamental in computer programming Be careful: Computers are not natural logical thinkers. Logical reasoning is about constructing arguments and being able to explain Why does something happen? Why is something the way it is? why something isn t quite as it should be?

28 Computational Thinking 28 Logical reasoning Logical reasoning involves the ability to Analyze problems and logically organize data Break problems into smaller ones, Figure out how repeatable processes can save time and improve quality, Organize problems into the right size Test and debug a problem, search for errors/bugs, and fix them

29 Computational Thinking 29 Defining the best way to solve the problem There are different solutions Analyze the different solutions: which is the best one in terms of correctness, fastest way to solve the problem and using the least amount of resources (time and memory space) Promote re-usability: which solution can be used to solve other problems

30 Computational Thinking 30 Decomposition Breaking-down a problem into smaller sub-problems or tasks, easier to understand and to solve Top-Down Design Method

31 Computational Thinking 31 Abstraction Abstraction is simplifying things Allows a better management of the complexity of problem solving Simplifying things Identifying what is important without worrying about the details (determine what details to highlight and what details to ignore) Removing unnecessary details High-level view: abstract over details

32 Computational Thinking 32 Patterns and Generalization Generalization Looking for a general approach to a class of problems Identifying patterns allows Make predictions Create rules Provide a reliable solution (model) to solve a general problem Spotting and using similarities

33 Procedural Programming 33 Introduction Procedural Programming: General Overview Procedural Programming: Top-Down Design Method Computational Thinking Programming Tips Keep in Mind

34 Programming Tips 34 Refine your program Use methods to increase the readability of your code and makes it easier to expand or change Format your code Code formatting is necessary to understand your code more easily Comment your code Good comments make your program more easier to understand, expand and re-use Test your program Test your program against a well-chosen set of input data and observe the input-output relationships

35 Programming Tips: Program Development Process 35 Analyze the problem statement Design a solution Edit source code Compile/link source code Find error in source code (check syntax) Test your program execution with another set of input Compiletime errors? No Test the program execution Run-time errors? No yes yes Find cause of execution or intent/logic error check code check input data rethink analysis/design Success with this input! or

36 Keep in Mind 36 An algorithm is a repeatable set of steps that can transform inputs into a predictable, consistent output Top-Down Design Method breaking a main algorithm into parts (modules, procedures, functions) that are more manageable and easier to solve. The smaller solutions are assembled into a big solution

37 Keep in Mind 37 Do not forget: You need to develop a solution to a task only once and then re-use it where-ever you need it Computational thinking is the key for organizing thoughts to solve problems efficiently using a computer Use logical reasoning while debugging a program

III. Check if the divisors add up to the number. Now we may consider each of these tasks separately, assuming the others will be taken care of

III. Check if the divisors add up to the number. Now we may consider each of these tasks separately, assuming the others will be taken care of Top-Down Design 1 Top-Down Design: A solution method where the problem is broken down into smaller sub-problems, which in turn are broken down into smaller subproblems, continuing until each sub-problem

More information

Outline. Introduction to Programming (in C++) Introduction. First program in C++ Programming examples

Outline. Introduction to Programming (in C++) Introduction. First program in C++ Programming examples Outline Introduction to Programming (in C++) Introduction Programming examples Algorithms, programming languages and computer programs Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer

More information

INTRODUCTION TO ALGORITHMS

INTRODUCTION TO ALGORITHMS INTRODUCTION TO ALGORITHMS Logic Logic is a tool to develop reasonable conclusions based on a given set of data. Logic is free of emotion and deals very specifically with information in its purest form.

More information

Algorithm Discovery and Design

Algorithm Discovery and Design Algorithm Discovery and Design Chapter 2 The Algorithmic Foundations of Computer Science Algorithms Algorithm Step-by-step method for accomplishing some task Operations used to construct algorithms Sequential,

More information

Software Design Fundamentals. CSCE Lecture 11-09/27/2016

Software Design Fundamentals. CSCE Lecture 11-09/27/2016 Software Design Fundamentals CSCE 740 - Lecture 11-09/27/2016 Today s Goals Define design Introduce the design process Overview of design criteria What results in a good design? Gregory Gay CSCE 740 -

More information

CS2900 Introductory Programming with Python and C++ Kevin Squire LtCol Joel Young Fall 2007

CS2900 Introductory Programming with Python and C++ Kevin Squire LtCol Joel Young Fall 2007 CS2900 Introductory Programming with Python and C++ Kevin Squire LtCol Joel Young Fall 2007 Course Web Site http://www.nps.navy.mil/cs/facultypages/squire/cs2900 All course related materials will be posted

More information

Programming 1. Lecture 1 COP 3014 Fall August 28, 2017

Programming 1. Lecture 1 COP 3014 Fall August 28, 2017 Programming 1 Lecture 1 COP 3014 Fall 2017 August 28, 2017 Main Components of a computer CPU - Central Processing Unit: The brain of the computer. ISA - Instruction Set Architecture: the specific set of

More information

Design and Implementation of an Efficient Algorithm Using Data Structures: A Recipe for the Structured Process Called Top Down Programming

Design and Implementation of an Efficient Algorithm Using Data Structures: A Recipe for the Structured Process Called Top Down Programming Design and Implementation of an Efficient Algorithm Using Data Structures: A Recipe for the Structured Process Called Top Down Programming Doi:10.5901/jesr.2013.v3n9p17 Abstract Chukwudi Igbe Elei Florence.O

More information

3 ADT Implementation in Java

3 ADT Implementation in Java Object-Oriented Design Lecture 3 CS 3500 Spring 2010 (Pucella) Tuesday, Jan 19, 2010 3 ADT Implementation in Java Last time, we defined an ADT via a signature and a specification. We noted that the job

More information

COMP 102: Computers and Computing

COMP 102: Computers and Computing COMP 102: Computers and Computing Lecture 5: What is Programming? Instructor: Kaleem Siddiqi (siddiqi@cim.mcgill.ca) Class web page: www.cim.mcgill.ca/~siddiqi/102.html Motivation The advantage of a computer

More information

SKILL AREA 304: Review Programming Language Concept. Computer Programming (YPG)

SKILL AREA 304: Review Programming Language Concept. Computer Programming (YPG) SKILL AREA 304: Review Programming Language Concept Computer Programming (YPG) 304.1 Demonstrate an Understanding of Basic of Programming Language 304.1.1 Explain the purpose of computer program 304.1.2

More information

Game keystrokes or Calculates how fast and moves a cartoon Joystick movements how far to move a cartoon figure on screen figure on screen

Game keystrokes or Calculates how fast and moves a cartoon Joystick movements how far to move a cartoon figure on screen figure on screen Computer Programming Computers can t do anything without being told what to do. To make the computer do something useful, you must give it instructions. You can give a computer instructions in two ways:

More information

Software Engineering

Software Engineering Software Engineering CS 1025 Computer Science Fundamentals I Stephen M. Watt University of Western Ontario Software Engineering Writing small programs is easy. Writing big programs is hard. This sounds

More information

Homework #2. If (your ID number s last two digits % 6) = 0: 6, 12, 18

Homework #2. If (your ID number s last two digits % 6) = 0: 6, 12, 18 2005/Sep/19 1 Homework #2 Chapter 1: Exercises 7, 9 with modifications: for Exercise 7.a: 20 and 32 are changed as your ID number s last two digits and 60. for Exercise 9: 47x25 are change as 47x(your

More information

CS2112 Fall Assignment 4 Parsing and Fault Injection. Due: March 18, 2014 Overview draft due: March 14, 2014

CS2112 Fall Assignment 4 Parsing and Fault Injection. Due: March 18, 2014 Overview draft due: March 14, 2014 CS2112 Fall 2014 Assignment 4 Parsing and Fault Injection Due: March 18, 2014 Overview draft due: March 14, 2014 Compilers and bug-finding systems operate on source code to produce compiled code and lists

More information

EE 109 Lab 8a Conversion Experience

EE 109 Lab 8a Conversion Experience EE 109 Lab 8a Conversion Experience 1 Introduction In this lab you will write a small program to convert a string of digits representing a number in some other base (between 2 and 10) to decimal. The user

More information

What are the characteristics of Object Oriented programming language?

What are the characteristics of Object Oriented programming language? What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is

More information

Python for Analytics. Python Fundamentals RSI Chapters 1 and 2

Python for Analytics. Python Fundamentals RSI Chapters 1 and 2 Python for Analytics Python Fundamentals RSI Chapters 1 and 2 Learning Objectives Theory: You should be able to explain... General programming terms like source code, interpreter, compiler, object code,

More information

Introduction to Computer Programming Using FORTRAN 77

Introduction to Computer Programming Using FORTRAN 77 Introduction to Computer Programming Using FORTRAN 77 Al-Dhaher, K. Garout, Y. Lafi, A. Al-Muhtaseb, H. Nazzal, A. Saeed, M. Yazdani, J. Zeidan, Y. August 1995 Second Edition Information and Computer Science

More information

Top Down Design. 2. Design Methodology

Top Down Design. 2. Design Methodology Top Down Design 1 A solution method where the problem is broken down into smaller subproblems, which in turn are broken down into smaller problems until each subproblem can be solved in a few steps. (Also

More information

CMSC 132: Object-Oriented Programming II

CMSC 132: Object-Oriented Programming II CMSC 132: Object-Oriented Programming II Problem Specification & Software Architecture Department of Computer Science University of Maryland, College Park Overview Problem specification Obstacles Software

More information

2.9 Modularization. Department of CSE,Coimbatore

2.9 Modularization. Department of CSE,Coimbatore 2.9 Modularization Objectives To understand how algorithms are modularized. To learn how smaller units can be made flexible through the use of formal parameters. To understand the characteristics of well-defined

More information

This course supports the assessment for Scripting and Programming Applications. The course covers 4 competencies and represents 4 competency units.

This course supports the assessment for Scripting and Programming Applications. The course covers 4 competencies and represents 4 competency units. This course supports the assessment for Scripting and Programming Applications. The course covers 4 competencies and represents 4 competency units. Introduction Overview Advancements in technology are

More information

CS101 Introduction to Programming Languages and Compilers

CS101 Introduction to Programming Languages and Compilers CS101 Introduction to Programming Languages and Compilers In this handout we ll examine different types of programming languages and take a brief look at compilers. We ll only hit the major highlights

More information

Intro. Scheme Basics. scm> 5 5. scm>

Intro. Scheme Basics. scm> 5 5. scm> Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if

More information

Data Structures and Algorithms in Java. Second Year Software Engineering

Data Structures and Algorithms in Java. Second Year Software Engineering Data Structures and Algorithms in Java Second Year Software Engineering Introduction Computer: is a programmable machine that can store, retrieve and process data. Data: The representation of information

More information

Constructing Algorithms and Pseudocoding This document was originally developed by Professor John P. Russo

Constructing Algorithms and Pseudocoding This document was originally developed by Professor John P. Russo Constructing Algorithms and Pseudocoding This document was originally developed by Professor John P. Russo Purpose: # Describe the method for constructing algorithms. # Describe an informal language for

More information

Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur

Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur Lecture 06 Object-Oriented Analysis and Design Welcome

More information

IB Computer Science Topic.4: Problem-solving and programming. Designed by: Professor. A. Lawson Sources: Online Materials, thanks for all

IB Computer Science Topic.4: Problem-solving and programming. Designed by: Professor. A. Lawson Sources: Online Materials, thanks for all Topic.4: Problem-solving and programming Designed by: Professor. A. Lawson Sources: Online Materials, thanks for all 1 Topic 4 - Overview Thinking procedurally 4.1.1 Identify the procedure appropriate

More information

Computers and FORTRAN Language Fortran 95/2003. Dr. Isaac Gang Tuesday March 1, 2011 Lecture 3 notes. Topics:

Computers and FORTRAN Language Fortran 95/2003. Dr. Isaac Gang Tuesday March 1, 2011 Lecture 3 notes. Topics: Computers and FORTRAN Language Fortran 95/2003 Dr. Isaac Gang Tuesday March 1, 2011 Lecture 3 notes Topics: - Program Design - Logical Operators - Logical Variables - Control Statements Any FORTRAN program

More information

Python Programming: An Introduction to Computer Science

Python Programming: An Introduction to Computer Science Python Programming: An Introduction to Computer Science Introduction Python Programming, 2/e 1 Website https://cs.gsu.edu/~xyu3/csc1310 Python Programming, 2/e 2 What s a modern computer? Used almost everywhere

More information

Programming Logic and Design Seventh Edition Chapter 2 Elements of High-Quality Programs

Programming Logic and Design Seventh Edition Chapter 2 Elements of High-Quality Programs Programming Logic and Design Chapter 2 Elements of High-Quality Programs Objectives In this chapter, you will learn about: Declaring and using variables and constants Assigning values to variables [assignment

More information

Consolidation and Review

Consolidation and Review Consolidation and Review Professor Hugh C. Lauer CS-1004 Introduction to Programming for Non-Majors (Slides include materials from Python Programming: An Introduction to Computer Science, 2 nd edition,

More information

Intro to Programming. Unit 7. What is Programming? What is Programming? Intro to Programming

Intro to Programming. Unit 7. What is Programming? What is Programming? Intro to Programming Intro to Programming Unit 7 Intro to Programming 1 What is Programming? 1. Programming Languages 2. Markup vs. Programming 1. Introduction 2. Print Statement 3. Strings 4. Types and Values 5. Math Externals

More information

CIS 1.5 Course Objectives. a. Understand the concept of a program (i.e., a computer following a series of instructions)

CIS 1.5 Course Objectives. a. Understand the concept of a program (i.e., a computer following a series of instructions) By the end of this course, students should CIS 1.5 Course Objectives a. Understand the concept of a program (i.e., a computer following a series of instructions) b. Understand the concept of a variable

More information

C++ Programming Language Lecture 2 Problem Analysis and Solution Representation

C++ Programming Language Lecture 2 Problem Analysis and Solution Representation C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department Program Development Cycle Program development

More information

Programming language components

Programming language components Programming language components syntax: grammar rules for defining legal statements what's grammatically legal? how are things built up from smaller things? semantics: what things mean what do they compute?

More information

Administration Computers Software Algorithms Programming Languages

Administration Computers Software Algorithms Programming Languages Administration Computers Software Algorithms Programming Languages http://www.cs.sfu.ca/cc/130/johnwill/ This course does not use Canvas John Edgar 3 Come to class Read ahead Attend the labs You get practice

More information

Chapter 2: Algorithm Discovery and Design. Invitation to Computer Science, C++ Version, Fourth Edition

Chapter 2: Algorithm Discovery and Design. Invitation to Computer Science, C++ Version, Fourth Edition Chapter 2: Algorithm Discovery and Design Invitation to Computer Science, C++ Version, Fourth Edition Objectives In this chapter, you will learn about Representing algorithms Examples of algorithmic problem

More information

Creational. Structural

Creational. Structural Fitness for Future of Design Patterns & Architectural Styles Design patterns are difficult to teach, so we conducted a class collaboration where we all researched and reported on a variety of design patterns

More information

CS187 - Science Gateway Seminar for CS and Math

CS187 - Science Gateway Seminar for CS and Math CS187 - Science Gateway Seminar for CS and Math Fall 2013 Class 6 Sep. 19, 2013 Programming and Programming Languages Why, How and What? A programming language is a formal language (vs. natural language)

More information

Teaching guide: Structured programming

Teaching guide: Structured programming Teaching guide: Structured programming This resource will help with understanding structured programming. It supports Section 3.2.11 of our current specification (8520). The guide is designed to address

More information

CSE101-lec#12. Designing Structured Programs Introduction to Functions. Created By: Amanpreet Kaur & Sanjeev Kumar SME (CSE) LPU

CSE101-lec#12. Designing Structured Programs Introduction to Functions. Created By: Amanpreet Kaur & Sanjeev Kumar SME (CSE) LPU CSE101-lec#12 Designing Structured Programs Introduction to Functions Created By: Amanpreet Kaur & Sanjeev Kumar SME (CSE) LPU Outline Designing structured programs in C: Counter-controlled repetition

More information

Repetition Through Recursion

Repetition Through Recursion Fundamentals of Computer Science I (CS151.02 2007S) Repetition Through Recursion Summary: In many algorithms, you want to do things again and again and again. For example, you might want to do something

More information

Outline. Program development cycle. Algorithms development and representation. Examples.

Outline. Program development cycle. Algorithms development and representation. Examples. Outline Program development cycle. Algorithms development and representation. Examples. 1 Program Development Cycle Program development cycle steps: Problem definition. Problem analysis (understanding).

More information

SNS COLLEGE OF ENGINEERING,

SNS COLLEGE OF ENGINEERING, SNS COLLEGE OF ENGINEERING, COIMBATORE Department of Computer Science and Engineering QUESTION BANK(PART A) GE8151 - PROBLEM SOLVING AND PYTHON PROGRAMMING TWO MARKS UNIT-I 1. What is computer? Computers

More information

CS1102: What is a Programming Language?

CS1102: What is a Programming Language? CS1102: What is a Programming Language? Kathi Fisler, WPI September 13, 2007 1 The Design and Programming Perspectives To start to understand what comprises a programming language, let s consider sample

More information

CSc 10200! Introduction to Computing. Lecture 1 Edgardo Molina Fall 2013 City College of New York

CSc 10200! Introduction to Computing. Lecture 1 Edgardo Molina Fall 2013 City College of New York CSc 10200! Introduction to Computing Lecture 1 Edgardo Molina Fall 2013 City College of New York 1 Introduction to Computing Lectures: Tuesday and Thursday s (2-2:50 pm) Location: NAC 1/202 Recitation:

More information

Verification and Validation

Verification and Validation Steven Zeil February 13, 2013 Contents 1 The Process 3 1 2 Non-Testing V&V 7 2.1 Code Review....... 8 2.2 Mathematically-based verification......................... 19 2.3 Static analysis tools... 23 2.4

More information

CONNECTED SPACES AND HOW TO USE THEM

CONNECTED SPACES AND HOW TO USE THEM CONNECTED SPACES AND HOW TO USE THEM 1. How to prove X is connected Checking that a space X is NOT connected is typically easy: you just have to find two disjoint, non-empty subsets A and B in X, such

More information

Verification and Validation

Verification and Validation Steven Zeil February 13, 2013 Contents 1 The Process 2 2 Non-Testing V&V 3 2.1 Code Review........... 4 2.2 Mathematically-based verification.................................. 8 2.3 Static analysis tools.......

More information

CS 220: Introduction to Parallel Computing. Arrays. Lecture 4

CS 220: Introduction to Parallel Computing. Arrays. Lecture 4 CS 220: Introduction to Parallel Computing Arrays Lecture 4 Note: Windows I updated the VM image on the website It now includes: Sublime text Gitkraken (a nice git GUI) And the git command line tools 1/30/18

More information

CS50 Supersection (for those less comfortable)

CS50 Supersection (for those less comfortable) CS50 Supersection (for those less comfortable) Friday, September 8, 2017 3 4pm, Science Center C Maria Zlatkova, Doug Lloyd Today s Topics Setting up CS50 IDE Variables and Data Types Conditions Boolean

More information

Object Oriented Methods : Deeper Look Lecture Three

Object Oriented Methods : Deeper Look Lecture Three University of Babylon Collage of Computer Assistant Lecturer : Wadhah R. Baiee Experience has shown that the best way to develop and maintain a large program is to construct it from small, simple pieces,

More information

9/5/17. The Design and Implementation of Programming Languages. Compilation. Interpretation. Compilation vs. Interpretation. Hybrid Implementation

9/5/17. The Design and Implementation of Programming Languages. Compilation. Interpretation. Compilation vs. Interpretation. Hybrid Implementation Language Implementation Methods The Design and Implementation of Programming Languages Compilation Interpretation Hybrid In Text: Chapter 1 2 Compilation Interpretation Translate high-level programs to

More information

Lecture #2: Programming Structures: Loops and Functions

Lecture #2: Programming Structures: Loops and Functions UC Berkeley EECS Adj. Ass. Prof. Dr. Gerald Friedland Computational Structures in Data Science Lecture #2: Programming Structures: Loops and Functions Administrivia If you are waitlisted: Please wait.

More information

Python - Week 1. Mohammad Shokoohi-Yekta

Python - Week 1. Mohammad Shokoohi-Yekta Python - Week 1 Mohammad Shokoohi-Yekta 1 An Introduction to Computers and Problem Solving 1.1 An Introduction to Computers 1.2 Program Development Cycle 1.3 Programming Tools 1.4 Starting Python 2 Communicating

More information

CSE 230 Computer Science II (Data Structure) Introduction

CSE 230 Computer Science II (Data Structure) Introduction CSE 230 Computer Science II (Data Structure) Introduction Fall 2017 Stony Brook University Instructor: Shebuti Rayana Basic Terminologies Data types Data structure Phases of S/W development Specification

More information

Introduction to Programming Using Java (98-388)

Introduction to Programming Using Java (98-388) Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;

More information

ELEMENTARY NUMBER THEORY AND METHODS OF PROOF

ELEMENTARY NUMBER THEORY AND METHODS OF PROOF CHAPTER 4 ELEMENTARY NUMBER THEORY AND METHODS OF PROOF Copyright Cengage Learning. All rights reserved. SECTION 4.8 Application: Algorithms Copyright Cengage Learning. All rights reserved. Application:

More information

Intel x86 Jump Instructions. Part 5. JMP address. Operations: Program Flow Control. Operations: Program Flow Control.

Intel x86 Jump Instructions. Part 5. JMP address. Operations: Program Flow Control. Operations: Program Flow Control. Part 5 Intel x86 Jump Instructions Control Logic Fly over code Operations: Program Flow Control Operations: Program Flow Control Unlike high-level languages, processors don't have fancy expressions or

More information

UNIT II Requirements Analysis and Specification & Software Design

UNIT II Requirements Analysis and Specification & Software Design UNIT II Requirements Analysis and Specification & Software Design Requirements Analysis and Specification Many projects fail: because they start implementing the system: without determining whether they

More information

Programming 1. Lecture 1 COP 3014 Fall August 28, 2018

Programming 1. Lecture 1 COP 3014 Fall August 28, 2018 Programming 1 Lecture 1 COP 3014 Fall 2018 August 28, 2018 Programming I - Course Information Instructor: Sharanya Jayaraman PhD Candidate in Computer Science Research Interests: High Performance Computing,

More information

A Quick Review of Chapter 1

A Quick Review of Chapter 1 A Quick Review of Chapter 1 The core of computing is algorithms Algorithm A well-ordered collection of unambiguous and effectively computable operations that, when executed, produces a result and halts

More information

10 C Language Tips for Hardware Engineers

10 C Language Tips for Hardware Engineers 10 C Language Tips for Hardware Engineers Jacob Beningo - March 05, 2013 On its own, the software development process has numerous hazards and obstacles that require navigation in order to successfully

More information

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction At this point, you are ready to beginning programming at a lower level How do you actually write your

More information

Intel x86 Jump Instructions. Part 5. JMP address. Operations: Program Flow Control. Operations: Program Flow Control.

Intel x86 Jump Instructions. Part 5. JMP address. Operations: Program Flow Control. Operations: Program Flow Control. Part 5 Intel x86 Jump Instructions Control Logic Fly over code Operations: Program Flow Control Operations: Program Flow Control Unlike high-level languages, processors don't have fancy expressions or

More information

Unit 1: Introduction to Algorithms

Unit 1: Introduction to Algorithms 1 Unit 1: Introduction Unit 1: Introduction to Algorithms Steps involved in Problem Solving Problem solving by the computer involves the following steps 1. Problem definition 2. Analysis 3. Design 4. Coding

More information

Software Lesson 2 Outline

Software Lesson 2 Outline Software Lesson 2 Outline 1. Software Lesson 2 Outline 2. Languages 3. Ingredients of a Language 4. Kinds of Languages 5. Natural Languages #1 6. Natural Languages #2 7. Natural Languages #3 8. Natural

More information

Modularity!! Guidelines for design! in any programming language!

Modularity!! Guidelines for design! in any programming language! Modularity!! Guidelines for design! in any programming language! 14-1! Modular Software! Software constructed as assemblies of small pieces! 14-2! Modular Software 2! Software constructed as assemblies

More information

CS Prof J.P.Morrison

CS Prof J.P.Morrison CS1061 2018-2019 Prof J.P.Morrison C Programming C is the most popular language worldwide. Everything from microcontrollers to operating systems is written in C flexible and versatile, allowing maximum

More information

4.2 Variations on a Scheme -- Lazy Evaluation

4.2 Variations on a Scheme -- Lazy Evaluation [Go to first, previous, next page; contents; index] 4.2 Variations on a Scheme -- Lazy Evaluation Now that we have an evaluator expressed as a Lisp program, we can experiment with alternative choices in

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 9 (Part II) Recursion MOUNA KACEM Recursion: General Overview 2 Recursion in Algorithms Recursion is the use of recursive algorithms to solve a problem A recursive algorithm

More information

Intro to semantics; Small-step semantics Lecture 1 Tuesday, January 29, 2013

Intro to semantics; Small-step semantics Lecture 1 Tuesday, January 29, 2013 Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Lecture 1 Tuesday, January 29, 2013 1 Intro to semantics What is the meaning of a program? When we write a program, we use

More information

Stepwise Refinement. Lecture 12 COP 3014 Spring February 2, 2017

Stepwise Refinement. Lecture 12 COP 3014 Spring February 2, 2017 Stepwise Refinement Lecture 12 COP 3014 Spring 2017 February 2, 2017 Top-Down Stepwise Refinement Top down stepwise refinement is a useful problem-solving technique that is good for coming up with an algorithm.

More information

Teaching London Computing

Teaching London Computing Teaching London Computing A Level Computer Science Topic 1: GCSE Python Recap William Marsh School of Electronic Engineering and Computer Science Queen Mary University of London Aims What is programming?

More information

Module 10: Imperative Programming, Modularization, and The Future

Module 10: Imperative Programming, Modularization, and The Future Module 10: Imperative Programming, Modularization, and The Future If you have not already, make sure you Read How to Design Programs Sections 18. 1 CS 115 Module 10: Imperative Programming, Modularization,

More information

Control, Quick Overview. Selection. Selection 7/6/2017. Chapter 2. Control

Control, Quick Overview. Selection. Selection 7/6/2017. Chapter 2. Control Chapter 2 Control, Quick Overview Control Selection Selection Selection is how programs make choices, and it is the process of making choices that provides a lot of the power of computing 1 Python if statement

More information

9/23/2013. Chapter 2. Objectives. Introduction. Objectives (continued) Representing Algorithms. Representing Algorithms

9/23/2013. Chapter 2. Objectives. Introduction. Objectives (continued) Representing Algorithms. Representing Algorithms Chapter 2 The Algorithmic Foundations of Computer Science Objectives After studying this chapter, students will be able to: Explain the benefits of pseudocode over natural language or a programming language

More information

Repetition Structures

Repetition Structures Repetition Structures Chapter 5 Fall 2016, CSUS Introduction to Repetition Structures Chapter 5.1 1 Introduction to Repetition Structures A repetition structure causes a statement or set of statements

More information

Programming Languages and Program Development Life Cycle Fall Introduction to Information and Communication Technologies CSD 102

Programming Languages and Program Development Life Cycle Fall Introduction to Information and Communication Technologies CSD 102 Programming Languages and Program Development Life Cycle Fall 2016 Introduction to Information and Communication Technologies CSD 102 Outline The most common approaches to program design and development

More information

REVIEW. The C++ Programming Language. CS 151 Review #2

REVIEW. The C++ Programming Language. CS 151 Review #2 REVIEW The C++ Programming Language Computer programming courses generally concentrate on program design that can be applied to any number of programming languages on the market. It is imperative, however,

More information

Fundamental Concepts. Chapter 1

Fundamental Concepts. Chapter 1 Chapter 1 Fundamental Concepts This book is about the mathematical foundations of programming, with a special attention on computing with infinite objects. How can mathematics help in programming? There

More information

COP Programming Assignment #7

COP Programming Assignment #7 1 of 5 03/13/07 12:36 COP 3330 - Programming Assignment #7 Due: Mon, Nov 21 (revised) Objective: Upon completion of this program, you should gain experience with operator overloading, as well as further

More information

Applying Best Practices, QA, and Tips and Tricks to Our Reports

Applying Best Practices, QA, and Tips and Tricks to Our Reports Applying Best Practices, QA, and Tips and Tricks to Our Reports If we had to summarize all we have learned so far, put it into a nutshell, and squeeze in just the very best of everything, this is how that

More information

CS 220: Introduction to Parallel Computing. Beginning C. Lecture 2

CS 220: Introduction to Parallel Computing. Beginning C. Lecture 2 CS 220: Introduction to Parallel Computing Beginning C Lecture 2 Today s Schedule More C Background Differences: C vs Java/Python The C Compiler HW0 8/25/17 CS 220: Parallel Computing 2 Today s Schedule

More information

Excel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller

Excel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller Excel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller Table of Contents Introduction!... 1 Part 1: Entering Data!... 2 1.a: Typing!... 2 1.b: Editing

More information

Z Notation. June 21, 2018

Z Notation. June 21, 2018 Z Notation June 21, 2018 1 Definitions There are many different ways to introduce an object in a Z specification: declarations, abbreviations, axiomatic definitions, and free types. Keep in mind that the

More information

Algorithms and Flowcharts

Algorithms and Flowcharts UNIT 2 Chapter 1 Algorithms and Flowcharts After studying this lesson, the students will be able to understand the need of Algorithm and Flowcharts; solve problems by using algorithms and flowcharts; get

More information

Implementing an Algorithm for Boomerang Fraction Sequences in Python

Implementing an Algorithm for Boomerang Fraction Sequences in Python Introduction Implementing an Algorithm for Boomerang Fraction Sequences in Python We ve all encountered maze problems, where the challenge is to find a path through a labyrinth from a starting point to

More information

Modularity Guidelines for design in any programming language

Modularity Guidelines for design in any programming language Modularity Guidelines for design in any programming language 14-1 Modular Software Software constructed as assemblies of small pieces» Each piece encompasses the data and operations necessary to do one

More information

CPE 101. Overview. Programming vs. Cooking. Key Definitions/Concepts B-1

CPE 101. Overview. Programming vs. Cooking. Key Definitions/Concepts B-1 CPE 101 Lecture 2: Problems, Algorithms, and Programs (Slides adapted from a UW course, copyrighted and used by permission) Overview High-level survey Problems, algorithms, and programs Problem solving

More information

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING JAN BARTONÍČEK This paper's goal is to briefly explain the basic theory behind programming languages and their history

More information

1. Introduction to Programming

1. Introduction to Programming Computer Science I CS 135 1. Introduction to Programming René Doursat Department of Computer Science & Engineering University of Nevada, Reno Fall 2005 Computer Science I CS 135 0. Course Presentation

More information

Lecture Programming in C++ PART 1. By Assistant Professor Dr. Ali Kattan

Lecture Programming in C++ PART 1. By Assistant Professor Dr. Ali Kattan Lecture 08-1 Programming in C++ PART 1 By Assistant Professor Dr. Ali Kattan 1 The Conditional Operator The conditional operator is similar to the if..else statement but has a shorter format. This is useful

More information

Arithmetic Processing

Arithmetic Processing CS/EE 5830/6830 VLSI ARCHITECTURE Chapter 1 Basic Number Representations and Arithmetic Algorithms Arithmetic Processing AP = (operands, operation, results, conditions, singularities) Operands are: Set

More information

Object Oriented Programming

Object Oriented Programming Binnur Kurt kurt@ce.itu.edu.tr Istanbul Technical University Computer Engineering Department 1 Version 0.1.2 About the Lecturer BSc İTÜ, Computer Engineering Department, 1995 MSc İTÜ, Computer Engineering

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 10 Recursion and Search MOUNA KACEM mouna@cs.wisc.edu Spring 2019 Recursion: General Overview 2 Recursion in Algorithms Recursion is the use of recursive algorithms to

More information

Compiler Construction D7011E

Compiler Construction D7011E Compiler Construction D7011E Lecture 2: Lexical analysis Viktor Leijon Slides largely by Johan Nordlander with material generously provided by Mark P. Jones. 1 Basics of Lexical Analysis: 2 Some definitions:

More information

Program Syntax; Operational Semantics

Program Syntax; Operational Semantics 9/5 Solved Program Syntax; Operational Semantics CS 536: Science of Programming, Fall 2018 A. Why Our simple programming language is a model for the kind of constructs seen in actual languages. Step-by-step

More information