CE151 Introduction to Programming Part 1 Introduction

Size: px
Start display at page:

Download "CE151 Introduction to Programming Part 1 Introduction"

Transcription

1 CE151 Introduction to Programming Part 1 Introduction 29/09/2014 CE151 Part 1 1

2 Module Schedule There are two lectures (Monday and ) and two 2-hour labs (on Tuesdays and Thursdays) each week in the autumn term. In addition there are two extra lectures in weeks 10 and 11 to allow time for revision. Students have been split into two groups for the labs so you will be expected to attend one lab per week; your personal timetable will indicate which lab session you should attend. 29/09/2014 CE151 Part 1 2

3 Assessment One two-hour examination in week 15 (January) (50% of the module credit) One multiple-choice progress test on Monday of week 6 (10%) Two programming assignments to be submitted by lunchtime on Thursday of week 7 and Monday of week 11 (20% each) You will be required to demonstrate your submitted programs in your labs in weeks 8 and 11 29/09/2014 CE151 Part 1 3

4 Recommended Reading The main recommended text for this module is Python 3 for Absolute Beginners, Tim Hall and J-P Stacey (Apress, 2009) An alternative (although expensive) text is Starting out with Python, Tony Gadiss, 2 nd edition (Addison Wesley, 2012) Other texts on Python are available if you choose to obtain something different you should ensure that it uses Python 3. 29/09/2014 CE151 Part 1 4

5 Computing The word computing has a variety of meanings depending on the context in which it is used and the person you re talking to. For our purposes, we will take it to mean performing computations automatically, that is, without human intervention. This involves two fundamental activities the design and construction of machines that are capable of performing any desired computation the programming of these machines to perform the particular computation that we require During this module we shall concentrate on the second activity. 29/09/2014 CE151 Part 1 5

6 Historical Background 1 In order to provide some background, we start by taking a very brief look at the development of machines and programming languages, and the relationship between them. In the 1830s Charles Babbage designed two computing machines. The first, the difference engine, was intended to perform a particular kind of computation (finding the values of polynomial functions). The second, the analytical engine, was intended to be a general purpose automatic computing device. It is this second machine that is of interest to computer scientists, and it is here that the history of automatic computing really begins. 29/09/2014 CE151 Part 1 6

7 Historical Background 2 The analytical engine is considered to be significant because it contained the essential components of every computer that has ever been built. It had a store (the equivalent of a modern computer s memory) and a mill (the equivalent of a modern computer s arithmetic unit). Most importantly it incorporated a system of control, based on the technology that had been developed to control weaving looms, which enabled the user to describe any desired computation in coded form on punched cards. In other words, the analytical engine could be programmed. 29/09/2014 CE151 Part 1 7

8 Historical Background 3 Although neither machine was ever built in Babbage s lifetime, his co-worker Ada Lovelace did design some programs for the analytical engine, most notably one for calculating the Bernoulli numbers. This program included repetitive loops and conditional branches, which still form the basis of control in most modern programming languages. As well as being the world s first programmer, Ada Lovelace was also clearly aware of the limitations of computing machines. She wrote in her paper... the Analytical Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it. 29/09/2014 CE151 Part 1 8

9 Historical Background 4 Over one hundred years elapsed before any serious advances were made on Babbage s design. Towards the end of this period, developments in electrical circuitry, new theories of computation and the advent of the Second World War provided the means, the understanding and the motivation to construct a more powerful electronic version of the analytical engine. 29/09/2014 CE151 Part 1 9

10 Historical Background 5 In this country, Alan Turing and others developed the Colossus machine at Bletchley Park as part of a wartime effort to decipher coded messages. Shortly after the war, at Princeton University, John von Neumann and his co-workers created what are usually considered to be the world s first stored-program computers, the ENIAC and the EDVAC. Their design included the store (now called the memory) and the mill (now called the central processing unit or CPU) that were present in Babbage s design, and also incorporated a control unit and input and output devices. The design was so fundamental that all subsequent variations on it are known as von Neumann architectures. 29/09/2014 CE151 Part 1 10

11 Historical Background 6 The essential components of a von Neumann architecture (minus the I/O and control units) are usually depicted as is shown below. PROGRAM MEMORY CPU 29/09/2014 CE151 Part 1 11

12 Historical Background 7 In a conventional von Neumann architecture, the executable program, which consists of a sequence of numbered instructions, is held in the store. A program counter contained in the control unit holds the number of the next instruction to be executed. The control unit is responsible for fetching instructions from the store and executing them one at a time, in a process known as the fetch/execute cycle. 29/09/2014 CE151 Part 1 12

13 Historical Background 8 In general, each instruction requires at least one of the following actions to be carried out read data from the memory into the processing unit perform some arithmetic/logical operation on the data write data from the processing unit to the memory change the content of the program counter From these basic operations, it is possible to compose any possible computation 29/09/2014 CE151 Part 1 13

14 Historical Background 9 This design has been improved upon and made more efficient in many different ways, and the speed of electronic circuitry has increased by several orders of magnitude in the years that have elapsed since the building of the first electronic computers. We now have access to machines that can execute several thousand million instructions every second - but at the core of practically all these machines lies the von Neumann architecture. Not only has it been the major influence on the design of machines, but also on the design of programming languages. 29/09/2014 CE151 Part 1 14

15 The Multi-Level View 1 The last 50 years have seen enormous technological advances in the design and construction of computers faster processors, denser storage media, improved peripheral devices, and so on. As the machines have become more powerful, they have become more complex and more difficult to program. At each stage of technological development it has been both possible and necessary to divert some of the gain in computing capability away from the end user, and use it to enhance the machine itself. The process works as described on the next slide. 29/09/2014 CE151 Part 1 15

16 The Multi-Level View 2 Suppose we have a machine called Mark I which has a reasonable processing capability but is a nightmare to program. We then make a technological breakthrough that would enable us to make Mark I go 10 times faster. Instead of presenting the world with a faster machine that is still difficult to program, we keep back some of the increase in power and use it to make the machine easier to program by incorporating an improved set of possible instructions. Result - the world gets a Mark II that is only 8 times faster than Mark I, but which can be programmed more quickly and reliably. 29/09/2014 CE151 Part 1 16

