Workshop for Programming And Systems Management Teachers

Slides:



Advertisements
Similar presentations
Introduction to Programming
Advertisements

Lecture 1: Intro to Computers Yoni Fridman 6/28/01 6/28/01.
CS 104 Introduction to Computer Science and Graphics Problems Software and Programming Language (2) Programming Languages 09/26/2008 Yang Song (Prepared.
Programming. Software is made by programmers Computers need all kinds of software, from operating systems to applications People learn how to tell the.
1 CHAPTER 4 LANGUAGE/SOFTWARE Hardware Hardware is the machine itself and its various individual equipment. It includes all mechanical, electronic.
Intro CS, Computers, Programming Introduction to Computer Science, Computers, and Programming Barbara Ericson Georgia Tech Aug 2009.
The Study of Computer Science Chapter 0 Intro to Computer Science CS1510, Section 2.
CHAPTER 4: INTRODUCTION TO COMPUTER ORGANIZATION AND PROGRAMMING DESIGN Lec. Ghader Kurdi.
Georgia Institute of Technology Introduction to Programming Part 2 Barb Ericson Georgia Institute of Technology May 2006.
1 TOPIC 1 INTRODUCTION TO COMPUTER SCIENCE AND PROGRAMMING Topic 1 Introduction to Computer Science and Programming Notes adapted from Introduction to.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
The Study of Computer Science Chapter 0 Intro to Computer Science CS1510.
Invitation to Computer Science, Java Version, Second Edition.
An Introduction to Programming with C++ Sixth Edition
Chapter 1 The Big Picture.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
The Beauty and Joy of Computing Lecture #3 : Creativity & Abstraction UC Berkeley EECS Lecturer Gerald Friedland.
110-A1 Central Processing Unit Main Memory Monitor Disk Keyboard mouse What's a Computer? Network CPU: (stupid) brain of the computer can do very simple.
Georgia Institute of Technology Workshop for Programming And Systems Management Teachers Chapter 1 Introduction to Computers and Programming.
1 TOPIC 1 INTRODUCTION TO COMPUTER SCIENCE AND PROGRAMMING Topic 1 Introduction to Computer Science and Programming Notes adapted from Introduction to.
Java Camp II (Jun th ) Instructor: Dr. Chengcui Zhang TAs: Sangita Pillay: Soma.
Georgia Institute of Technology Speed part 4 Barb Ericson Georgia Institute of Technology May 2006.
Georgia Institute of Technology Speed part 1 Barb Ericson Georgia Institute of Technology May 2006.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
11 Computers, C#, XNA, and You Session 1.1. Session Overview  Find out what computers are all about ...and what makes a great programmer  Discover.
Georgia Institute of Technology Introduction to Programming Part 1 Barb Ericson Georgia Institute of Technology Aug 2005.
11 Making Decisions in a Program Session 2.3. Session Overview  Introduce the idea of an algorithm  Show how a program can make logical decisions based.
Introduction to CSCI 1311 Dr. Mark C. Lewis
Creativity of Algorithms & Simple JavaScript Commands
The Study of Computer Science Chapter 0
JavaScript/ App Lab Programming:
Introduction to Programming with Java
Introduction to Programming Part 1
CS 141 Introduction to Computer Science and Structured Programming
Vocabulary Algorithm - A precise sequence of instructions for processes that can be executed by a computer Low level programming language: A programming.
Introduction to Programming Part 2
CSCI-235 Micro-Computer Applications
Common Problem… Not for the beginning of the year.
The Study of Computer Science Chapter 0
A451 Theory – 7 Programming 7A, B - Algorithms.
Application Development Theory
Computational Thinking in the Classroom
Introduction CSE 1310 – Introduction to Computers and Programming
Introduction to Programming
Introduction to Problem Solving and Programming CS140: Introduction to Computing 1 8/19/13.
Teaching Computing to GCSE
The Study of Computer Science
Introduction to Programming Part 1
Computational Thinking
Lesson 2 Programming constructs – Algorithms – Scratch – Variables Intro.
Lesson 1: Fundamentals of Programming
UNIT 3 CHAPTER 1 LESSON 4 Using Simple Commands.
Introducing the Ideas One of Six Traits:
Computational Thinking for KS3
Introduction to Programming Part 2
Programming.
Algorithm and Ambiguity
Study Skills for School Success! Session 3
The Study of Computer Science
Introduction to Java, and DrJava
Tonga Institute of Higher Education IT 141: Information Systems
ICT Gaming Lesson 2.
Tonga Institute of Higher Education IT 141: Information Systems
An Introduction to Programming with C++ Fifth Edition
Tonga Institute of Higher Education IT 141: Information Systems
Introduction to Java, and DrJava part 1
Chapter 1 Introduction to Programming
1.3.7 High- and low-level languages and their translators
Tonga Institute of Higher Education IT 141: Information Systems
The Study of Computer Science Chapter 0
Presentation transcript:

Workshop for Programming And Systems Management Teachers Chapter 1 Introduction to Programming Georgia Institute of Technology

Georgia Institute of Technology Learning Goals Understand at a conceptual level What is a computer? What is a program? Why learn to program? What is hard about learning to program? What is hard about teaching programming? Strategies for teaching programming Georgia Institute of Technology

Georgia Institute of Technology What is a Computer? A device that performs high-speed mathematical and/or logical operations or that assembles, stores, correlates, or otherwise processes information. The first computers were people who did computations The picture shows the Harvard Computers which were women who did astronomical computations at Harvard University. See http://cannon.sfsu.edu/~gmarcy/cswa/history/pick.html See http://cannon.sfsu.edu/~gmarcy/cswa/history/computers.html See http://www.maxmon.com/history.htm and http://ei.cs.vt.edu/~history/TMTCTW.html for some of the history of computers See http://www.softlord.com/comp/ for a history of computers. See http://www.cs.colorado.edu/~lindsay/talk/index.html for some computers you may not be familiar with. Also see http://www.computer50.org/kgill/transistor/trans.html. Georgia Institute of Technology

Georgia Institute of Technology What is Programming? Creating detailed instructions that a computer can execute to accomplish some task. Like writing a recipe for your favorite dish Or giving someone directions to your house Or making a robot do what you want Put your favorite recipe on the coweb (http://coweb.cc.gatech.edu/ice-gt/). See if someone else can follow the directions. Write down the directions to your house. See if someone else can follow them to find it. Use LEGO Mindstorms RIS to build a robot and use Robocode to program it. Georgia Institute of Technology

Georgia Institute of Technology Early Programming Early computers required the programmer to set switches and move wires Which represented a series of 1’s and 0’s Later computers were programmed using punched cards The punch cards had first been used to program looms for weaving see http://www.maxmon.com/punch1.htm. For a short history of programming see http://www.princeton.edu/~ferguson/adw/programming_languages.shtml. Georgia Institute of Technology

Georgia Institute of Technology Language Evolution Early languages were based on how to do instructions on each machine 1’s and 0’s to add, subtract, read, store, etc Assembler allowed you to write programs using names for instructions and memory But still translated into machine language Higher-level languages Are compiled into machine language or virtual machine language Georgia Institute of Technology

Georgia Institute of Technology Java Developed at Sun in the early 1990s Invented by James Gosling Similar to C++ in syntax but easier to use Java is C++ -- Cross-platform, object-oriented language Used in business, science, and education One of the fastest adopted technologies of all time For more information on Java see http://www.cs.iastate.edu/~leavens/ComS541Fall97/hw-pages/history/Java.html. See http://java.sun.com/docs/books/tutorial/getStarted/application/ for a sample program. See http://java.sun.com/ for Sun’s Java web site. It has documentation and tutorials. See http://java.sun.com/people/jag/ for more on James Gosling. Georgia Institute of Technology

Georgia Institute of Technology Which Language? All high-level languages are eventually translated into machine language You can write the same program in any language The computer doesn’t care what high-level language you use The language matters to the programmer How long does it take to write the program? How hard is it to change the program? How long does it take to execute? Georgia Institute of Technology

Why Don’t We Just Use English? English is good for communication between two intelligent humans Even then we sometimes don’t understand Computers are very stupid They basically know how to add, compare, store, and load Programs are very detailed instructions Everything must be precise and unambiguous Georgia Institute of Technology

Georgia Institute of Technology Programming Exercise Write down instructions for how to make a sandwich Have another group read the directions and do the actions stop anytime anything isn’t clear and ask for clarification Try doing other direction exercises. Write down directions for how to get to a classroom in the school. Write down directions for how to use a computer program. Georgia Institute of Technology

Georgia Institute of Technology Why Learn to Program? Alan Perlis, first head of Carnegie Mellon's Computer Science Department, made the claim in 1961 that computer science, and programming explicitly, should be part of a liberal education Seymour Papert claimed in the 70’s and 80’s that learning to program is “learning to think, and debug one’s own thoughts.” If you learned to program, you learned to plan, to debug, to handle complexity, etc. Twenty years of research found that that is simply not true. Most people don’t learn to program One reason given for studying computer programming is to teach high-level thinking skills. See http://www-2.cs.cmu.edu/afs/cs.cmu.edu/Web/csd/perlis.html and http://www.cs.yale.edu/homes/perlis-alan/quotes.html for information on Alan Perlis. See http://www.papert.org/ for information on Seymour Papert. Georgia Institute of Technology

What CS Education Research Tells Us Most people don’t learn to program in one semester Alan Perlis, “Most people find the concept of programming obvious, but the doing impossible.” Many people find CS classes boring and irrelevant Most people can’t transfer what they learn in programming Students have a hard time putting statements together to accomplish a task Students learn much less than teachers think they will Studies at Yale and Georgia Tech show most people can’t write a program to read numbers, total them and average them after one semester. Soloway, Guzdial, McCracken et al., 2001 The most common problem with computer science classes today is that they’re viewed as irrelevant (Margolis & Fisher, AAUW). Study of Basic programmers in 80’s asked students to print the numbers 1 to 10. They could figure out the things they would need but not how to put them together. Georgia Institute of Technology

Georgia Institute of Technology So, Why Learn to Program? The computer is the most amazingly creative device that humans have ever conceived of. If you can imagine it, you can make it “real” on a computer. Computers will continue to have a major impact on modern life Movies, games, business, healthcare, science, education, etc Computers are used to do animation and special effects in movies. Computer gaming is a growing industry. Computers are used throughout the business world. Computers are used to improve healthcare and reduce errors. Computers are used to do simulations and calculations in science. There is a computer on the Mars Rover that controls it. Georgia Institute of Technology

Computers Are Commonplace Computers, or at least processors, are in many common devices See http://electronics.howstuffworks.com/cell-phone7.htm for how cell phones work. Georgia Institute of Technology

Programming is Communicating Alan Perlis, “You think you know when you can learn, are more sure when you can write, even more when you can teach, but certain when you can program.” Georgia Institute of Technology

What is Hard About Programming? It is easier to write an incorrect program than understand a correct one – Alan Perlis Beginners have a hard time understanding some of the core concepts Boolean expressions with more than two items if (a < b) is okay if (a < b && c > d) is hard Iteration (loops) Beginners have a hard time putting statements together to accomplish a task Georgia Institute of Technology

Strategies for Teaching Programming Do Live Programming Choose Depth over Breadth Assign Interesting Programs Use Pair Programming Start by Modifying Programs Have Lots of Small Projects Go from Concrete to Abstract Pair programming (programming with two people at the keyboard) really seems to help in CS1 (Laurie Williams) Georgia Institute of Technology

Georgia Institute of Technology Do Live Programming Program in front of the students and talk about what you are doing and why you are doing it Programming is a new and strange activity for most people Talk through the algorithms and how to translate them to code Let them see you make mistakes and fix them Learn by example Programming can be very frustrating to new learners. By showing that you can also have trouble you will encourage them to keep trying. By showing them how to think through the task you are modeling problem solving skills. By showing them how you program you provide an example of how to program. Georgia Institute of Technology

Choose Depth over Breadth Cover difficult topics in depth Cover topics in more than one way Try to get people to connect the concept to something they already know to reduce “brittle knowledge” “Brittle knowledge” is learning something for a class and then forgetting it right after. Georgia Institute of Technology

Assign Interesting Programs A basic problem is that students find programming projects irrelevant Use motivating, relevant examples and projects Games, digital video special effects, animation, graphics, pictures, sound, web pages, simulations Most computer science textbooks start out with math based projects such as a temperature converter, sales tax calculator, or factorial calculation. These assignments aren’t motivating for most students and can frighten away the math phobic ones. You don’t just learn to program. You learn to program “something”. By making the thing you are learning to program interesting you can make it more likely that they will learn it. Georgia Institute of Technology

Georgia Institute of Technology Use Pair Programming Have two students work together on programs They can explain what they are thinking to each other Learn from each other One may be better at typing Reducing frustration In many high school programming classes the students are not required to take typing and it is not even offered in many high schools. Studies have shown pair programming to be a good way to increase learning and reduce errors. It can take more time to get started and there can be personality problems. Georgia Institute of Technology

Start by Modifying Programs Students won’t have to remember everything at once Just focus on the part they are trying to understand Less daunting than starting with nothing Just getting the syntax right is time consuming Reading code is a valuable skill The given code provides a sample of good coding practice Teach by example Gives advanced students something to learn from Georgia Institute of Technology

Georgia Institute of Technology Lots of Small Projects Programming is a skill It takes practice Getting the program to work Is frustrating while you are working on it Rewarding when it works Students take much longer to program than teachers estimate Expert programmers are much, much faster than beginners Georgia Institute of Technology

Go from Concrete to Abstract Use props, live demonstrations, role playing People learn better when you start with concrete things and later introduce abstract ideas Try to link concepts to students lives To make it relevant Reduce brittle knowledge Georgia Institute of Technology

Georgia Institute of Technology Summary Computers are fairly simple machines Fancy calculators with lots of storage But incredibly fast Computers have changed modern life Programs are instructions to a computer to accomplish a task Programs written in high-level languages are translated to machine or assembly language by a compiler Programming is hard to learn But there are some ways to make it easier Georgia Institute of Technology