Why Program? CSE111 – Great ideas in Computer Science Clearly programming fits here Programming is a Great Idea in Computer Science. It has allowed computers to become what they are today. The course satisfies the Math Requirement Clearly programming has something to do with math. Even Karel has something to do with math It uses to logic we studied earlier Helps us understand how computers make decisions Can be painful Copyright © 2008 by Helene G. Kershner Why Program? Why does anyone program? Good job Recreation Tool for problem solving A new way of thinking Understand what’s going on inside the machine Copyright © 2008 by Helene G. Kershner Why Program? Recreation? HUH? Another kind of artist There is a creative joy for some in writing a program Amateur programming for some is not different than amateur photography for others Copyright © 2008 by Helene G. Kershner Why Program? Teaches clear communication What is the problem? What do I KNOW about the problem? What am I trying to solve? Break the problem down into parts that are solvable – maybe Break it down into parts that can at least be explored Copyright © 2008 by Helene G. Kershner Why Program? Change the way we think! Think differently, think clearly, think with a sense of precision Natural Language is not the best tool for thinking. Why? What we “mean” and what we “say” are often not the same It is inherently imprecise It involves idioms Words say one thing and mean another How we say things matters Facial expressions Body language What we don’t say is often more important than what we do Lawyers are the artists of Natural Language Copyright © 2008 by Helene G. Kershner Why Program? Programming requires a language that is very precise (often to the point of frustration). Logical thinking is straightforward in a programming language. It is not straightforward in a natural language Programming can force us to think clearly If we think it but can’t say it clearly do we really understand it? Copyright © 2008 by Helene G. Kershner Why Program? Problem Solving: Ever been in an argument where you can’t seem to make yourself understood? Perhaps that is because we don’t really understand the point we want/need to make. Question: If we think we understand something but can’t say it clearly do we really understand it? Copyright © 2008 by Helene G. Kershner Why Program? Programming is a structured form of problem solving It is a mechanism for practicing and organizing how to think For some of us it is natural, for others it is not, but the structure is helpful Copyright © 2008 by Helene G. Kershner Why Program? Most problem solving is a “head” thing! The problem is running around in my head and possible solutions seem to be chasing it round-and-round. Copyright © 2008 by Helene G. Kershner Why Program? Programming teaches problem solving without a total all-consuming awareness of the mathematical tools that are at it’s core. We use algebra We use logic We use decision making But we use them in an environment different from the math we’ve been taught in school Copyright © 2008 by Helene G. Kershner Why Program? Programming presents a style that empowers us to apply SIMPLE language and PLANNING to problem solving. Copyright © 2008 by Helene G. Kershner Why Program? Programming is a thinking skill. Analyze a problem statement Think clearly about what the solution could be Gather information and express clearly the current state of the problem? What is the problem anyway? Express the problem clearly and concisely in exactly words. Why isn’t it solved yet? What would it take to solve it? Begin to address how to go from where we are now to where we want to be. Copyright © 2008 by Helene G. Kershner Why Program? Programming is a thinking skill. Analyze a problem statement Think clearly about what the solution could be Define the Output Gather information and express clearly the current state of the problem? Define the Problem Define the Input Begin to address how to go from where we are now to where we want to be. Create an Initial Algorithm Copyright © 2008 by Helene G. Kershner Why Program? Think again about how to solve the problem! Revise the Algorithm Pay attention to details. The devil is in the details Make no assumptions Copyright © 2008 by Helene G. Kershner Why Program? What did we do when we learned to program. Primitives – a basic language Learned to expand these into blocks that made our thinking easier – it changed nothing for Karel’s behavior Learned to let the machine make some basic decisions Learned to let the machine repeat things Learned to let the machine combine simple decision making with repeating Copyright © 2008 by Helene G. Kershner Why Program? Problem solving is a tool for everyone, whether a doctor, lawyer, chef, journalist, artist, educator or a scientist or engineer. Everyone, everywhere solves problems every day. The mental exercise of learning to organize one’s thoughts so we can “talk” to the computer, “talk” to Karel, makes us better problem solvers. Copyright © 2008 by Helene G. Kershner