17 The Multi-Level View 3 What we have done is effectively wrap the rather unfriendly Mark I within a user-friendly shell. The modern computer can be viewed as a collection of many such concentric shells with the von Neumann architecture at its heart. In the diagram on the next slide (taken from Structured Computer Organisation by A.S.Tanenbaum) this layered view of the computer is depicted as a series of levels, each one built upon the one below. 29/09/2014 CE151 Part 1 17

18 The Multi-Level View 4 LEVEL 5 - HIGH LEVEL LANGUAGE LEVEL 4 ASSEMBLY LANGUAGE Translation (Compiler/Interpreter) LEVEL 3 OPERATING SYSTEM Translation (Assembler) LEVEL 2 CONVENTIONAL MACHINE Partial Interpretation (operating system) LEVEL 1 - MICROPROGRAMMING Interpretation (microprogram) LEVEL 0 DIGITAL LOGIC Executed directly by hardware 29/09/2014 CE151 Part 1 18

19 The Multi-Level View 5 The diagram is necessarily a simplification of the real picture. For example, the operating system does not exist in a neat layer on its own, but is present in various levels of the machine from device drivers to user interface. From our point of view the internal organisation of the computer is not important. We will be concerned only with how to program the level 5 machine, but there are a couple of important points that arise from the diagram. Firstly, each level of the machine has its own language the language in which it can be instructed. In between the levels is an indication of how instructions to a particular level of machine are translated into instructions for the machine at the next level down. We shall examine the translation process in more detail shortly. 29/09/2014 CE151 Part 1 19

20 The Multi-Level View 6 Secondly, at every level apart from the lowest, the machine is a complex mixture of hardware and software components. However, when we are considering the level 5 machine, we are only concerned with what the machine can do and how we can program it. It doesn t matter to us exactly how that functionality is made possible. In Tanenbaum s words Hardware and Software are logically equivalent This is an example of abstraction - the process whereby we can clarify our thinking about something (which could be a concept, a physical system, a software requirement, etc.) by separating the relevant external characteristics of that thing from its internal details. 29/09/2014 CE151 Part 1 20

21 High-Level Languages 1 There are literally hundreds of different high level languages, and there are a variety of reasons for their existence. Sometimes new languages have been developed for particular application areas. For example, two of the earliest languages, COBOL (Common Business Oriented Language) and FORTRAN (Formula Translation), were designed respectively for data processing and scientific applications. More recent examples include Prolog (Programming in Logic), which was developed specifically for programming Artificial Intelligence solutions, and Java, which is oriented towards Web applications. 29/09/2014 CE151 Part 1 21

22 High-Level Languages 2 The motivation behind the development of some other languages (e.g. the functional languages) has been the perceived need to have a sounder mathematical basis for the specification and verification of software. Object-oriented languages (e.g. C++ and Java) arose from highly developed notions of modularity in software design, whereas the visual languages (e.g. Visual Basic) are recent innovations whose event-driven control structures and associated libraries are closely linked to modern windowsbased user interfaces. 29/09/2014 CE151 Part 1 22

23 High-Level Languages 3 This great diversity makes it difficult to classify languages. Any particular language may be classified in a number of ways, depending on criteria such as the underlying computational framework, data and procedural abstraction capabilities, control of program execution, and so on. C++ and Python could be considered to be either procedural or object-oriented or both. (The latter also has some of the features of functional languages.) Visual C++ could be called an event-driven variant of C++, but it would probably be more accurate to say that it is an entire programming environment that incorporates the C++ language. 29/09/2014 CE151 Part 1 23

24 High-Level Languages 4 High-level languages can be split into two main categories declarative and imperative languages. These differ in three main aspects the way in which programs are written, the way in which they are executed and the underlying computational framework that they employ. Programs written in a declarative language are written as a collection of statements of what is true, together with an expression to be evaluated in the context of those statements. Programs written in an imperative language, on the other hand, consist of a sequence of instructions as to how to perform the required computation. 29/09/2014 CE151 Part 1 24

25 Declarative Languages 1 Most declarative languages can be categorised as either logic languages (e.g. Prolog) or functional languages (e.g. Lisp, Miranda, Haskell). Logic languages are based on theories of logic. The most commonly used logic language, Prolog, is based on a theory called the first order predicate calculus (FOPC), and the statements in a Prolog program are actually expressions in FOPC presented in a simpler syntactic form. These statements can be either facts (i.e. known truths) or rules. 29/09/2014 CE151 Part 1 25

26 Declarative Languages 2 For example, a program concerning family relationships may contain the fact that Mary is the parent of Joe, the fact that Joe is the parent of Anne, and the rule that a person X is the grandparent of person Z if X is the parent of some person Y and Y is the parent of Z. These statements would appear as follows. parent(mary, Joe). parent(joe, Anne). grandparent(x,z) :- parent(x,y), parent(y,z). 29/09/2014 CE151 Part 1 26

27 Declarative Languages 3 The rules are right-to-left implications. This means that if the right hand side is true then the left hand side is also true. The comma on the right hand side means and. So the grandparent rule reads if X is the parent of Y and Y is the parent of Z, then X is the grandparent of Z. X, Y and Z are variables that is they are not actual entities like Mary and Anne, but are placeholders for such entities. Having established this context of definitions, we can then add an expression, and ask the Prolog system to evaluate it - is it true or is it false? For example, if we wanted to determine whether Mary is the grandparent of Anne, we would add the expression grandparent(mary, Anne)? 29/09/2014 CE151 Part 1 27

28 Declarative Languages 4 The? indicates that this is the expression to be evaluated. The Prolog system first searches its collection of facts to see if it contains the fact that Mary is the grandparent of Anne. In this case, there is no such fact, but there is a rule about grandparents. The Prolog system then attempts to find suitable substitutions for the variables on the right hand side of the rule. In this case, it finds that if it substitutes Mary for X, Joe for Y and Anne for Z, then the right hand side of the rule is true according to the Parent facts. It can therefore conclude that, with these substitutions, the left hand side is also true in other words Mary is the grandparent of Anne. 29/09/2014 CE151 Part 1 28

