Introduction to Algorithms and Data Structures

Similar documents
Introduction to Algorithms and Data Structures

Introduction to Algorithms and Data Structures

Introduction to Algorithms and Data Structures

Introduction to Algorithms and Data Structures

Chapter. Focus of the Course. Object-Oriented Software Development. program design, implementation, and testing

Objectives. Problem Solving. Introduction. An overview of object-oriented concepts. Programming and programming languages An introduction to Java

Chapter 1. Introduction

Data Representation and Applets

ECE 122 Engineering Problem Solving with Java

Identifiers. Identifiers are the words a programmer uses in a program Some identifiers are already defined. Some are made up by the programmer:

For the course, we will be using JCreator as the IDE (Integrated Development Environment).

2 rd class Department of Programming. OOP with Java Programming

Computers in Engineering COMP 208. A Brief History. Mechanical Calculators. A Historic Perspective Michael A. Hawker

Computers in Engineering COMP 208

Welcome to COS151! 1.1

COMP 202 Java in one week

CPS109 Computer Science 1

Computer Components. Software{ User Programs. Operating System. Hardware

Review Chapters 1 to 4. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

Chapter 1. The Big Picture

CompSci 125 Lecture 02

Computer Hardware. Java Software Solutions Lewis & Loftus. Key Hardware Components 12/17/2013

Part (01) Introduction to Computer

Expressions and Data Types CSC 121 Spring 2015 Howard Rosenthal

Java language. Part 1. Java fundamentals. Yevhen Berkunskyi, NUoS

Data Representation and Applets

Data Representation and Applets

CS5000: Foundations of Programming. Mingon Kang, PhD Computer Science, Kennesaw State University

BIT Java Programming. Sem 1 Session 2011/12. Chapter 2 JAVA. basic

Expressions and Data Types CSC 121 Fall 2015 Howard Rosenthal

Welcome to COSC Introduction to Computer Science

1: History, Generation & Classification. Shobhanjana Kalita, Dept. of CSE, Tezpur University

Last Time. University of British Columbia CPSC 111, Intro to Computation Alan J. Hu. Readings

Name: Date: Hour: The abacus (still in use today) is about 5,000 years old. Not a computer.

C H A P T E R 1. Introduction to Computers and Programming

Introduction to Java Chapters 1 and 2 The Java Language Section 1.1 Data & Expressions Sections

3. Java - Language Constructs I

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

Computer Components. Software{ User Programs. Operating System. Hardware

CSC 1214: Object-Oriented Programming

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

An overview of Java, Data types and variables

Fundamentals of Python: First Programs. Chapter 1: Introduction Modifications by Mr. Dave Clausen

Chronological History of the Pre-Computer Developments

Topics. Hardware and Software. Introduction. Main Memory. The CPU 9/21/2014. Introduction to Computers and Programming

An Introduction to Software Engineering. David Greenstein Monta Vista High School

Elementary Computing CSC M. Cheng, Computer Science 1

CS140 Lecture 09a: Brief History of Computing

5/3/2006. Today! HelloWorld in BlueJ. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont.

CSCI 2101 Java Style Guide

A Brief History of Computer Science

Lecture 3: Variables and assignment

Fundamentals of Digital Computers The mechanical computer age began with the advent of the abacus in 500 B.C by Babylonians. The abacus, which was

Overview of a computer

Computer Hardware and Software Introduction. Mr. Smith AP Computer Science A

Computer Systems. Hardware, Software and Layers of Abstraction

You Will Need Floppy Disks for your labs!

Lab # 2. For today s lab:

Describe the layers of a computer system

History. 3rd Generation- Integrated Circuits, Transistors (Integrated Circuit form) for Memory ( memory is now volatile), Terminal/Keyboard for I/O

3. Java - Language Constructs I

Building Java Programs. Chapter 1: Introduction to Java Programming

Information Science 1

COMP163. Introduction to Computer Programming. Introduction and Overview of the Hardware

CS101 Lecture 29: Brief History of Computing

The Modern Computer. Exploring Computer Science

HISTORY OF CALCULATION. Evolution of Computation

Lecture 1: CS2400 Introduction to Computer Science

Computer Basics. Computer Technology

CHAPTER 1 Introduction to Computers and Java

Chapter 1. Hardware. Introduction to Computers and Programming. Chapter 1.2

Monday, January 27, 2014

CS1007: Object Oriented Design and Programming in Java. Lecture #2 Sept 8 Shlomo Hershkop Announcements

Chapter 1: Introduction to Computers and Java

8/23/2014. Chapter Topics. Introduction. Java History. Why Program? Java Applications and Applets. Chapter 1: Introduction to Computers and Java

Selection Statements and operators

HISTORY OF COMPUTING

Machine Architecture and Number Systems

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

2: Basics of Java Programming

CHAPTER 1 Introduction

Java is a high-level programming language originally developed by Sun Microsystems and released in Java runs on a variety of

Chapter 1 History & Hardware

CSC 1051 Algorithms and Data Structures I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

History of Computing. Slides from NYU and Georgia Tech

A Short History of Computers

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

Programming in C++ 4. The lexical basis of C++

Pace University. Fundamental Concepts of CS121 1

W1005 Intro to CS and Programming in MATLAB. Brief History of Compu?ng. Fall 2014 Instructor: Ilia Vovsha. hip://

The Java Language Rules And Tools 3

Chapter 1: Introduction to Computers, Programs, and Java

COMP 202 Java in one week

Applets and the Graphics class

Great Inventions written by Bob Barton

Program Fundamentals

COMP 102: Computers and Computing Lecture 1: Introduction!

Introduction to Visual Basic and Visual C++ Introduction to Java. JDK Editions. Overview. Lesson 13. Overview

A (BRIEF) HISTORY OF COMPUTING. By Dane Paschal

Introduction to Java Programming

Transcription:

Introduction to Algorithms and Data Structures CSC 1051 Algorithms and Data Structures I Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University Course website: www.csc.villanova.edu/~map/1051/ Some slides in this presentation are adapted from the slides accompanying Java Software Solutions by Lewis & Loftus

What is this course about? Computer Science Problem solving Algorithmic thinking Data representation Software engineering

Our textbook Java Software Solutions Foundations of Program Design Seventh Edition John Lewis William Loftus

Course website www.csc.villanova.edu/~map/1051/ Links to: Schedule - meetings, slides, projects, labs, etc. Syllabus - course information Piazza - class discussions, announcements Blackboard - homework exercises, submit projects, check grades

An old quote A priest asked: What is Fate, Master? And he answered: It is that which gives a beast of burden its reason for existence. It is that which men in former times had to bear upon their backs. It is that which has caused nations to build byways from City to City upon which carts and coaches pass, and alongside which inns have come to be built to stave off Hunger, Thirst and Weariness. And that is Fate? said the priest. Fate... I thought you said Freight, responded the Master. That's all right, said the priest. I wanted to know what Freight was too. - Kehlog Albran Source unknown. This quote appeared as one of the fortunes displayed by the fortune cookie program on old unix systems. ( fortune was a program that ran automatically every time you logged out of a unix session and displayed a random, pithy saying.)

Reverse History of computing Examine what we already know, travel backwards 1. What we see now all around us a connected world of computing 2. Focus on a single traditional computer 3. Dig deeper data and processing

Networks A network is two or more computers that are connected so that data and resources can be shared A Local-Area Network (LAN) covers a small distance and a small number of computers A Wide-Area Network (WAN) connects two or more LANs, often over long distances

The Internet History: Started as a United States government project, sponsored by the Advanced Research Projects Agency (ARPA) in late 1960 s See also: http://www.internethalloffame.org/internet-history/timeline 1970 s and 1980 s: ARPANET wide area network protocols for communication 1990 s: World Wide Web html and web browsers 1969: first four nodes of the internet Image source: http://www.computerhistory.org/internet_history/full_size_images/1969_4-node_map.gif

The Arpanet in 1971 Interface Message Processor (IMP) evolved into today s routers. Image source: http://www.computerhistory.org/internet_history/index.html

The World Wide Web The Internet Protocol (IP) determines how data are routed across network boundaries. Each computer on the Internet has a unique IP address, such as: 204.192.116.2 Data are accessed using a Uniform Resource Locator (URL): eg: http://www.cnn.com ftp://java.sun.com/applets/animation.zip A URL specifies a protocol (http), a domain, and possibly specific documents Web documents are often defined using the HyperText Markup Language (HTML)

The World Wide Web The World Wide Web allows many different types of information to be accessed using a common interface Resources presented include: text, graphics, video, sound, audio, executable programs A browser is a program which accesses network resources and presents them Popular browsers: Chrome, Internet Explorer, Safari, Firefox My first browser: Mosaic <3

Reverse History of computing Examine what we already know, travel backwards 1. What we see now all around us a connected world of computing 2. Focus on a single traditional computer 3. Dig deeper data and processing

A Computer Specification Consider the following specification for a personal computer: 3.07 GHz Intel Core i7 processor 4 GB RAM 750 GB Hard Disk 16x Blu-ray / HD DVD-ROM & 16x DVD+R DVD Burner 17 Flat Screen Video Display with 1280 x 1024 resolution Network Card

Computer Architecture

Memory 9278 9279 9280 9281 9282 9283 9284 9285 9286 Main memory is divided into many memory locations (or cells) Each memory cell has a numeric address, which uniquely identifies it

Why is main memory called RAM????

Random Access Memory (RAM) You don t have to scan the memory sequentially go to data directly using the address 9278 9279 9280 9281 9282 9283 9284 9285 9286 10011010

What is ROM? is it the opposite of RAM????

Read Only Memory What is ROM? is it the opposite of RAM????

Read Only Memory What is ROM? is it the opposite of RAM???? NO! ROM is also random access

RAM vs. ROM RAM - Random Access Memory synonymous with main memory: fast read/write volatile random access ROM - Read-Only Memory ROM typically holds the firmware, eg BIOS fast (except in CD-ROM) read only non-volatile random access

CPU and Main Memory Central Processing Unit Chip that executes program commands Primary storage area for programs and data that are in active use Synonymous with RAM Main Memory

CPU and Main Memory Historic note: Von Neuman architecture John Von Neuman, USA 1945 Central Processing Unit Chip that executes program commands Primary storage area for programs and data that are in active use Synonymous with RAM Main Memory Von Neumann in the 1940s http://en.wikipedia.org/wiki/von_neumann

The Central Processing Unit A CPU is on a chip called a microprocessor It continuously follows the fetch-decode-execute cycle: Retrieve an instruction from main memory fetch execute Carry out the instruction decode Determine what the instruction is

The Central Processing Unit A CPU is on a chip called a microprocessor It continuously follows the fetch-decode-execute cycle: Retrieve an instruction from main memory fetch execute decode system clock controls speed, measured in gigahertz (GHz) Carry out the instruction Determine what the instruction is

The Central Processing Unit Arithmetic / Logic Unit Performs calculations and makes decisions Control Unit Registers Coordinates processing (system clock, decoding, etc) Small, very fast memory

Historic Notes: Automatic control of computation The concept of a machine that can follow a series of steps - a program Some early steps: Jacquard loom (France 1801) Babbage's Difference engine and Analytical engine (England 1822) Holerith's census machine (USA 1890) Colossus Mark I first electronic computer to be programmable (Alan Turing, England 1944) Stored program and the fetch/decode/execute cycle (John von Neumann, USA 1945) ENIAC - first fully electronic digital computer (Eckert and Mauchley, University of Pennsylvania, 1946)

Jacquard Loom This portrait of Jacquard was woven in silk on a Jacquard loom and required 24,000 punched cards to create (1839). It was only produced to order. Charles Babbage owned one of these portraits; it inspired him in using punched cards in his analytical engine. Collection of the Science Museum in London, England. (Source: Wikipedia) punched cards determine the pattern

Charles Babbage & Ada Lovelace Designed the Analytical Engine First Programmer for (not yet built) Analytical Engine

1945: The word computer changes its meaning Captain Grace Hopper and other computers The Electronic Numeric Integrator and Calculator (ENIAC) Programmers Betty Jean Jennings (left) and Fran Bilas (right) operate ENIAC's main control panel at the Moore School of Electrical Engineering. (U.S. Army photo from the archives of the ARL Technical Library)

Reverse History of computing Examine what we already know, travel backwards 1. What we see now all around us a connected world of computing 2. Focus on a single traditional computer 3. Dig deeper data and processing

Data Representation Computers store all information digitally, using binary codes: numbers text images audio video program instructions 9278 9279 9280 9281 9282 9283 9284 9285 9286 01110100

Analog vs. Digital Data Analog continuous, in direct proportion to the data represented music on a record album - a needle rides on ridges in the grooves that are directly proportional to the voltages sent to the speaker Digital information is broken down into pieces, and each piece is represented separately sampling record discrete values of the analog representation

Binary Numbers Number system consisting of 1 s & 0 s Simplest way to represent digital information: Electronic circuits: high/low voltage Magnetic devices (eg hard drive): positive/negative Optical devices (eg DVD): light reflected/not reflected due to microscopic grooves A binary digit is called a bit - binary digit

A byte is a group of eight bits 01110100 a number? a letter? the red component of a pixel? a program instruction? Computing devices store use binary codes to reprepresent data of all kinds

Example: Representing Text Characters, including spaces, digits, and punctuation are represented by numeric codes H i, H e a t h e r. 72 105 44 32 72 101 97 116 104 101 114 46 The ASCII (American Standard Code for Information Interchange) character set uses eight bits per character, allowing for 256 unique characters 01110100 ASCII 00000000 01110100 UNICODE The Unicode character set extends ASCII to sixteen bits per character, allowing for 65,536 unique characters.

Example: Representing Pixels red=116 green=86 blue=142 Color 116, 86, 142) CSC 1051 M.A. Papalaskari, Villanova University

Example: Representing Program Instructions Intel opcode for the instruction JZ (jump if zero): 01110100

Historic note: Trends that gave rise to the modern computer Mechanization of arithmetic the concepts of numbers, symbols, algorithms, and computation + Automatic control of computation a program to control operations (fetch/decode/execute cycle and the stored program concept) = modern computer

Basic human needs: counting & measuring http://www.dreamstime.com/royalty-free-stock-photography-counting-sheep-image129737 http://ghoststudy.com/new11_galleries/halloweve1067.jpg

Historic Note: Mechanization of arithmetic Development of number systems Abacus (2400 BC) Number systems (Babylonian, Greek, Roman, Arabic 1000 BC - 800 AD) The notion of an algorithm Euclid (300 BC) al-khwārizmī (780 AD) Creation of special purpose calculators Stonehenge (1900-1600 BC) Napier's bones (1600, a precursor of the slide rule) Pascal's adder (1642) Leibniz's calculator (1670s) modern calculators

Computer Science A new paradigm in humanity s search for understanding of: Representation & encoding Computation Problem solving Mechanization Mechanization of arithmetic the concepts of numbers, symbols, algorithms, and computation + Automatic control of computation a program to control operations (fetch/decode/ execute cycle and the stored program concept) = modern computer History Epilogue: Just like Physics and other sciences branched off from philosophy during the Renaissance, so CS emerged in the 20 th century from the work of philosophers and mathematicians with the help of dedicated, visionary practitioners, experimental scientists and engineers.

Part 2 introduction to Java

High-level programming languages Programmer writes Source code Translation produces the binary equivalent Object code Translation is performed by an assembler, compiler, or interpreter (stay tuned)

Java Translation Java source code Java bytecode Java compiler Bytecode interpreter Bytecode compiler Machine code

Development Environments There are many programs that support the development of Java software, including: Sun Java Development Kit (JDK) Sun NetBeans IBM Eclipse IntelliJ IDEA Oracle JDeveloper BlueJ jgrasp Though the details of these environments differ, the basic compilation and execution process is essentially the same

Java Program Structure In the Java programming language: A program is made up of one or more classes A class contains one or more methods A method contains program statements These terms will be explored in detail throughout the course A Java application always contains a method called main See Lincoln.java

Java Program Example //******************************************************************** // Lincoln.java Author: Lewis/Loftus // // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { //----------------------------------------------------------------- // Prints a presidential quote. //----------------------------------------------------------------- public static void main (String[] args) { System.out.println ("A quote by Abraham Lincoln:"); } } System.out.println ("Whatever you are, be a good one.");

Java Program Structure // comments about the class public class MyProgram { class header class body } Comments can be placed almost anywhere

Java Program Structure // comments about the class public class MyProgram { // comments about the method public static void main (String[] args) { } method body method header }

Comments Comments in a program are called inline documentation They should be included to explain the purpose of the program and describe processing steps They do not affect how a program works Java comments can take three forms: // Basic this comment runs to the end of the line /* Basic this comment runs to the terminating symbol, even across line breaks */ /** this is a javadoc comment */

Identifiers Identifiers are the words a programmer uses in a program An identifier can be made up of letters, digits, the underscore character ( _ ), and the dollar sign Identifiers cannot begin with a digit Java is case sensitive - Total, total, and TOTAL are different identifiers By convention, programmers use different case styles for different types of identifiers, such as title case for class names - Lincoln upper case for constants - MAXIMUM

Identifiers Sometimes we choose identifiers ourselves when writing a program (such as Lincoln) Sometimes we are using another programmer's code, so we use the identifiers that he or she chose (such as println) Often we use special identifiers called reserved words that already have a predefined meaning in the language A reserved word cannot be used in any other way

Reserved Words The Java reserved words: abstract assert boolean break byte case catch char class const continue default do double else enum extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while

White Space (Spaces, blank lines, and tabs ) Extra white space is ignored Programs should be formatted to enhance readability, using consistent indentation See Lincoln2.java, Lincoln3.java

Errors

Errors A program can have three types of errors The compiler will find syntax errors and other basic problems (compile-time errors) If compile-time errors exist, an executable version of the program is not created A problem can occur during program execution, such as trying to divide by zero, which causes a program to terminate abnormally (run-time errors) A program may run, but produce incorrect results, perhaps using an incorrect formula (logical errors)

The original bug found in the relays of Harvard s Mark II computer by Admiral Grace Murray Hopper s team. Source: en.wikipedia.org/wiki/file:h96566k.jpg

Summary History of computing Computer hardware and software overview An introduction to Java: a first program identifiers comments bugs