430 likes | 511 Views
CS 101-E: Introduction. Aaron Bloomfield MEC 205 MEC 215 Clark G004 (really). Assumptions. The following is assumed for students in 101-E You have taken a course-equivalent in programming Thus, you know the basics of programming
E N D
CS 101-E: Introduction Aaron Bloomfield MEC 205 MEC 215 Clark G004 (really)
Assumptions • The following is assumed for students in 101-E • You have taken a course-equivalent in programming • Thus, you know the basics of programming • You did not get a 4 or a 5 on the AP computer science exam (AB level)
Differences with 101 • Labs must be done by all 101-E students on their own time • If you miss more than 2, you are subject to failure • Labs due 8:30 p.m. on Sunday • Lab session for 101-E students Sunday at 7 p.m. • Pace through the textbook is the same • We’ll go into more detail, though • Today’s class will be a high-level overview
Computing units of measure • Kilo (K) = 1,000 (thousand) • Mega (M) = 1,000,000 (million) • Giga (G) = 1,000,000,000 (billion) • Tera (T) = 1,000,000,000,000 (trillion) = Kibi (Ki) = Mebi (Mi) = Gibi (Gi) = Tebi (Ti) • Kilo = 210 = 1,024 • Mega = (1024)2 = 1,048,576 • Giga = (1024)3 = 1,073,741,824 • Tera = (1024)4 = 1,099,511,627,776
A marketing trick • This hard drive has 250,059,350,016 bytes • =250.06 Gigabytes • =232.89 Gibibytes • Guess which one they use to advertise the drive?
Software • Program • Sequence of instruction that tells a computer what to do • Execution • Performing the instruction sequence • Programming language • Language for writing instructions to a computer • Major flavors • Machine language or object code • Assembly language • High-level • Program • Sequence of instruction that tells a computer what to do • Execution • Performing the instruction sequence • Programming language • Language for writing instructions to a computer • Major flavors • Machine language or object code • Assembly language • High-level • Program • Sequence of instruction that tells a computer what to do • Execution • Performing the instruction sequence • Programming language • Language for writing instructions to a computer • Major flavors • Machine language or object code • Assembly language • High-level • Program • Sequence of instruction that tells a computer what to do • Execution • Performing the instruction sequence • Programming language • Language for writing instructions to a computer • Major flavors • Machine language or object code • Assembly language • High-level Program to which computer can responddirectly. Each instructionis a binary code thatcorresponds to anative instruction Detailed knowledge ofthe machine is notrequired. Uses avocabulary andstructure closer to theproblem being solved Symbolic languagefor coding machinelanguage instructions Java is a high-levelprogramminglanguage For program to beexecuted it must betranslated
Translation • Translator • Accepts a program written in a source language and translates it to a program in a target language • Compiler • Standard name for a translator whose source language is a high-level language • Interpreter • A translator that both translates and executes a source program
Java translation • Two-step process • First step • Translation from Java to bytecodes • Bytecodes are architecturally neutral object code • Bytecodes are stored in a file with extension .class • Second step • An interpreter translates the bytecodes into machine instructions and executes them • Interpreter is known a Java Virtual Machine or JVM
Task • Display the forecast I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943.
DisplayForecast.java // Authors: J. P. Cohoon and J. W. Davidson // Purpose: display a quotation in a console window public class DisplayForecast { // method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } Three statements make up the action of method main() Method main() is part of class DisplayForecast A method is a named piece of code that performs some action or implements a behavior An application program is required to have a public static void method named main().
Java Documentation • Familiarize yourself with the Java documentation • It will save you lots of time!
Good Commenting • Necessary so others can re-use your code • And so the graders can understand it! • A well commented program: // Authors: J. P. Cohoon and J. W. Davidson // Purpose: display a quotation in a console window public class DisplayForecast { // method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } }
Bad commenting // Thomas J. Watson (February 17, 1874 - June 19, 1956) is // considered to be the founder of IBM. He was one of the // richest men of his time and called the world's greatest // salesman when he died. // Watson was born in Campbell, New York. His formal // education consisted of only a course in the Elmira // School of Commerce. His first job was at age 18 as // a bookkeeper in Clarence Risley's Market in Painted // Post, New York. Later he sold sewing machines and // musical instruments before joining the National Cash // Register Company as a salesman in Buffalo. He eventually // worked his way up to general sales manager. Bent on // inspiring the dispirited NCR sales force, Watson // introduced the motto, "THINK," which later became // a widely known symbol of IBM. // Although he is well known for his alleged 1943 statement: // "I think there is a world market for maybe five computers" // there is no evidence he ever made it. The author Kevin // Maney tried to find the origin of the quote. He has been // unable to locate any speeches or documents of Watson's // that contain this, nor is it present in any contemporary // articles about IBM. The earliest known citation is from // 1986 on Usenet in the signature of a poster from Convex // Computer Corporation as "I think there is a world market // for about five computers" --Remark attributed to Thomas // J. Watson (Chairman of the Board of International // Business Machines),1943 // While at NCR, he was convicted for illegal anti- // competitive sales practices (e.g. he used to have // people sell deliberately faulty cash registers, either // second-hand NCR or from competitors; soon after the // second-hand NCR or competitors cash register failed, // an NCR salesperson would arrive to sell them a brand // new NCR cash register). He was sentenced, along with // John H. Patterson (the owner of NCR), to one year of // imprisonment. Their conviction was unpopular with the // public, due to the efforts of Patterson and Watson to // help those affected by the 1913 Dayton, Ohio floods, // but efforts to have them pardoned by President Woodrow // Wilson were unsuccessful. However, the Court of // Appeals overturned the conviction on appeal in 1915, // on the grounds that important defense evidence should // have been admitted. public class DisplayForecast { // method main(): application entry point public static void main(String[] args) { System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } }
Engineering software • Complexity of software grows as attempts are made to make it easier to use • Rise of wizards
Software engineering • Goal • Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable • Goal • Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable • Work correctly and not fail • Goal • Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable • Because of the long lifetime many people will be involved • Creation • Debugging • Maintenance • Enhancement • Two-thirds of the cost is typically beyond creation • Goal • Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable • Cost to develop and maintain should not exceed expected benefit • Goal • Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable • Design software so that new features and capabilities can be added • Goal • Production of software that is effective and reliable, understandable, cost effective, adaptable, and reusable • Makes sense due to the great costs involved to have flexible components that can be used in other software
Principles of software engineering • Abstraction • Encapsulation • Modularity • Hierarchy • Abstraction • Encapsulation • Modularity • Hierarchy • Abstraction • Encapsulation • Modularity • Hierarchy • Abstraction • Encapsulation • Modularity • Hierarchy • Abstraction • Encapsulation • Modularity • Hierarchy Determine the relevant properties and features while ignoring nonessential details Separate components into external and internal aspects Construct a system from components and packages Ranking or ordering of objects
A bit of humor:1989 ComputerAdvertisement Guess the price!
Object-oriented design • Purpose • Promote thinking about software in a way that models the way we think and interact with the physical word • Including specialization • Object • Properties or attributes • Behaviors
Programming • Class • Term for a type of software object • Object • An instance of a class with • specific properties andattributes
Programming • Problem solving through the use of a computer system • Maxim • You cannot make a computer do something if you do not know how to do it yourself
Problem Solving • Why do you care? • We are all assigned tasks to do • At work • At home • At school • Why not do them • Right • Efficiently
Problem Solving • Why care about computer-based problemsolving (i.e., programming)? • Neat • Frontier of science • Profitable • Necessary • Quality of life
Problem Solving • Remember • The goal is not a clever solution but a correct solution • Accept • The process is iterative • In solving the problem increased understanding might require restarting • Solutions • Often require both concrete and abstract thinking • Teamwork
Problem Solving Process • What is it?
Problem Solving Process • What is it? • Analysis • Design • Implementation • Testing
Problem Solving Process • What is it? • Analysis • Design • Implementation • Testing • Determine the inputs, outputs, and other components of the problem • Description should be sufficiently specific to allow you to solve the problem
Problem Solving Process • What is it? • Analysis • Design • Implementation • Testing • Describe the components and associated processes for solving the problem • Straightforward and flexible • Method – process • Object – component and associated methods
Problem Solving Process • What is it? • Analysis • Design • Implementation • Testing • Develop solutions for the components and use those components to produce an overall solution • Straightforward and flexible
Problem Solving Process • What is it? • Analysis • Design • Implementation • Testing Test the components individually and collectively
Problem Solving Methodologies • How to do it? • Depends upon your mode of thinking • Bricolage approach • Planned approach
Problem Solving Methodologies • How to do it? • Depends upon your mode of thinking • Bricolage approach • Planned approach • Problem features and aspects are repeatedly tried and manipulated according to your personal way of organizing information • A mistake is not an error, but a correction waiting to be made in the natural course of solving the problem
Problem Solving Methodologies • How to do it? • Depends upon your mode of thinking • Bricolage approach • Planned approach • Uses logic, formalism, and engineering coupled with a structured methodology • Inherent structure of the planned approach offers makes it easier to show correctness of solution • Dominant method in terms of teaching
Tips • Find out as much as you can • Reuse what has been done before • Expect future reuse • Break complex problems into subproblems
Tips • Find out as much as you can • Reuse what has been done before • Expect future reuse • Break complex problems into subproblems • Research can require significant time and generate questions • The effort is worthwhile because the result is a better understanding • True understanding of the problem makes it easier to solve Consider Sketching a solution and then repeatedly refine its components until the entire process is specified • Find out what is known about the problem • Talk to the presenter • Determine what attempts have succeeded and what attempts have failed
Tips • Find out as much as you can • Reuse what has been done before • Expect future reuse • Break complex problems into subproblems Your time is valuable Correctness is probably even more valuable Use existing infrastructure that is known to work Be open to indirect use of existing materials
Tips • Find out as much as you can • Reuse what has been done before • Expect future reuse • Break complex problems into subproblems • Make as few assumptions as necessary • Maximizes the likelihood that your effort can be used in future situations
Tips • Find out as much as you can • Reuse what has been done before • Expect future reuse • Break complex problems into subproblems • Divide-and-conquer • Solve subproblems and combine into an overall solution
Tips • Read • Problem solving texts • George Polya, How to Solve It; A New Aspect of Mathematical Method,Princeton Press, 1988 • Wayne Wickelgren, How to Solve Mathematical Problems, Dover Publications, 1995 • Paul Zeitz, The Art and Craft of Problem Solving, John Wiley, 1999 • Sociological examination of different problem solving styles • Sherry Turkle and Seymour Papert, Epistemological Pluralism: Styles and Voices Within the Computer Culture, Signs: A Journal of Women in Culture and Society, 1990