29 Declarative Languages 5 Functional languages are based on a system called the lambda calculus. This is a mathematical framework within which we can define functions and evaluate expressions containing those functions. The statements in a functional language program are functions definitions. For example, a program written in a functional language may contain the following pattern-directed definition of the factorial function fac 0 = 1 fac (n+1) = n+1 * fac(n) which says that the factorial of 0 is 1, and the factorial of any number n+1 is n+1 multiplied by the factorial of n. (This form of definition is known as recursive - the function fac has been defined in terms of itself.) 29/09/2014 CE151 Part 1 29

30 Declarative Languages 6 If we wanted to know the factorial of 3, then we would type the expression. fac 3 The underlying system tries to match this expression with the given function definition and finds that it doesn t match the pattern fac 0, but it does match the pattern fac (n+1) if 2 is substituted for n. The expression can therefore be rewritten as (2+1) * fac 2 which can be evaluated to 3 * fac 2 The process is now repeated, so the expression becomes 3 * (1+1) * fac 1 29/09/2014 CE151 Part 1 30

31 Declarative Languages 7 Arithmetic can now be performed, giving 6 * fac 1 The process is again repeated, so the expression becomes 6 * (0+1) * fac 0 which simplifies to 6 * fac 0 fac 0 is defined to be 1, so the whole expression evaluates to 6 * 1 to yield the final answer, 6. 29/09/2014 CE151 Part 1 31

32 Imperative Languages Imperative languages were not derived from a mathematical theory like FOPC or the lambda calculus. The statements in an imperative language program are commands to perform some action, or combination of actions, on the underlying von Neumann architecture. There are two fundamental concepts in an imperative language, destructive assignment and sequencing, neither of which is present in the declarative languages. Destructive assignment is the process whereby the contents of the memory are updated by overwriting the values held there. The updates are carried out in a specified order, or sequence, until the desired result is obtained. This sequence of destructive assignments takes the computation through a succession of states. 29/09/2014 CE151 Part 1 32

33 Translation and Execution 1 On slide 18 we presented a multi-layered view of the modern computer, and noted that each level of the machine had its own language. In between each pair of levels, there was a comment about how programs were translated from the higher level language (known as the source language) to the lower level language (which we shall call the target language), by means of either compilation or interpretation. The difference between interpretation and compilation is very similar to the difference between the activities of a human interpreter (who translates spoken sentences one at a time) and a human translator (who translates an entire piece of text). 29/09/2014 CE151 Part 1 33

34 Translation and Execution 2 When a program is interpreted, each statement in the source language program is translated into possibly many statements in the target language by a program called the interpreter. Each time a source language statement is translated, the generated target language statements are immediately executed on the target machine before the next source language statement is processed. Translation and execution are interleaved, and can be considered to be one combined activity. 29/09/2014 CE151 Part 1 34

35 Translation and Execution 3 When a program is compiled, the entire source language program is translated to the target language by a program called the compiler. The result is a program in the target language which is then executed on the target machine. Translation and execution are completely separate activities. 29/09/2014 CE151 Part 1 35

36 Translation and Execution 4 The main advantages of using compilation are: translation only happens once, no matter how many times the program is executed execution of the program is quicker, since it is not interleaved with the translation task the translated program can be optimised, yielding further improvement in execution time programs can be compiled remotely, and the compiled code can be stored and loaded onto machines without revealing the source text to the user 29/09/2014 CE151 Part 1 36

37 Translation and Execution 5 However, the use of interpretation also has some advantages: interpreters can detect errors that occur during program execution (e.g. out of range values) and generate more informative error messages, since they can report the exact point in the source text at which the error occurred. interpretation is often used in situations where memory size is limited. The source program does not have to reside in the computer s memory, since individual statements can be read from another medium (e.g. disc or tape) and processed one at a time, whereas with compilation, the entire translated program must be stored in the computer before execution can begin. 29/09/2014 CE151 Part 1 37

38 Translation and Execution 6 The development of advanced compilers and debugging tools, and the advent of very large memories and disk caching techniques, have made the advantages listed on the previous slide less important, and the rate at which computer speeds have increased makes some of the advantages of compilation less significant. Some languages use a combination of both techniques. When Java is being used the compiler converts the Java source code into a target language known as byte code which is then interpreted. 29/09/2014 CE151 Part 1 38

39 The Python Language 1 Python is a language that is easy to learn, yet has enough powerful features to develop large-scale applications. It can be used in a procedural style but also supports object-oriented and functional features. A large library is available to allow the writing of programs with graphical user interfaces, programs that access databases, network applications and internet applications. To become an expert in the use of all of these libraries takes some time, so in this module we concentrate primarily on the features that support procedural programming, ending up with material on simple graphical user interfaces. 29/09/2014 CE151 Part 1 39

40 The Python Language 2 Python is an interpreted language; this makes it easier to use for the beginner since it is possible to try out fragments of code without writing complete programs. The development of the original version of the language was performed by a handful of programmers. Since version 2 was introduced in 2001 it has been managed by a non-commercial organisation called the Python Software Foundation and consequently versions for Windows, Linux and MacOS are all available free of charge. The language has been growing in popularity during the last decade, being used by companies such as YouTube and Google. 29/09/2014 CE151 Part 1 40

41 The Python Language 3 Version 3, introduced in 2009, is not backward-compatible with version 2 some of the features have been removed or changed; consequently many large users are still using version 2 to avoid having to rewrite existing code. We shall be using version 3, since we don't have any existing code and it is likely that Python 3 will be more widely used when you are searching for jobs three years from now. 29/09/2014 CE151 Part 1 41

42 The Python Language 4 The programs you will need to write for the laboratory exercises and coursework for this module will not run correctly on any version of Python 2 so if you wish to work on your own machine you will need to ensure that version 3 is installed. (It does not matter which release you obtain, since we will not be using any of the advanced features that have changed since the introduction of version 3.0.) 29/09/2014 CE151 Part 1 42

43 Running Python Interactively 1 Since Python is an interpreted language we can run it interactively in a Python shell window. When such a window is opened a prompt (>>>) will appear beneath some introductory messages. We can simply type expressions or fragments of code in response to this prompt: >>> >>> 12/3 4.0 >>> (37.53/12.57)*(37.53/12.57) (In the above examples user input is shown in light text, with machine output in bold). 29/09/2014 CE151 Part 1 43

