Introduction to Computers, Problem Solving, and Programming Chapter 1 1.1 Overview of Computers Computer - “A device for counting or computing” Dr. John Atanasoff - 1st computer. ENIAC 1946 at U of Penn Dr. John Von Neumann - Princeton – Stored program concept – Memory rather than wires and switches. Computing History 2 Overview of Computers Von Neumann architecture basis for today's computers VLSI Technology made computers affordable, small and available to the public How programming has changed over time 3 1.2 Computer Hardware Every computer is organized roughly into six parts – CPU - central processing unit • Where decisions are made, computations are performed, and input/output requests are delegated – Main Memory • Stores information being processed by the CPU – Secondary Memory • Stores data and programs 4 Computer Hardware – Input devices • Allows people to supply information to computers – Output devices • Allows people to receive information from computers – Network connection • Modems / Ethernet interface 5 Computer Components 6 Main Memory Address Contents 0 1 1024 -27.2 354 .005 75.62 7 Main Memory Stores – programs – data – results Types – RAM – ROM 8 Secondary Memory & Storage Semi permanent data-storage capability – Tape or Disk – Hard disk – CD ROM Secondary memory has much more storage capacity 9 CPU “Brains” of the computer – Arithmetic calculations are performed using the Arithmetic/Logical Unit or ALU – Control unit decodes and executes instructions Arithmetic operations are performed using binary number system 10 CPU Fundamental building block is a switch – Switches are made from ultrasmall transistors Examples – The Pentium ® processor contains about three million transistors – The Pentium Pro ® has about 5.5 million transistors 11 Input / Output Devices Accessories that allow computer to perform specific tasks – Receiving information for processing – Return the results of processing – Store information Common input and output devices – Printer – Keyboard Joystick Monitor CD-ROM 12 Computer Networks LAN - Local area network – Organizational WAN - Wide area network – Internet 13 World Wide Web Introduced 1989 Developed by CERN – European Laboratory for Particle Physics Web browser – GUI – Netscape – IE 14 1.3 Computer Software Application software – Programs designed to perform specific tasks that are transparent to the user System software – Programs that support the execution and development of other programs – Two major types • Operating systems • Translation systems 15 Application Software Application software is the software that has made using computers indispensable and popular Common application software – – – – – Word processors Desktop publishing programs Spreadsheets Presentation managers Drawing programs 16 Operating System Controls and manages the computing resources Important services that an operating system provides – File system – Commands that allow for manipulation of the file system – Ability to perform input and output on a variety of devices – Management of the running systems Examples – MSDOS ®, Windows ®, Unix ® 17 Programming Languages Machine Language – “Native tongue” of the computer – Binary 0s and 1s that specify what to do • 0010 0000 0000 0100 • 1000 0000 0000 0101 • 0011 0000 0000 0110 High - Level Languages – Resemble human language (C++, C, Pascal) • cost = price + tax; 18 Programming Languages Language Standard – Syntax (grammatical form) (rules) – Portable • programs used without modification Source Program Object Program Executable Program 19 Object Oriented Programming OOP derived from C Bjarne Stroustrup Popular because of reuse – Classes – Objects Organized in a Hierarchy – Super Classes – Sub Classes 20 OO Programming and Structured Programming Object-oriented design and programming supports good software engineering Object-oriented design promotes thinking about software in a way that models the real world 21 OO Programming and Structured Programming Algorithms are the basis for the procedural sections (Structured Programs) – Highly structured – Top-down design – Step-wise refinement 22 Object Oriented Design Abstraction – Extract the relevant properties of an object while ignoring inessential details Encapsulation – Breaking down an object into parts, hiding and protecting its essential information, and supplying an interface to modify the information in a controlled and useful manner 23 Object Oriented Design Modularity – Dividing an object into smaller pieces or modules such that the object is easier to understand and manipulate Hierarchy – Ranking or ordering of objects based on some relationship between them 24 Abstraction Process of extracting only the relevant properties of an object Extracted properties define a view of the object 25 Abstraction Car dealer views a car from selling features standpoint – Price, warranty, color, etc. Mechanic views a car from systems maintenance standpoint – Oil, oil filter, spark plugs, etc. 26 Encapsulation Breaking down an object into parts, hiding and protecting its essential information, and supplying an interface to modify the information in a controlled and useful manner By hiding the information its representation and content can be changed without affecting other parts of the system 27 Encapsulation Example - car radio – Controlled by switches and knobs – The details of how it works is hidden 28 Modularity Dividing an object so that the object holds useful information and it is easier to understand Most complex systems are modular – Cooling System – Ignition System – Fuel System 29 Modularity Example - Automobile can be decomposed into subsystems – Cooling system • Radiator • Thermostat • Water pump – Ignition system • Battery • Starter • Spark plugs 30 Hierarchy Ranking or ordering of objects based on some relationship between them Hierarchies facilitate understanding complex organizations and systems – Example - a company hierarchy helps employees understand the structure of their company and their positions 31 OO Classes Later we will use data abstractions – C++ language Will apply OO techniques – Structured Programming – Object Oriented Programming Model our own objects or abstractions 32 1.4 Processing a High-Level Language Program Set of programs used to develop software A key component of a is a translator Types of translators – Compiler – Linker Examples – g++, Borland C++ ®, Microsoft Visual C++ ® 33 Processing a Program Editor used to enter the program – Source program (file.cpp) – UNIX vi text editor Compiler translates the source program – Displays syntax errors (not descriptive) Linker/Loader to combine object file with other object files – Executable program 34 Processing a Program Major activities – Editing – Compiling – Linking with pre-compiled files • Object files • Library modules – Loading and executing – Viewing the behavior of the program 35 Process Cycle 36 1.5 Software Development Method Problem Analysis - (Correct Problem) – – – – Identify data objects Goal to model properties Determine Input / Output data Constraints on the problem Design – Decompose into smaller problems – Top-down design (divide and conquer) – Develop Algorithm (Desk check) 37 Software Development Method Implementation – Writing the algorithm Testing – Verify the program meets requirements – System and Unit test Documentation – Key part in the development process 38 Software Development Method Software engineering – Area of computer science concerned with building large software systems Challenge – Tremendous advances in hardware have not been accompanied by comparable advances in software 39 Software Engineering Goals Reliability – An unreliable life-critical system can be fatal Understandability – Future development becomes very difficult if software is hard to understand Cost Effectiveness – Cost to develop and maintain should not exceed profit 40 Software Engineering Goals Adaptability – System that is adaptive is easier to alter and expand Reusability – Improves reliability and maintainability, and reduces development costs 41 1.6 Applying the Software Development Method Case Study: Kilometers Converting Miles to – Problem Your summer surveying job requires you to study some maps that give distances in kilometers and some that use miles. You and your coworkers prefer to deal in metric measurements. Write a program that performs the necessary conversion. 42 Applying the Software Development Method – Analysis The first step in solving this problem is to determine what you are asked to do. You must convert from one system of measurement to another, but are you supposed to convert from kilometers to miles, or vice versa? The problem states that you prefer to deal in metric measurements, so you must convert distance measurements in miles to kilometers. 43 Applying the Software Development Method – Design The next step is to formulate the algorithm that solves the problem. Begin by listing the three major steps, or sub problems, of the algorithm. – Implementation To implement the solution, you must write the algorithm as a C++ program. – Testing How do you know the sample run is correct? 44 1.7 Professional Ethics for Computer Programmers Privacy and Misuse of Data Computer Hacking Plagiarism and Software Piracy Misuse of a Computer Resource 45