Abstract Data Types. Functional Programming and Reasoning. Dr Hans Georg Schaathun. University of Surrey. Spring 2010 Week 4
|
|
- Julius Andrews
- 5 years ago
- Views:
Transcription
1 Abstract Data Types Functional Programming and Reasoning Dr Hans Georg Schaathun University of Surrey Spring 2010 Week 4 Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 1 / 32
2 Outline 1 Modules 2 Abstract Data Types 3 Specification 4 Data Structures 5 Closing Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 2 / 32
3 This session After this session, you should be able to use ADT-s in software design be able to implement simple ADT-s in haskell based on a specification Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 3 / 32
4 Outline Modules 1 Modules 2 Abstract Data Types 3 Specification 4 Data Structures 5 Closing Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 4 / 32
5 Modules Modularisation Divide large problems into smaller ones solve each subproblem separately Functions is one way to split large programs But large programs, with many functions, would still be hard to structure Modules allow you to split programs into multiple files Each file is one module Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 5 / 32
6 Modules Naming modules module Ant where It is good practice to give your modules a name The filename should match the module name the Ant module resides in Ant.hs This is necessary to import the module into another Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 6 / 32
7 Sample module Modules module Ant where import Insect data Ants = Queen Int Float Worker Float anteater x = x - 1 Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 7 / 32
8 Modules Importing modules import Insect Whenever you need functions from a module you import it Access to all functions in the module Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 8 / 32
9 Modules Import Controls Limited imports import Ant ( Ants(..) ) Excluding functions import Ant hiding ( anteater ) import Prelude hiding ( words ) Fully qualified names import qualified Ant Ant.anteater Local name import Insect as Ant importing Ant, but calling it Insect All of these techniques may be important to avoid name clashes but you don t need them for now Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 9 / 32
10 Program versus module Modules We have not yet written a program only modules The hugs command line allows us to test modules we can evaluate any expression testing any function in the module A program needs to know what to evaluate that is an object main in a module Main Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 10 / 32
11 Modules The Main module A program needs a top-level module Main module Main where Defining an expression main this expression is evaluated when the program is run The main expression must be an IO type we will discuss how to do this later (Week 9?) Such a program can be run as a script runhugs main.hs or compiled using the Glasgow Haskell Compiler Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 11 / 32
12 Sample Main module Modules module Main where data Shape = Circle Float Rectangle Float Float area :: Shape -> Float area (Circle r) = pi*r^2 area (Rectangle x y) = x*y s :: Shape s = Circle 2.3 main = print (area s) Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 12 / 32
13 Modules Software design Which modules? Each module should have a clear purpose clear scope documentation Main contains the main routine only definitions particular to this programme separate modules for reusable functions Often, one module for each data type including functions on the data type Think about how you split the program into modules Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 13 / 32
14 Outline Abstract Data Types 1 Modules 2 Abstract Data Types 3 Specification 4 Data Structures 5 Closing Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 14 / 32
15 Abstract Data Types Encapsulation A module often contains many definitions only a few are docuemented intended for use in importing modules many auxiliary definitions and features for internal use This causes problems information overload for the programmer using the module name clashes with other modules Good practice: hide all unnecessary definitions Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 15 / 32
16 Abstract Data Types Example Inventory of a Store A data type to hold a library catalogue Possibly type Library = [(Book,Int)] using your Book type from the exercises storing the number of copies Do you need to know how the type is implemented? No. You need to know the functions working on the type. getstock :: Library -> Book -> Int initial :: Library (empty library) addbook :: Library -> Book -> Library All functionality available via the functions You do not need to know the implementation data Library = Lib [ (Book,Int) ], or data Library = Lib (Book -> Int) Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 16 / 32
17 Abstract Data Types Example Inventory of a Store A data type to hold a library catalogue Possibly type Library = [(Book,Int)] using your Book type from the exercises storing the number of copies Do you need to know how the type is implemented? No. You need to know the functions working on the type. getstock :: Library -> Book -> Int initial :: Library (empty library) addbook :: Library -> Book -> Library All functionality available via the functions You do not need to know the implementation data Library = Lib [ (Book,Int) ], or data Library = Lib (Book -> Int) Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 16 / 32
18 Abstract Data Types Example Inventory of a Store A data type to hold a library catalogue Possibly type Library = [(Book,Int)] using your Book type from the exercises storing the number of copies Do you need to know how the type is implemented? No. You need to know the functions working on the type. getstock :: Library -> Book -> Int initial :: Library (empty library) addbook :: Library -> Book -> Library All functionality available via the functions You do not need to know the implementation data Library = Lib [ (Book,Int) ], or data Library = Lib (Book -> Int) Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 16 / 32
19 Abstract Datatype Abstract Data Types An abstract data type (ADT) is a type which can only be accessed or manipulated using a limited set of clearly defined functions. New functions must be defined in terms of the primitive functions No direct access to the data many things will be impossible This prevents abuse of the data type and thus prevents many errors Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 17 / 32
20 Abstract Data Types Defining an ADT module Library( Library, initial, getstock, addbook ) where We list explicitely which names to export The type Library is exported its constructors are not Exported functions (initial, getstock, addbook) gives access to the type This Haskell s ADT mechanism Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 18 / 32
21 Abstract Data Types Export Controls Export Controls can be used in different ways ADT-s are special in that the constructors are hidden module Library( Library(..), initial, getstock, addbook ) where (..) means that the constructors should be exported as well this is not an ADT You can choose (almost) freely what to export Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 19 / 32
22 Abstract Data Types Classes and Instances Defining an ADT, you will often want to overload standard functions instance Show Library where Such instances are always exported Inherent properties of the data type cannot be hidden Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 20 / 32
23 Advantages of ADT-s Abstract Data Types Interchangeable different implementations of the same ADT can be interchanged... as long as the specification is the same Delegate the implementation if you agree on the interface (functions) you know it will work with other modules Updates with backwards compatibility add features while continuing to support old ones Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 21 / 32
24 Outline Specification 1 Modules 2 Abstract Data Types 3 Specification 4 Data Structures 5 Closing Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 22 / 32
25 Specification Specification A specification is a careful description of a program or module formal specification languages (such as Z) natural language It defines exactly how the module is intended to work exactly which functions are supported Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 23 / 32
26 Specification example Library catalogue Specification A type Library storing records of books number of copies per book Required functions addbook :: Library -> Book -> Library add a new book to the library if the book exists already, increase number of copies initial :: Library return a Library with no books getstock :: Library -> Book -> Int given a book return Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 24 / 32
27 Specification Why use specification Software projects are big communication and collaboration essential Agreeing on specifications allow independent implementation One person can implement the ADT Others can write modules using the ADT It is important to be able to program strictly to specifications otherwise the modules won t fit together Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 25 / 32
28 Outline Data Structures 1 Modules 2 Abstract Data Types 3 Specification 4 Data Structures 5 Closing Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 26 / 32
29 Data Structures Data structures ADT-s are common for defining Data Structures e.g. lists, queues, stacks, heaps, etc. Holding large quantities of data Different functions for data processing and access sorting searching last/first element Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 27 / 32
30 Data Structures Example: Queue First in, first out Insert elements at the end of the queue Retrieve elements from the head of the queue Usually no searching ADT functions emptyq (create empty queue) isemptyq (is the queue empty?) addq (add element) remq (remove/retrieve element) Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 28 / 32
31 Data Structures Different ways to define data types data NewType = Cons1 T11 T12... Cons2 T21 T algebraic data type as discussed the most flexible construct newtype NewType = Cons1 T1 special case with only one constructor and one argument more efficient (internally) than data otherwise equivalent type NewType =... alias for another data type often tupples no type checking between the alias and the original type Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 29 / 32
32 Queue Implementation Data Structures module Queue(Queue,emptyQ,isEmptyQ,addQ,remQ) where newtype Queue a = Qu [a] -- parameterised emptyq - Qu [] isemptyq (Qu []) = True isemptyq _ = False addq x (Qu xs) = Qu ( xs++[x] ) remq Qu ([]) = error "Cannot remove from empty queue" remq Qu (x:xs) = (x,xs) Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 30 / 32
33 Outline Closing 1 Modules 2 Abstract Data Types 3 Specification 4 Data Structures 5 Closing Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 31 / 32
34 Closing Summary Module allows structuring your program An ADT is a module with a carefully controlled interface The coursework will require an ADT you are given a front-end module have to implement the ADT strictly to specification the use of ADT-s ensure compatibility Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 32 / 32
Composite Datatypes Lists and Tuples
Composite Datatypes Lists and Tuples CS190 Functional Programming Techniques Dr Hans Georg Schaathun University of Surrey Autumn 2008 Week 4 Dr Hans Georg Schaathun Composite Datatypes Lists and Tuples
More informationSoftware Design and Analysis for Engineers
Software Design and Analysis for Engineers by Dr. Lesley Shannon Email: lshannon@ensc.sfu.ca Course Website: http://www.ensc.sfu.ca/~lshannon/courses/ensc251 Simon Fraser University Slide Set: 2 Date:
More informationFunctional Programming in Haskell Part I : Basics
Functional Programming in Haskell Part I : Basics Madhavan Mukund Chennai Mathematical Institute 92 G N Chetty Rd, Chennai 600 017, India madhavan@cmi.ac.in http://www.cmi.ac.in/ madhavan Madras Christian
More informationThis session. Recursion. Planning the development. Software development. COM1022 Functional Programming and Reasoning
This session Recursion COM1022 Functional Programming and Reasoning Dr. Hans Georg Schaathun and Prof. Steve Schneider University of Surrey After this session, you should understand the principle of recursion
More informationShell CSCE 314 TAMU. Haskell Functions
1 CSCE 314: Programming Languages Dr. Dylan Shell Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions can
More informationn n Try tutorial on front page to get started! n spring13/ n Stack Overflow!
Announcements n Rainbow grades: HW1-6, Quiz1-5, Exam1 n Still grading: HW7, Quiz6, Exam2 Intro to Haskell n HW8 due today n HW9, Haskell, out tonight, due Nov. 16 th n Individual assignment n Start early!
More informationGetting started with Hugs on Linux
Getting started with Hugs on Linux COM1022 Functional Programming Techniques Dr Hans Georg Schaathun University of Surrey Autumn 2009 Week 7 Dr Hans Georg Schaathun Getting started with Hugs on Linux Autumn
More informationGetting started with Hugs on Linux
Getting started with Hugs on Linux CS190 Functional Programming Techniques Dr Hans Georg Schaathun University of Surrey Autumn 2008 Week 1 Dr Hans Georg Schaathun Getting started with Hugs on Linux Autumn
More informationDATA STRUCTURES CHAPTER 1
DATA STRUCTURES CHAPTER 1 FOUNDATIONAL OF DATA STRUCTURES This unit introduces some basic concepts that the student needs to be familiar with before attempting to develop any software. It describes data
More informationA Brief Haskell and GHC Refresher
A Brief Haskell and GHC Refresher Henrik Nilsson and Neil Sculthorpe School of Computer Science University of Nottingham 24th September 2013 1 Introduction The purpose of this document is to give you quick
More informationCSCE 314 Programming Languages
CSCE 314 Programming Languages Haskell: Declaring Types and Classes Dr. Hyunyoung Lee 1 Outline Declaring Data Types Class and Instance Declarations 2 Defining New Types Three constructs for defining types:
More informationOBJECT ORİENTATİON ENCAPSULATİON
OBJECT ORİENTATİON Software development can be seen as a modeling activity. The first step in the software development is the modeling of the problem we are trying to solve and building the conceptual
More informationWorld Champion chess player Garry Kasparov was defeated by IBM s Deep Blue chess-playing computer in a sixgame match in May, The match received
World Champion chess player Garry Kasparov was defeated by IBM s Deep Blue chess-playing computer in a sixgame match in May, 1997. The match received enormous media coverage, much of which emphasized the
More informationAn introduction to functional programming. July 23, 2010
An introduction to functional programming July 23, 2010 About Outline About About What is functional programming? What is? Why functional programming? Why? is novel. is powerful. is fun. About A brief
More informationCSCE 314 TAMU Fall CSCE 314: Programming Languages Dr. Flemming Andersen. Haskell Functions
1 CSCE 314: Programming Languages Dr. Flemming Andersen Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions
More informationMULTIMEDIA COLLEGE JALAN GURNEY KIRI KUALA LUMPUR
STUDENT IDENTIFICATION NO MULTIMEDIA COLLEGE JALAN GURNEY KIRI 54100 KUALA LUMPUR FIFTH SEMESTER FINAL EXAMINATION, 2014/2015 SESSION PSD2023 ALGORITHM & DATA STRUCTURE DSEW-E-F-2/13 25 MAY 2015 9.00 AM
More informationLesson Plan. Subject: OBJECT ORIENTED PROGRAMMING USING C++ :15 weeks (From January, 2018 to April,2018)
Lesson Plan Name of the Faculty Discipline Semester :Mrs. Reena Rani : Computer Engineering : IV Subject: OBJECT ORIENTED PROGRAMMING USING C++ Lesson Plan Duration :15 weeks (From January, 2018 to April,2018)
More informationHaskell: From Basic to Advanced. Part 2 Type Classes, Laziness, IO, Modules
Haskell: From Basic to Advanced Part 2 Type Classes, Laziness, IO, Modules Qualified types In the types schemes we have seen, the type variables were universally quantified, e.g. ++ :: [a] -> [a] -> [a]
More informationIntroduction to Haskell
Introduction to Haskell Matt Mullins Texas A&M Computing Society October 6, 2009 Matt Mullins (TACS) Introduction to Haskell October 6, 2009 1 / 39 Outline Introduction to Haskell Functional Programming
More informationAdvanced features of Functional Programming (Haskell)
Advanced features of Functional Programming (Haskell) Polymorphism and overloading January 10, 2017 Monomorphic and polymorphic types A (data) type specifies a set of values. Examples: Bool: the type of
More informationA A B U n i v e r s i t y
A A B U n i v e r s i t y Faculty of Computer Sciences O b j e c t O r i e n t e d P r o g r a m m i n g Week 4: Introduction to Classes and Objects Asst. Prof. Dr. M entor Hamiti mentor.hamiti@universitetiaab.com
More informationFunctional Programming in Haskell Part 2 : Abstract dataypes and infinite structures
Functional Programming in Haskell Part 2 : Abstract dataypes and infinite structures Madhavan Mukund Chennai Mathematical Institute 92 G N Chetty Rd, Chennai 600 017, India madhavan@cmi.ac.in http://www.cmi.ac.in/
More informationLogical Methods in... using Haskell Getting Started
Logical Methods in... using Haskell Getting Started Jan van Eijck May 4, 2005 Abstract The purpose of this course is to teach a bit of functional programming and logic, and to connect logical reasoning
More informationTHE CONCEPTION AND APPLICATION OF PFL : A PROCESS FUNCTIONAL PROGRAMMING LANGUAGE
UDC 51:681.3 Ján Kollár THE CONCEPTION AND APPLICATION OF PFL : A PROCESS FUNCTIONAL PROGRAMMING LANGUAGE A new process functional programming paradigm and its application in PFL a process functional programming
More informationAgenda CS121/IS223. Reminder. Object Declaration, Creation, Assignment. What is Going On? Variables in Java
CS121/IS223 Object Reference Variables Dr Olly Gotel ogotel@pace.edu http://csis.pace.edu/~ogotel Having problems? -- Come see me or call me in my office hours -- Use the CSIS programming tutors Agenda
More informationData Structures and Algorithms. Chapter 1
Data Structures Dr Ahmed Rafat Abas Computer Science Dept, Faculty of Computer and Information, Zagazig University arabas@zu.edu.eg http://www.arsaliem.faculty.zu.edu.eg/ Data Structures and Algorithms
More informationCOMP3141 Assignment 2
COMP3141 Assignment 2 Haskell-Augmented Regular Expressions (H.A.R.E.) Version 1.2 Liam O Connor Semester 1, 2018 Marking Total of 20 marks (20% of practical component) Due Date Friday, 25th May, 2018,
More informationAlgebraic Types. Chapter 14 of Thompson
Algebraic Types Chapter 14 of Thompson Types so far Base types Int, Integer, Float, Bool, Char Composite types: tuples (t 1,t 2,,t n ) lists [t 1 ] functions (t 1 -> t 2 ) Algebraic types enumerated, product
More informationCS121/IS223. Object Reference Variables. Dr Olly Gotel
CS121/IS223 Object Reference Variables Dr Olly Gotel ogotel@pace.edu http://csis.pace.edu/~ogotel Having problems? -- Come see me or call me in my office hours -- Use the CSIS programming tutors CS121/IS223
More informationLecture 7: Data Abstractions
Lecture 7: Data Abstractions Abstract Data Types Data Abstractions How to define them Implementation issues Abstraction functions and invariants Adequacy (and some requirements analysis) Towards Object
More informationCSCE 314 Programming Languages
CSCE 314 Programming Languages Haskell: Higher-order Functions Dr. Hyunyoung Lee 1 Higher-order Functions A function is called higher-order if it takes a function as an argument or returns a function as
More informationCOMP 250: Java Programming I. Carlos G. Oliver, Jérôme Waldispühl January 17-18, 2018 Slides adapted from M. Blanchette
COMP 250: Java Programming I Carlos G. Oliver, Jérôme Waldispühl January 17-18, 2018 Slides adapted from M. Blanchette Variables and types [Downey Ch 2] Variable: temporary storage location in memory.
More informationCS111: PROGRAMMING LANGUAGE II. Lecture 1: Introduction to classes
CS111: PROGRAMMING LANGUAGE II Lecture 1: Introduction to classes Lecture Contents 2 What is a class? Encapsulation Class basics: Data Methods Objects Defining and using a class In Java 3 Java is an object-oriented
More informationProgramming Language Concepts, CS2104 Lecture 7
Reminder of Last Lecture Programming Language Concepts, CS2104 Lecture 7 Tupled Recursion Exceptions Types, ADT, Haskell, Components 5th Oct 2007 CS2104, Lecture 7 1 Overview 5th Oct 2007 CS2104, Lecture
More informationDot and Scope Resolution Operator
Dot and Scope Resolution Operator Used to specify "of what thing" they are members Dot operator: Specifies member of particular object Scope resolution operator: Specifies what class the function definition
More informationShell CSCE 314 TAMU. Higher Order Functions
1 CSCE 314: Programming Languages Dr. Dylan Shell Higher Order Functions 2 Higher-order Functions A function is called higher-order if it takes a function as an argument or returns a function as a result.
More informationProgramming Paradigms Written Exam (6 CPs)
Programming Paradigms Written Exam (6 CPs) 19.09.2018 First name Student number Last name Signature Instructions for Students Write your name and student number on the exam sheet and on every solution
More informationProgramming for Engineers in Python
Programming for Engineers in Python Lecture 5: Object Oriented Programming Autumn 2011-12 1 Lecture 4 Highlights Tuples, Dictionaries Sorting Lists Modular programming Data analysis: text categorization
More informationPROGRAMMING IN HASKELL. CS Chapter 6 - Recursive Functions
PROGRAMMING IN HASKELL CS-205 - Chapter 6 - Recursive Functions 0 Introduction As we have seen, many functions can naturally be defined in terms of other functions. factorial :: Int Int factorial n product
More informationCSE 3302 Programming Languages Lecture 8: Functional Programming
CSE 3302 Programming Languages Lecture 8: Functional Programming (based on the slides by Tim Sheard) Leonidas Fegaras University of Texas at Arlington CSE 3302 L8 Spring 2011 1 Functional Programming Languages
More informationC++ (classes) Hwansoo Han
C++ (classes) Hwansoo Han Inheritance Relation among classes shape, rectangle, triangle, circle, shape rectangle triangle circle 2 Base Class: shape Members of a class Methods : rotate(), move(), Shape(),
More informationProgramming in Haskell Aug-Nov 2015
Programming in Haskell Aug-Nov 2015 LECTURE 14 OCTOBER 1, 2015 S P SURESH CHENNAI MATHEMATICAL INSTITUTE Enumerated data types The data keyword is used to define new types data Bool = False True data Day
More informationThe List Datatype. CSc 372. Comparative Programming Languages. 6 : Haskell Lists. Department of Computer Science University of Arizona
The List Datatype CSc 372 Comparative Programming Languages 6 : Haskell Lists Department of Computer Science University of Arizona collberg@gmail.com All functional programming languages have the ConsList
More informationObject 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 informationOverloading, Type Classes, and Algebraic Datatypes
Overloading, Type Classes, and Algebraic Datatypes Delivered by Michael Pellauer Arvind Computer Science and Artificial Intelligence Laboratory M.I.T. September 28, 2006 September 28, 2006 http://www.csg.csail.mit.edu/6.827
More informationCE221 Programming in C++ Part 1 Introduction
CE221 Programming in C++ Part 1 Introduction 06/10/2017 CE221 Part 1 1 Module Schedule There are two lectures (Monday 13.00-13.50 and Tuesday 11.00-11.50) each week in the autumn term, and a 2-hour lab
More informationPROGRAMMING IN HASKELL. Chapter 2 - First Steps
PROGRAMMING IN HASKELL Chapter 2 - First Steps 0 The Hugs System Hugs is an implementation of Haskell 98, and is the most widely used Haskell system; The interactive nature of Hugs makes it well suited
More informationHaskell through HUGS THE BASICS
Haskell through HUGS THE BASICS FP for DB Basic HUGS 1 Algorithmic Imperative Languages variables assignment if condition then action1 else action2 loop block while condition do action repeat action until
More informationM301: Software Systems & their Development. Unit 4: Inheritance, Composition and Polymorphism
Block 1: Introduction to Java Unit 4: Inheritance, Composition and Polymorphism Aims of the unit: Study and use the Java mechanisms that support reuse, in particular, inheritance and composition; Analyze
More informationUMBC CMSC 331 Final Exam
UMBC CMSC 331 Final Exam Name: UMBC Username: You have two hours to complete this closed book exam. We reserve the right to assign partial credit, and to deduct points for answers that are needlessly wordy
More informationAbsolute C++ Walter Savitch
Absolute C++ sixth edition Walter Savitch Global edition This page intentionally left blank Absolute C++, Global Edition Cover Title Page Copyright Page Preface Acknowledgments Brief Contents Contents
More informationIntroduction 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 informationIntroduction. chapter Functions
chapter 1 Introduction In this chapter we set the stage for the rest of the book. We start by reviewing the notion of a function, then introduce the concept of functional programming, summarise the main
More informationCS 251 Intermediate Programming Methods and More
CS 251 Intermediate Programming Methods and More Brooke Chenoweth University of New Mexico Spring 2018 Methods An operation that can be performed on an object Has return type and parameters Method with
More informationDATA TYPES. CS 403: Types and Classes DATA TYPES (CONT D)
DATA TYPES CS 403: Types and Classes Stefan D. Bruda Fall 2017 Algorithms + data structures = programs Abstractions of data entities highly desirable Program semantics embedded in data types Data types
More informationAdvanced Topics in Programming Languages Lecture 2 - Introduction to Haskell
Advanced Topics in Programming Languages Lecture 2 - Introduction to Haskell Ori Bar El Maxim Finkel 01/11/17 1 History Haskell is a lazy, committee designed, pure functional programming language that
More informationChapter 4 Defining Classes I
Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the
More informationUnit 1: Preliminaries Part 1: Course Introduction, Abstraction, and ADT s
Unit 1: Preliminaries Part 1: Course Introduction, Abstraction, and ADT s Engineering 4892: Data Structures Faculty of Engineering & Applied Science Memorial University of Newfoundland April 23, 2010 ENGI
More informationData Structures. Datatype. Data structure. Today: Two examples. A model of something that we want to represent in our program
Datastructures Data Structures Datatype A model of something that we want to represent in our program Data structure A particular way of storing data How? Depending on what we want to do with the data
More informationSTUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING
OBJECT ORIENTED PROGRAMMING STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING 1. Object Oriented Programming Paradigms 2. Comparison of Programming Paradigms 3. Basic Object Oriented Programming
More information3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.
3.Constructors and Destructors Develop cpp program to implement constructor and destructor. Constructors A constructor is a special member function whose task is to initialize the objects of its class.
More informationWhat is an algorithm?
Reminders CS 142 Lecture 4 ADTs & Objects Program 1 was assigned - Due on 1/27 by 11:55pm Spring 2015 2 Object-Oriented Programming (OOP) OOP Definitions Imagine: You and your programming team have written
More informationCSCI Compiler Design
CSCI 565 - Compiler Design Spring 2010 Final Exam - Solution May 07, 2010 at 1.30 PM in Room RTH 115 Duration: 2h 30 min. Please label all pages you turn in with your name and student number. Name: Number:
More informationLecture 20: templates
CIS 330:! / / / / (_) / / / / _/_/ / / / / / \/ / /_/ / `/ \/ / / / _/_// / / / / /_ / /_/ / / / / /> < / /_/ / / / / /_/ / / / /_/ / / / / / \ /_/ /_/_/_/ _ \,_/_/ /_/\,_/ \ /_/ \ //_/ /_/ Lecture 20:
More informationProgramming Paradigms
PP 2017/18 Unit 12 Functions and Data Types in Haskell 1/45 Programming Paradigms Unit 12 Functions and Data Types in Haskell J. Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE
More informationCS 457/557: Functional Languages
CS 457/557: Functional Languages Lists and Algebraic Datatypes Mark P Jones Portland State University 1 Why Lists? Lists are a heavily used data structure in many functional programs Special syntax is
More informationFunctional Programming Language Haskell
Functional Programming Language Haskell Mohammed Aslam CIS 24 Prof. Kopec Presentation: 03 Date: 05/05/2003 Haskell is a general purpose, purely functional programming language named after the logician
More informationAdvances in Programming Languages
T O Y H Advances in Programming Languages APL8: Multiparameter Type Classes, Constructor Classes Ian Stark School of Informatics The University of Edinburgh Thursday 4 February Semester 2 Week 4 E H U
More informationInformatics 1 Functional Programming Lecture 9. Algebraic Data Types. Don Sannella University of Edinburgh
Informatics 1 Functional Programming Lecture 9 Algebraic Data Types Don Sannella University of Edinburgh Part I Algebraic types Everything is an algebraic type data Bool = False True data Season = Winter
More informationGADTs. GADTs in Haskell
GADTs GADTs in Haskell ADT vs GADT Algebraic Datatype Data List a = Nil Cons a (List a) Data Tree a b = Tip a Node (Tree a b) b Fork (Tree a b) (Tree a b) Note that types than can be expressed as an ADT
More informationTypes and Type Inference
CS 242 2012 Types and Type Inference Notes modified from John Mitchell and Kathleen Fisher Reading: Concepts in Programming Languages, Revised Chapter 6 - handout on Web!! Outline General discussion of
More informationProgramming Paradigms Functional languages
Programming Paradigms Functional languages Ing. Marek Běhálek Ph.D. FEI VŠB-TUO EA404 / 597 32 5879 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz Presentation is based on original course materials
More informationQUIZ How do we implement run-time constants and. compile-time constants inside classes?
QUIZ How do we implement run-time constants and compile-time constants inside classes? Compile-time constants in classes The static keyword inside a class means there s only one instance, regardless of
More informationHaske k ll An introduction to Functional functional programming using Haskell Purely Lazy Example: QuickSort in Java Example: QuickSort in Haskell
Haskell An introduction to functional programming using Haskell Anders Møller amoeller@cs.au.dk The most popular purely functional, lazy programming language Functional programming language : a program
More informationHaskell Overview III (3A) Young Won Lim 10/4/16
(3A) Copyright (c) 2016 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published
More informationReview: C++ Basic Concepts. Dr. Yingwu Zhu
Review: C++ Basic Concepts Dr. Yingwu Zhu Outline C++ class declaration Constructor Overloading functions Overloading operators Destructor Redundant declaration A Real-World Example Question #1: How to
More information! Mon, May 5, 2:00PM to 4:30PM. ! Closed book, closed notes, clean desk. ! Comprehensive (covers entire course) ! 30% of your final grade
Final Exam Review Final Exam Mon, May 5, 2:00PM to 4:30PM CS 2308 Spring 2014 Jill Seaman Closed book, closed notes, clean desk Comprehensive (covers entire course) 30% of your final grade I recommend
More informationIntroduction to Object- Oriented Programming
Introduction to Object- Oriented Programming Reusing this material This work is licensed under a Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International License. http://creativecommons.org/licenses/by-nc-sa/4.0/deed.en_us
More informationPreface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS
Contents Preface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS 1.1. INTRODUCTION TO COMPUTERS... 1 1.2. HISTORY OF C & C++... 3 1.3. DESIGN, DEVELOPMENT AND EXECUTION OF A PROGRAM... 3 1.4 TESTING OF PROGRAMS...
More informationArrays. myints = new int[15];
Arrays As you know from COMP 202 (or equivalent), an array is a data structure that holds a set of elements that are of the same type. Each element in the array can be accessed or indexed by a unique number
More informationJava How to Program, 10/e. Copyright by Pearson Education, Inc. All Rights Reserved.
Java How to Program, 10/e Education, Inc. All Rights Reserved. Each class you create becomes a new type that can be used to declare variables and create objects. You can declare new classes as needed;
More informationProgramming Languages Fall 2013
Programming Languages Fall 2013 Lecture 2: types Prof. Liang Huang huang@qc.cs.cuny.edu Recap of Lecture 1 functional programming vs. imperative programming basic Haskell syntax function definition lazy
More informationCS 270 Algorithms. Oliver Kullmann. Binary search. Lists. Background: Pointers. Trees. Implementing rooted trees. Tutorial
Week 7 General remarks Arrays, lists, pointers and 1 2 3 We conclude elementary data structures by discussing and implementing arrays, lists, and trees. Background information on pointers is provided (for
More informationCOEN244: Class & function templates
COEN244: Class & function templates Aishy Amer Electrical & Computer Engineering Templates Function Templates Class Templates Outline Templates and inheritance Introduction to C++ Standard Template Library
More informationProgramming II (CS300)
1 Programming II (CS300) Chapter 03: Creating Classes MOUNA KACEM mouna@cs.wisc.edu Spring 2019 Creating Classes 2 Constructors and Object Initialization Static versus non-static fields/methods Encapsulation
More informationFunctional programming Primer I
Functional programming Primer I COS 320 Compiling Techniques Princeton University Spring 2016 Lennart Beringer 1 Characteristics of functional programming Primary notions: functions and expressions (not
More informationAn introduction introduction to functional functional programming programming using usin Haskell
An introduction to functional programming using Haskell Anders Møller amoeller@cs.au.dkau Haskell The most popular p purely functional, lazy programming g language Functional programming language : a program
More informationObject Orientated Analysis and Design. Benjamin Kenwright
Notation Part 2 Object Orientated Analysis and Design Benjamin Kenwright Outline Review What do we mean by Notation and UML? Types of UML View Continue UML Diagram Types Conclusion and Discussion Summary
More informationProgramming II (CS300)
1 Programming II (CS300) Chapter 03: Creating Classes MOUNA KACEM mouna@cs.wisc.edu Spring 2018 Creating Classes 2 Constructors and Object Initialization Static versus non-static fields/methods Encapsulation
More informationTopic 7: Algebraic Data Types
Topic 7: Algebraic Data Types 1 Recommended Exercises and Readings From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 5.5, 5.7, 5.8, 5.10, 5.11, 5.12, 5.14 14.4, 14.5, 14.6 14.9, 14.11,
More informationCPL 2016, week 10. Clojure functional core. Oleg Batrashev. April 11, Institute of Computer Science, Tartu, Estonia
CPL 2016, week 10 Clojure functional core Oleg Batrashev Institute of Computer Science, Tartu, Estonia April 11, 2016 Overview Today Clojure language core Next weeks Immutable data structures Clojure simple
More informationCS 11 Haskell track: lecture 1
CS 11 Haskell track: lecture 1 This week: Introduction/motivation/pep talk Basics of Haskell Prerequisite Knowledge of basic functional programming e.g. Scheme, Ocaml, Erlang CS 1, CS 4 "permission of
More information2. The object-oriented paradigm!
2. The object-oriented paradigm! Plan for this section:! n Look at things we have to be able to do with a programming language! n Look at Java and how it is done there" Note: I will make a lot of use of
More informationProgramming in Omega Part 1. Tim Sheard Portland State University
Programming in Omega Part 1 Tim Sheard Portland State University Tim Sheard Computer Science Department Portland State University Portland, Oregon PSU PL Research at Portland State University The Programming
More informationCSI33 Data Structures
Outline Department of Mathematics and Computer Science Bronx Community College August 29, 2018 Outline Outline 1 Chapter 2: Data Abstraction Outline Chapter 2: Data Abstraction 1 Chapter 2: Data Abstraction
More informationChapter 6 Abstract Datatypes
Plan Chapter 6 Abstract Datatypes (Version of 17 November 2005) 1. Application: correctly parenthesised texts...... 6.2 2. An abstract datatype for stacks................ 6.6 3. Realisation of the stack
More informationWeek 6: Data. Let's focus first on application domain data.
review of things we already (should) know criteria for external & internal representation basic elementary data types composite data types container data types derived subtypes abstract data types (ADT)
More information2. Introducing Classes
1 2. Introducing Classes Class is a basis of OOP languages. It is a logical construct which defines shape and nature of an object. Entire Java is built upon classes. 2.1 Class Fundamentals Class can be
More informationObject Oriented Programming. Assistant Lecture Omar Al Khayat 2 nd Year
Object Oriented Programming Assistant Lecture Omar Al Khayat 2 nd Year Syllabus Overview of C++ Program Principles of object oriented programming including classes Introduction to Object-Oriented Paradigm:Structures
More informationFUNCTIONAL PROGRAMMING 1 HASKELL BASICS
1 FUNCTIONAL PROGRAMMING 1 HASKELL BASICS Dr. Ahmed Sallam Reference 2 Main: Introduction to Haskell Further By Brent Yorgey Functional Programming 3 Function is the atom of the language, and can be used
More information