44 Running Python Interactively 2 In the example on the previous page it was inconvenient to have to type (37.53/12.57) twice, and also inefficient to have to calculate this value twice in order to find its square. A better approach is to perform the division, store the result and then calculate the square of the result: >>> i = 37.53/12.57 >>> i*i The result of the division has been stored in a variable, which we have chosen to call i. The storing of a value is a variable is known as assignment. (Note that when performing assignment in the Python shell no result is output.) 29/09/2014 CE151 Part 1 44

45 A First Python Program 1 The interactive use of Python is fine for testing code fragments or evaluating expressions but if we wish to write programs that can be run more than once we need to write them in files. Here is a first example """ hello.py Simple greeting program """ print("hello, CE151") 29/09/2014 CE151 Part 1 45

46 A First Python Program 2 In a Python program any lines at the beginning enclosed between a pair of lines containing """ are regarded as documentation. Tools can be used to display the documentation from the beginning of a file. We have included the filename and a brief description in this documentation. Other than the documentation our program contains just one line, an instruction to print the contents of a string of text. Strings in Python must appear in quotes we can use either ' or " (but each string must have the same quote at the end as at the beginning). 29/09/2014 CE151 Part 1 46

47 A Second Python Program 1 We now wish to make the program interactive: """ hello2.py Slightly less simple greeting program """ print("hello, CE151 student") name = input("what's your name?") print("welcome to Essex,", name) This time we ask the user to supply his or her name this is done by using a function called input with a string argument containing a prompt to be displayed on the screen. When the program is run one line of input will be read and stored in a variable called name. 29/09/2014 CE151 Part 1 47

48 A Second Python Program 2 Having obtained the user's name we then display it as part of a welcome message. Note that this time we have supplied two arguments to the print function, separated by a comma. When we do this the two items are displayed on a single line, separated by default by a single space. (Note that there's also a comma within the string to appear in the output.) We could supply more than two arguments: print("welcome,", name, ",to Essex") [ Note that the way print is used is one of the main differences between versions 2 and 3 of Python so even our simplest examples will give different results using Python 2. ] 29/09/2014 CE151 Part 1 48

CE221 Programming in C++ Part 1 Introduction

CE221 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 information

Com S 541. Programming Languages I

Com S 541. Programming Languages I Programming Languages I Lecturer: TA: Markus Lumpe Department of Computer Science 113 Atanasoff Hall http://www.cs.iastate.edu/~lumpe/coms541.html TR 12:40-2, W 5 Pramod Bhanu Rama Rao Office hours: TR

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

Welcome to. Instructor Marc Pomplun CS 470/670. Introduction to Artificial Intelligence 1/26/2016. Spring Selectivity in Complex Scenes

Welcome to. Instructor Marc Pomplun CS 470/670. Introduction to Artificial Intelligence 1/26/2016. Spring Selectivity in Complex Scenes Welcome to CS 470/670 Introduction to Artificial Intelligence Office: Lab: Instructor Marc Pomplun S-3-171 S-3-135 Office Hours: Tuesdays 4:00pm 5:30pm Thursdays 7:00pm 8:30pm Spring 2016 Instructor: Marc

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

Artificial Intelligence in the World. Prof. Levy Fromm Institute Spring Session, 2017

Artificial Intelligence in the World. Prof. Levy Fromm Institute Spring Session, 2017 Artificial Intelligence in the World Prof. Levy Fromm Institute Spring Session, 2017 Lecture 2 agenda What is software and how is it made? History of computing 1945 1965 Key people John von Neumann, John

More information

CS1100 Introduction to Programming

CS1100 Introduction to Programming Course Outline Introduction to Computing CS00 Introduction to Programming Introduction to Computing Programming (in C) Exercises and examples from the mathematical area of Numerical Methods Madhu Mutyam

More information

Component V Supporting Materials / Learn More Interesting Facts. Interesting Facts

Component V Supporting Materials / Learn More Interesting Facts. Interesting Facts Component V Supporting Materials / Learn More 1.4.1 Interesting Facts No. Interesting Facts 1. All computers operate by following machine language programs. 2. Machine language programs are long sequence

More information

Monday, January 27, 2014

Monday, January 27, 2014 Monday, January 27, 2014 Topics for today History of Computing (brief) Encoding data in binary Unsigned integers Signed integers Arithmetic operations and status bits Number conversion: binary to/from

More information

Topic 1: Introduction

Topic 1: Introduction Recommended Exercises and Readings Topic 1: Introduction From Haskell: The craft of functional programming (3 rd Ed.) Readings: Chapter 1 Chapter 2 1 2 What is a Programming Paradigm? Programming Paradigm:

More information

Computer Science 4500 Operating Systems. Welcome! In This Module. Module 1 Introduction, Overview and History

Computer Science 4500 Operating Systems. Welcome! In This Module. Module 1 Introduction, Overview and History Computer Science 4500 Operating Systems Module 1 Introduction, Overview and History Updated: January 13, 2015 2008 Stanley A. Wileman, Jr. Operating Systems Slide 1 Welcome! Welcome to Operating Systems.

More information

A Brief History of Computer Science

A Brief History of Computer Science A Brief History of Computer Science 4700 Hundred years ago Sumerians invented the abacus Sand, lines, pebbles Sexagesimal Base 60 still used today Time, distance How do you count like that? Side trip Factors

More information

CS 102 Lecture 1. Syllabus, history, intro

CS 102 Lecture 1. Syllabus, history, intro CS 102 Lecture 1 Syllabus, history, intro Contact Info Instructor: Hannah Aizenman Email: haizenm00@ccny.cuny.edu Office: NAC 7/311 Office Hours: After class by appointment 2:00-4:00 T/Th Recitation Instructor:

More information

An Incomplete History of Computation

An Incomplete History of Computation An Incomplete History of Computation Charles Babbage 1791-1871 Lucasian Professor of Mathematics, Cambridge University, 1827-1839 First computer designer Ada Lovelace 1815-1852 First computer programmer

More information

Computer Principles and Components 1

Computer Principles and Components 1 Computer Principles and Components 1 Course Map This module provides an overview of the hardware and software environment being used throughout the course. Introduction Computer Principles and Components

More information

Contents. Slide Set 1. About these slides. Outline of Slide Set 1. Typographical conventions: Italics. Typographical conventions. About these slides

Contents. Slide Set 1. About these slides. Outline of Slide Set 1. Typographical conventions: Italics. Typographical conventions. About these slides Slide Set 1 for ENCM 369 Winter 2014 Lecture Section 01 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary Winter Term, 2014 ENCM 369 W14 Section

More information

Functional Programming Languages (FPL)

Functional Programming Languages (FPL) Functional Programming Languages (FPL) 1. Definitions... 2 2. Applications... 2 3. Examples... 3 4. FPL Characteristics:... 3 5. Lambda calculus (LC)... 4 6. Functions in FPLs... 7 7. Modern functional

More information

CPS122 Lecture: From Python to Java last revised January 4, Objectives:

CPS122 Lecture: From Python to Java last revised January 4, Objectives: Objectives: CPS122 Lecture: From Python to Java last revised January 4, 2017 1. To introduce the notion of a compiled language 2. To introduce the notions of data type and a statically typed language 3.

More information

HIGHER SECONDARY FIRST YEAR 2 MARK & 5 MARK NOTES CHAPTER 1 1. INTRODUCTION TO COMPUTER

HIGHER SECONDARY FIRST YEAR 2 MARK & 5 MARK NOTES CHAPTER 1 1. INTRODUCTION TO COMPUTER 1. What is computer? CHAPTER 1 1. INTRODUCTION TO COMPUTER A computer is an electronic machine, capable of performing basic operations like addition, subtraction, multiplication, division, etc. The computer

More information

CPS122 Lecture: From Python to Java

CPS122 Lecture: From Python to Java Objectives: CPS122 Lecture: From Python to Java last revised January 7, 2013 1. To introduce the notion of a compiled language 2. To introduce the notions of data type and a statically typed language 3.

More information

Lecture 1. basic Python programs, defining functions

Lecture 1. basic Python programs, defining functions Lecture 1 basic Python programs, defining functions Lecture notes modified from CS Washington CS 142 Except where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0

More information

Organisation. Assessment

Organisation. Assessment Week 1 s s Getting Started 1 3 4 5 - - Lecturer Dr Lectures Tuesday 1-13 Fulton House Lecture room Tuesday 15-16 Fulton House Lecture room Thursday 11-1 Fulton House Lecture room Friday 10-11 Glyndwr C

More information

Slide Set 1 (corrected)

Slide Set 1 (corrected) Slide Set 1 (corrected) for ENCM 369 Winter 2018 Section 01 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary January 2018 ENCM 369 Winter 2018

More information

Fortran 90 Two Commonly Used Statements

Fortran 90 Two Commonly Used Statements Fortran 90 Two Commonly Used Statements 1. DO Loops (Compiled primarily from Hahn [1994]) Lab 6B BSYSE 512 Research and Teaching Methods The DO loop (or its equivalent) is one of the most powerful statements

More information

MITOCW watch?v=kz7jjltq9r4

MITOCW watch?v=kz7jjltq9r4 MITOCW watch?v=kz7jjltq9r4 PROFESSOR: We're going to look at the most fundamental of all mathematical data types, namely sets, and let's begin with the definitions. So informally, a set is a collection

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

CS 3EA3: Sheet 9 Optional Assignment - The Importance of Algebraic Properties

CS 3EA3: Sheet 9 Optional Assignment - The Importance of Algebraic Properties CS 3EA3: Sheet 9 Optional Assignment - The Importance of Algebraic Properties James Zhu 001317457 21 April 2017 1 Abstract Algebraic properties (such as associativity and commutativity) may be defined

More information

Functional Programming. Big Picture. Design of Programming Languages

Functional Programming. Big Picture. Design of Programming Languages Functional Programming Big Picture What we ve learned so far: Imperative Programming Languages Variables, binding, scoping, reference environment, etc What s next: Functional Programming Languages Semantics

More information

Introduction to Scientific Computing

Introduction to Scientific Computing Introduction to Scientific Computing Dr Hanno Rein Last updated: October 12, 2018 1 Computers A computer is a machine which can perform a set of calculations. The purpose of this course is to give you

More information

Let s begin with the very beginning...

Let s begin with the very beginning... Let s begin with the very beginning... As we learned in the fourth grade science course, back in 1801, a French man, Joseph Marie Jacquard, invented a power loom that could weave textiles, which had been

More information

CSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN

CSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN What languages do you know? CSC 326H1F, Programming Languages The usual suspects: C, C++, Java fine languages nearly the same Perhaps you've also learned some others? assembler Basic, Visual Basic, Turing,

More information

Functional Languages. CSE 307 Principles of Programming Languages Stony Brook University

Functional Languages. CSE 307 Principles of Programming Languages Stony Brook University Functional Languages CSE 307 Principles of Programming Languages Stony Brook University http://www.cs.stonybrook.edu/~cse307 1 Historical Origins 2 The imperative and functional models grew out of work

More information

Introduction to Prolog

Introduction to Prolog Introduction to Prolog David Woods dwoods@scss.tcd.ie Week 3 - HT Declarative Logic The Prolog programming language is, at its theoretical core, a declarative language. This is unlike more commonly used

More information

DOWNLOAD PDF BIG IDEAS MATH VERTICAL SHRINK OF A PARABOLA

DOWNLOAD PDF BIG IDEAS MATH VERTICAL SHRINK OF A PARABOLA Chapter 1 : BioMath: Transformation of Graphs Use the results in part (a) to identify the vertex of the parabola. c. Find a vertical line on your graph paper so that when you fold the paper, the left portion

More information

Part (04) Introduction to Programming

Part (04) Introduction to Programming Part (04) Introduction to Programming Dr. Ahmed M. ElShafee 1 Dr. Ahmed ElShafee, ACU : Summer 2014, Introduction to CS 1 EVOLUTION To write a program for a computer, we must use a computer language. A

More information

6.001 Notes: Section 4.1

6.001 Notes: Section 4.1 6.001 Notes: Section 4.1 Slide 4.1.1 In this lecture, we are going to take a careful look at the kinds of procedures we can build. We will first go back to look very carefully at the substitution model,

More information

COMS 1003 Fall Introduction to Computer Programming in C. History & Computer Organization. September 15 th

COMS 1003 Fall Introduction to Computer Programming in C. History & Computer Organization. September 15 th COMS 1003 Fall 2005 Introduction to Computer Programming in C History & Computer Organization September 15 th What's Ahead Some computer history Introduction to major players in the development of hardware

More information

Machine Architecture and Number Systems CMSC104. Von Neumann Machine. Major Computer Components. Schematic Diagram of a Computer. First Computer?

Machine Architecture and Number Systems CMSC104. Von Neumann Machine. Major Computer Components. Schematic Diagram of a Computer. First Computer? CMSC104 Lecture 2 Remember to report to the lab on Wednesday Topics Machine Architecture and Number Systems Major Computer Components Bits, Bytes, and Words The Decimal Number System The Binary Number

More information

Functional Programming

Functional Programming Functional Programming Björn B. Brandenburg The University of North Carolina at Chapel Hill Based in part on slides and notes by S. Olivier, A. Block, N. Fisher, F. Hernandez-Campos, and D. Stotts. Brief

More information

So, coming back to this picture where three levels of memory are shown namely cache, primary memory or main memory and back up memory.

So, coming back to this picture where three levels of memory are shown namely cache, primary memory or main memory and back up memory. Computer Architecture Prof. Anshul Kumar Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture - 31 Memory Hierarchy: Virtual Memory In the memory hierarchy, after

More information

To figure this out we need a more precise understanding of how ML works

To figure this out we need a more precise understanding of how ML works Announcements: What are the following numbers: 74/2/70/17 (2:30,2:30,3:35,7:30) PS2 due Thursday 9/20 11:59PM Guest lecture on Tuesday 9/25 o No RDZ office hours next Friday, I am on travel A brief comment

More information

Lecture 1. Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering?

Lecture 1. Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering? Lecture 1 Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering? Welcome to ENGR 102 Syllabus review Your Time Expectations (in

More information

Chapter 1. The Big Picture

Chapter 1. The Big Picture Chapter 1 The Big Picture 1.1 Computing Systems Hardware The physical elements of a computing system (printer, circuit boards, wires, keyboard ) Software The programs that provide the instructions for

More information

Contemporary Multilevel Machines

Contemporary Multilevel Machines Languages, Levels, Virtual Machines A multilevel machine Contemporary Multilevel Machines A six-level computer. The support method for each level is indicated below the level. The primary difference between

More information

Artificial Intelligence Lecture 1

Artificial Intelligence Lecture 1 Artificial Intelligence Lecture 1 istrative Matters Webpage: www.aass.oru.se/~mbl/ai Examiner: Mathias Broxvall Assistant: Lia Susana d.c. Silva Lopez Schedule 20 hours/week on this course. 4 hours lectures,

More information

Software. Software. Software. Program Language. Programs written for the ENIAC

Software. Software. Software. Program Language. Programs written for the ENIAC 1 Purpose - In order for the CPU to control the physical states of the digital circuitry, it must receive signals from a computer program and convert these signals into action (switching circuits on and

More information

Class Structure. Prerequisites

Class Structure. Prerequisites Class Structure Procedural abstraction and recursion 6.037 - Structure and Interpretation of Computer Programs Mike Phillips, Benjamin Barenblat, Leon Shen, Ben Vandiver, Alex Vandiver, Arthur Migdal Massachusetts

More information

CSc 372. Comparative Programming Languages. 2 : Functional Programming. Department of Computer Science University of Arizona

CSc 372. Comparative Programming Languages. 2 : Functional Programming. Department of Computer Science University of Arizona 1/37 CSc 372 Comparative Programming Languages 2 : Functional Programming Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg 2/37 Programming Paradigms

More information

1. Fundamental Concepts

1. Fundamental Concepts 1. Fundamental Concepts 1.1 What is a computer? A computer is a data processing machine which is operated automatically under the control of a list of instructions (called a program) stored in its main

More information

Week 5: Background. A few observations on learning new programming languages. What's wrong with this (actual) protest from 1966?

Week 5: Background. A few observations on learning new programming languages. What's wrong with this (actual) protest from 1966? Week 5: Background A few observations on learning new programming languages What's wrong with this (actual) protest from 1966? Programmer: "Switching to PL/I as our organization's standard programming

More information

6.001 Notes: Section 6.1

6.001 Notes: Section 6.1 6.001 Notes: Section 6.1 Slide 6.1.1 When we first starting talking about Scheme expressions, you may recall we said that (almost) every Scheme expression had three components, a syntax (legal ways of

More information

PROFESSOR: Last time, we took a look at an explicit control evaluator for Lisp, and that bridged the gap between

PROFESSOR: Last time, we took a look at an explicit control evaluator for Lisp, and that bridged the gap between MITOCW Lecture 10A [MUSIC PLAYING] PROFESSOR: Last time, we took a look at an explicit control evaluator for Lisp, and that bridged the gap between all these high-level languages like Lisp and the query

More information

8/27/17. CS-3304 Introduction. What will you learn? Semester Outline. Websites INTRODUCTION TO PROGRAMMING LANGUAGES

8/27/17. CS-3304 Introduction. What will you learn? Semester Outline. Websites INTRODUCTION TO PROGRAMMING LANGUAGES CS-3304 Introduction In Text: Chapter 1 & 2 COURSE DESCRIPTION 2 What will you learn? Survey of programming paradigms, including representative languages Language definition and description methods Overview

More information

CS 113: Introduction to

CS 113: Introduction to CS 113: Introduction to Course information MWF 12:20-1:10pm 1/21-2/15, 306 Hollister Hall Add/drop deadline: 1/28 C Instructor: David Crandall See website for office hours and contact information Prerequisites

More information

Unit 2 : Computer and Operating System Structure

Unit 2 : Computer and Operating System Structure Unit 2 : Computer and Operating System Structure Lesson 1 : Interrupts and I/O Structure 1.1. Learning Objectives On completion of this lesson you will know : what interrupt is the causes of occurring

More information

4.1 Review - the DPLL procedure

4.1 Review - the DPLL procedure Applied Logic Lecture 4: Efficient SAT solving CS 4860 Spring 2009 Thursday, January 29, 2009 The main purpose of these notes is to help me organize the material that I used to teach today s lecture. They

More information

(Refer Slide Time: 1:26)

(Refer Slide Time: 1:26) Information Security-3 Prof. V Kamakoti Department of Computer science and Engineering Indian Institute of Technology Madras Basics of Unix and Network Administration Operating Systems Introduction Mod01,

More information

High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore

High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore Module No # 09 Lecture No # 40 This is lecture forty of the course on

More information

CS112 Lecture: Making Choices

CS112 Lecture: Making Choices CS112 Lecture: Making Choices Objectives: Last revised 1/19/06 1. To review the Java if and if... statements 2. To introduce relational expressions and boolean operators 3. To discuss nested if statements

More information

Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5

Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5 Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5 [talking head] This lecture we study theory design and implementation. Programmers have two roles to play here. In one role, they

More information

Chapter 3 - Top Level View of Computer Function

Chapter 3 - Top Level View of Computer Function Chapter 3 - Top Level View of Computer Function Luis Tarrataca luis.tarrataca@gmail.com CEFET-RJ L. Tarrataca Chapter 3 - Top Level View 1 / 127 Table of Contents I 1 Introduction 2 Computer Components

More information

Welcome to COS151! 1.1

Welcome to COS151! 1.1 Welcome to COS151! Title: Introduction to Computer Science Course website: https://cs.up.ac.za/admin/courses/cos151 Find the study guide there Announcements Assignments (download & upload) Brief overview

More information

Concepts in Programming Languages

Concepts in Programming Languages Concepts in Programming Languages Marcelo Fiore Computer Laboratory University of Cambridge 2012 2013 (Easter Term) 1 Practicalities Course web page: with lecture

More information

Chapter 11 :: Functional Languages

Chapter 11 :: Functional Languages Chapter 11 :: Functional Languages Programming Language Pragmatics Michael L. Scott Copyright 2016 Elsevier 1 Chapter11_Functional_Languages_4e - Tue November 21, 2017 Historical Origins The imperative

More information

Computers and programming languages introduction

Computers and programming languages introduction Computers and programming languages introduction Eugeniy E. Mikhailov The College of William & Mary Lecture 01 Eugeniy Mikhailov (W&M) Practical Computing Lecture 01 1 / 19 Class goals and structure Primary

More information

Why Study Assembly Language?

Why Study Assembly Language? Why Study Assembly Language? This depends on the decade in which you studied assembly language. 1940 s You cannot study assembly language. It does not exist yet. 1950 s You study assembly language because,

More information

Hoare Logic. COMP2600 Formal Methods for Software Engineering. Rajeev Goré

Hoare Logic. COMP2600 Formal Methods for Software Engineering. Rajeev Goré Hoare Logic COMP2600 Formal Methods for Software Engineering Rajeev Goré Australian National University Semester 2, 2016 (Slides courtesy of Ranald Clouston) COMP 2600 Hoare Logic 1 Australian Capital

More information

NOTE: Answer ANY FOUR of the following 6 sections:

NOTE: Answer ANY FOUR of the following 6 sections: A-PDF MERGER DEMO Philadelphia University Lecturer: Dr. Nadia Y. Yousif Coordinator: Dr. Nadia Y. Yousif Internal Examiner: Dr. Raad Fadhel Examination Paper... Programming Languages Paradigms (750321)

More information

Functional Languages. Hwansoo Han

Functional Languages. Hwansoo Han Functional Languages Hwansoo Han Historical Origins Imperative and functional models Alan Turing, Alonzo Church, Stephen Kleene, Emil Post, etc. ~1930s Different formalizations of the notion of an algorithm

More information

Design and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute. Week 02 Module 06 Lecture - 14 Merge Sort: Analysis

Design and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute. Week 02 Module 06 Lecture - 14 Merge Sort: Analysis Design and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute Week 02 Module 06 Lecture - 14 Merge Sort: Analysis So, we have seen how to use a divide and conquer strategy, we

More information

Carleton University Department of Systems and Computer Engineering SYSC Foundations of Imperative Programming - Winter 2012

Carleton University Department of Systems and Computer Engineering SYSC Foundations of Imperative Programming - Winter 2012 Carleton University Department of Systems and Computer Engineering SYSC 2006 - Foundations of Imperative Programming - Winter 2012 Lab 3 - Arrays and Functions Objective The objective of this lab is to

More information

Which of the following is not true of FORTRAN?

Which of the following is not true of FORTRAN? PART II : A brief historical perspective and early high level languages, a bird's eye view of programming language concepts. Syntax and semantics-language definition, syntax, abstract syntax, concrete

More information

Hardware Description and Verification Lava Exam

Hardware Description and Verification Lava Exam Hardware Description and Verification Lava Exam Mary Sheeran Revised by Thomas Hallgren hallgren@chalmers.se May 16, 2010 Introduction The purpose of this take-home exam is to give you further practice

More information

Machine Architecture and Number Systems

Machine Architecture and Number Systems Machine Architecture and Number Systems Topics Major Computer Components Bits, Bytes, and Words The Decimal Number System The Binary Number System Converting from Binary to Decimal Converting from Decimal

More information

Chapter 15. Functional Programming Languages

Chapter 15. Functional Programming Languages Chapter 15 Functional Programming Languages Copyright 2009 Addison-Wesley. All rights reserved. 1-2 Chapter 15 Topics Introduction Mathematical Functions Fundamentals of Functional Programming Languages

More information

Wednesday, January 28, 2018

Wednesday, January 28, 2018 Wednesday, January 28, 2018 Topics for today History of Computing (brief) Encoding data in binary Unsigned integers Signed integers Arithmetic operations and status bits Number conversion: binary to/from

More information

This session. Recursion. Planning the development. Software development. COM1022 Functional Programming and Reasoning

This 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 information

1.3. Conditional expressions To express case distinctions like

1.3. Conditional expressions To express case distinctions like Introduction Much of the theory developed in the underlying course Logic II can be implemented in a proof assistant. In the present setting this is interesting, since we can then machine extract from a

More information

Deep Learning for Visual Computing Prof. Debdoot Sheet Department of Electrical Engineering Indian Institute of Technology, Kharagpur

Deep Learning for Visual Computing Prof. Debdoot Sheet Department of Electrical Engineering Indian Institute of Technology, Kharagpur Deep Learning for Visual Computing Prof. Debdoot Sheet Department of Electrical Engineering Indian Institute of Technology, Kharagpur Lecture - 05 Classification with Perceptron Model So, welcome to today

More information

Programming Languages 2nd edition Tucker and Noonan"

Programming Languages 2nd edition Tucker and Noonan Programming Languages 2nd edition Tucker and Noonan" " Chapter 1" Overview" " A good programming language is a conceptual universe for thinking about programming. " " " " " " " " " " " " "A. Perlis" "

More information

Multi-Paradigm Approach for Teaching Programming

Multi-Paradigm Approach for Teaching Programming Multi-Paradigm Approach for Teaching Laxmi P Gewali* and John T Minor School of Computer Science University of Nevada, Las Vegas 4505 Maryland Parkway, Las Vegas Nevada 89154 Abstract: Selecting an appropriate

More information

Elements of Computers and Programming Dr. William C. Bulko. What is a Computer?

Elements of Computers and Programming Dr. William C. Bulko. What is a Computer? Elements of Computers and Programming Dr. William C. Bulko What is a Computer? 2017 What is a Computer? A typical computer consists of: a CPU memory a hard disk a monitor and one or more communication

More information

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 2. true / false ML can be compiled. 3. true / false FORTRAN can reasonably be considered

More information

http://xkcd.com/224/ CS252 Programming Language Paradigms Prof. Tom Austin San José State University Fall 2014 What are some programming languages? Why are there so many? Different domains. Mobile devices

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

15 Unification and Embedded Languages in Lisp

15 Unification and Embedded Languages in Lisp 15 Unification and Embedded Languages in Lisp Chapter Objectives Chapter Contents Pattern matching in Lisp: Database examples Full unification as required for Predicate Calculus problem solving Needed

More information

(Refer Slide Time: 1:36)

(Refer Slide Time: 1:36) Principles of Programming Languages Dr. S. Arun Kumar Department of Computer Science & Engineering Indian Institute of Technology, Delhi Lecture - 39 Parameters Welcome to lecture 39. So today we will

More information

Unit. Programming Fundamentals. School of Science and Technology INTRODUCTION

Unit. Programming Fundamentals. School of Science and Technology INTRODUCTION INTRODUCTION Programming Fundamentals Unit 1 In order to communicate with each other, we use natural languages like Bengali, English, Hindi, Urdu, French, Gujarati etc. We have different language around

More information

Functional Programming Lecture 1: Introduction

Functional Programming Lecture 1: Introduction Functional Programming Lecture 1: Introduction Viliam Lisý Artificial Intelligence Center Department of Computer Science FEE, Czech Technical University in Prague viliam.lisy@fel.cvut.cz Acknowledgements

More information

HISTORY OF COMPUTING

HISTORY OF COMPUTING NAME: DATE: PERIOD: 01) Definition of computers: HISTORICAL DEVICES 02) How is the term Analog used when representing data? 03) Answer the questions for the two devices used prior to the invention of the

More information

EC121 Mathematical Techniques A Revision Notes

EC121 Mathematical Techniques A Revision Notes EC Mathematical Techniques A Revision Notes EC Mathematical Techniques A Revision Notes Mathematical Techniques A begins with two weeks of intensive revision of basic arithmetic and algebra, to the level

More information

Introduction to Software Development (ISD) David Weston and Igor Razgon

Introduction to Software Development (ISD) David Weston and Igor Razgon Introduction to Software Development (ISD) David Weston and Igor Razgon Autumn term 2013 Course book The primary book supporting the ISD module is: Java for Everyone, by Cay Horstmann, 2nd Edition, Wiley,

More information

Describe the layers of a computer system

Describe the layers of a computer system Chapter 1 The Big Picture Chapter Goals Describe the layers of a computer system Describe the concept of abstraction and its relationship to computing Describe the history of computer hardware and software

More information

Artificial Intelligence Lecture 1

Artificial Intelligence Lecture 1 Artificial Intelligence Lecture 1 istrative Matters Webpage: www.aass.oru.se/~ali/ai2008 Teacher: Amy Loutfi Hours: Fridays 10 12 Lab Assistant: Marcello Cirillo 2 istrative Matters Course book: Alison

More information

Lecture 05 I/O statements Printf, Scanf Simple statements, Compound statements

Lecture 05 I/O statements Printf, Scanf Simple statements, Compound statements Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute of Technology, Madras Lecture 05 I/O statements Printf, Scanf Simple

More information

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

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING 10.2478/cris-2013-0011 PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING NIKOLETTA MINAROVA 77 INTRODUCTION Since the first design concept of computers came into the world,

More information

Algorithms and Programming Languages

Algorithms and Programming Languages Algorithms and Programming Languages Algorithm An algorithm is an set of unambiguous that defines a terminating process. Algorithms are part of many activities, even mundane ones. Note: Researchers believe

More information

Chapter 3 Memory Management: Virtual Memory

Chapter 3 Memory Management: Virtual Memory Memory Management Where we re going Chapter 3 Memory Management: Virtual Memory Understanding Operating Systems, Fourth Edition Disadvantages of early schemes: Required storing entire program in memory

More information

AXIOMS OF AN IMPERATIVE LANGUAGE PARTIAL CORRECTNESS WEAK AND STRONG CONDITIONS. THE AXIOM FOR nop

AXIOMS OF AN IMPERATIVE LANGUAGE PARTIAL CORRECTNESS WEAK AND STRONG CONDITIONS. THE AXIOM FOR nop AXIOMS OF AN IMPERATIVE LANGUAGE We will use the same language, with the same abstract syntax that we used for operational semantics. However, we will only be concerned with the commands, since the language

More information

Lambda Calculus see notes on Lambda Calculus

Lambda Calculus see notes on Lambda Calculus Lambda Calculus see notes on Lambda Calculus Shakil M. Khan adapted from Gunnar Gotshalks recap so far: Lisp data structures basic Lisp programming bound/free variables, scope of variables Lisp symbols,

More information