An “enjoyable” introduction to Programming Dr. Jeyakesavan Veerasamy The University of Texas at Dallas, USA Alice.

Slides:



Advertisements
Similar presentations
An enjoyable introduction to Programming Dr. Jeyakesavan Veerasamy CS faculty, University of Texas at Dallas Website:
Advertisements

Programming Basics using Real-life examples Dr. Jeyakesavan Veerasamy CS faculty, UT Dallas, USA
Microsoft® Small Basic
1 ICS102: Introduction To Computing King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science.
PIIT Computer Science Summer Camp - Alice July 10, 2012 Brenda Parker Computer Science Department MTSU.
Welcome to C++ Programming Workshop at The University of Texas at Dallas Presented by John Cole July 8-12, 2013.
COMPUTER PROGRAMMING I Understand Problem Solving Tools to Design Programming Solutions.
Lets Play Catch! Keeping Score in Alice By Francine Wolfe Duke University Professor Susan Rodger May 2010.
Programming with Alice Computing Institute for K-12 Teachers Summer 2011 Workshop.
Week 5: Loops 1.  Repetition is the ability to do something over and over again  With repetition in the mix, we can solve practically any problem that.
Chapter 1 - An Introduction to Computers and Problem Solving
Computer Programming Rattapoom Waranusast Department of Electrical and Computer Engineering Faculty of Engineering, Naresuan University.
Repetition Structures
What is computer science and how can it be helpful in our lives? Introduction to the Art of Computer Science.
An “enjoyable” introduction to Programming Dr. Jeyakesavan Veerasamy Senior Lecturer University of Texas at Dallas
Chapter 2: Algorithm Discovery and Design
Introduction to Alice Basics : What is Alice? Object Oriented Definitions What Does it Look Like? Where Can I Use it?
Chapter 2: Algorithm Discovery and Design
Chapter 3 Planning Your Solution
Alice: A Free 3D Animation World for Teaching Programming Barbara Ericson Georgia Institute of Technology Oct 2005.
Gentle Introduction to Programming in Java Dr. Jey Veerasamy 1.
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
Line up By Melissa Dalis Professor Susan Rodger Duke University June 2011.
JS Arrays, Functions, Events Week 5 INFM 603. Agenda Arrays Functions Event-Driven Programming.
CC0002NI – Computer Programming Computer Programming Er. Saroj Sharan Regmi Week 7.
Programming Logic Program Design. Objectives Steps in program development Algorithms and Pseudocode Data Activity: Alice program.
Abstraction IS 101Y/CMSC 101 Computational Thinking and Design Tuesday, September 17, 2013 Carolyn Seaman University of Maryland, Baltimore County.
Tutorial for Arrays and Lists By Ruthie Tucker. Description This presentation will cover the basics of using Arrays and Lists in an Alice world This presentation.
Extended Prelude to Programming Concepts & Design, 3/e by Stewart Venit and Elizabeth Drake Chapter 2: Developing a Program.
Why do robots need to move?
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Arrays. Arrays: Introduction So far, we handled only one object in each line of code. When we wanted multiple objects to do something, we wrote multiple.
Study Guide For Test Chapter 5, 6,& 7 Test is Friday, May 15th.
MOM! Phineas and Ferb are … Aims:
Invitation to Computer Science, Java Version, Second Edition.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Abstraction IS 101Y/CMSC 101 Computational Thinking and Design Tuesday, September 17, 2013 Marie desJardins University of Maryland, Baltimore County.
By the end of this session you should be able to...
Game Programming in Java Dr. Jeyakesavan Veerasamy CS faculty, The University of Texas at Dallas Website:
Programming for Beginners Martin Nelson Elizabeth FitzGerald Lecture 5: Software Design & Testing; Revision Session.
Overview of this morning What … is computing? Why … is computing an important skill to learn? What … will my child be learning in computing lessons?
Conditions. Objectives  Understanding what altering the flow of control does on programs and being able to apply thee to design code  Look at why indentation.
Problem Solving Techniques. Compiler n Is a computer program whose purpose is to take a description of a desired program coded in a programming language.
© Jalal Kawash Programming Peeking into Computer Science 1.
Sample Video Game & Sound. The Plan 1.Game Theme 2.Game Structure 3.Sprites 4.Trackers 5.Collisions 6.Score 7.Levels 8.Splash Screens 9.Design 10.Implementation.
Piñata Game: Keeping Score in Alice By Maggie Bashford Professor Susan Rodger Duke University July
Mathematical Expressions, Conditional Statements, Control Structures
Advanced Work with Embedded and Summative Assessment Dr. Steve Broskoske Misericordia University EDU 533 Computer-based Education.
Can I get your number? By Melissa Dalis Professor Susan Rodger Duke University June 2011.
Tutorial for Arrays and Lists. Description This presentation will cover the basics of using Arrays and Lists in an Alice world It uses a set of chickens.
An “enjoyable” introduction to Programming Dr. Jeyakesavan Veerasamy CS faculty, The University of Texas at Dallas Website:
Data Structure Introduction Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2010.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
5 Event Handling Interactive Programming Suggested Reading Interaction: Events and Event Handling, Supplemental Text for CPSC 203 Distributed this term.
Algorithms and Pseudocode
Progression in KS3/4 Algorithms MONDAY 30 TH NOVEMBER SUE SENTANCE.
Getting Started With Python Brendan Routledge
Algorithms and Flowcharts
Understand Problem Solving Tools to Design Programming Solutions
An “enjoyable” introduction to Programming
Understand Problem Solving Tools to Design Programming Solutions
Introduction to Programmng in Python
CS 240 – Lecture 11 Pseudocode.
An Introduction to VEX IQ Programming with Modkit
Programming We have seen various examples of programming languages
Algorithm and Ambiguity
PYTHON: BUILDING BLOCKS Sequencing & Selection
Module 4 Loops and Repetition 9/19/2019 CSE 1321 Module 4.
Presentation transcript:

An “enjoyable” introduction to Programming Dr. Jeyakesavan Veerasamy The University of Texas at Dallas, USA Alice 2.2 Software: Examples:

What is programming? Developing applications & games Software is not limited to PC – most complex systems run software – smart phones, game devices, even DVD players

Programming … is NOT a boring or repetitive activity does NOT require you to sit in dark room and type in computer all day! does NOT involve complex Math requires logical thinking – technical common sense write minimal code & combine with existing components to build new applications Solve customers’ problems & improves quality of life for every one.

Why learn programming? Software Engineers get great pay! Less stressful compared to several other high paying jobs Automation continues… Computer touches our lives more & more every day… More component based programming  always room for simple programs to do large tasks!

Learning to ride bicycle Difficulties for beginners: Difficulties for experienced folks:

Learning to ride bicycle Difficulties for beginners: – Learning to balance & go forward together Difficulties for experienced folks: – None.

Solution for beginners Training wheels Helmet Makes learning enjoyable and safe! Similar difficulties are there while learning to program in a computer.

Learning to program: Difficulties for beginners

1.Syntax errors struggle for hours to fix syntax errors Loose confidence Frustrating experience Run away & never come back if possible! 2. Logic errors Not a serious issue.

Difficulties for experienced programmers Logic errors Continuous learning

Learning to program Most students try to learn syntax and logic together, waste lot of hours and get confused & frustrated. Indian students resort to memorization of programs. US students run away from programming. Both are NOT good  It is possible to do much better!

Solution Visual Programming Tools to teach programming concepts without encountering syntax errors. Focus on the logic first & build confidence.

Free Visual Programming Tools ToolProviderWeb-site Alice 2.2Carnegie Mellon University, USA ScratchMIT, USAscratch.mit.edu Snap!UCBerkeley, USAbyob.berkeley.edu Lego MindStormLego, USAmindstorms.lego.com Several more…

Sample program in Snap 4.0

Program Output

Programming Concepts

A few examples Recipe to make your favorite food Assembly instructions for a toy Coming to college from home What is common about these activities?

A few examples Recipe to make your favorite food Assembly instructions for a toy Coming to college from home What is common about these activities? Sequence

Programming concepts: Sequence structure instruction 1; instruction 2; instruction 3; …

A few more examples Study at home or play cricket with friends? Eat Parotta or Poori? Go to Vijay’s movie or Karthik’s movie? Go to job or go for higher studies? What is the common thing here?

A few more examples Study at home or play cricket with friends? Eat Parotta or Poori? Go to Vijay’s movie or Karthik’s movie? Go to job or go for higher studies? What is the common thing here? Selection

Selection structure IF condition is true THEN do this; ELSE do that; ENDIF

A few more examples Eat chips from a packet Go on a shopping spree with lot of cash! Take an exam that has several questions What is the common thing here?

A few more examples Eat chips from a packet Go on a shopping spree with lot of cash! Take an exam that has several questions What is the common thing here? Repetition

Repetition structure WHILE (more items to process) process the next item; ENDWHILE FOR month = 1 to 12 do monthly processing ENDFOR

Programming Concepts Structures: Sequence, Selection & Repetition Foundation for Programming Every complex program is only a combination of these structures.

More things we do… Use a box to move lots of things from one room to another Carry a pack of candies to class on your birthday! What is the common thing here?

More things we do… Use a box to move lots of things from one room to another Carry a pack of candies to class on your birthday! What is the common thing here? Collection / Arrays

Arrays enable us to store data of similar type together. enables us to handle varying size data. Lines of code do not increase with more data! FOR each item in array add item to total ENDFOR

Even more things we do… Get phone call when you are driving a car Friend knocks on the door when you are watching a movie What is the common thing here?

Even more things we do… Get phone call when you are driving a car Friend knocks on the door when you are watching a movie What is the common thing here? Interrupts / events

Event driven programming Suspend current processing to process the event, or process it in parallel. “Regular” processing flow & separate processing routine for each event.

Object Oriented Programming (OOP) Models the real-world better Concepts learned from the manufactoring industry

Hands-on Introduction to Alice It is a good idea to save each program separately so that you can go back and review later.

Purpose of Alice Enjoyable introduction to Programming Natural introduction to OOP Learning to program with training wheels Stepping stone to learn more serious languages (C/C++/Java)

Alice environment World Gallery Scene Setup – Adding objects – Working with objects Similar to Scene setup in move-making – Every object needs to be in starting position

Methods & Actions You are welcome to play along with me. Add one object – Test out various movements (moves in 6 directions, turns in 4 ways & roll in 4 ways) Add one more object – Test out relative movements

Program #1: Choose your favorite object from the gallery and test various methods. 10 minutes?

Our first program! Sequence structure do a few interesting actions!

Program #2: Make your object do a few funny actions! 10 minutes?

Program #3 Introduce multiple objects do a few interesting actions!

Program #3: Make your objects do a few funny actions! 15 minutes?

Program #4 Use DO TOGETHER structure Add realism & sophistication!

Program #4: Use DO TOGETHER to do multiple things at same time! 15 minutes?

Program #5 Add Vehicles/Seaplane from local gallery. Make it do loop the loop. Use DO TOGETHER structure – seaplane move forward – seaplane turn backward – seaplane’s propeller roll right Use “style = abruptly” to make the motion smooth

Program #5: Use DO TOGETHER to make the plane do loop the loop! 20 minutes?

Program #6 Introduce repetition – counted loop do a few interesting actions!

Program #6: Make your objects do a few funny actions multiple times! 10 minutes?

Program #7 How to do realistic walking? Leg & body movements Better to do with a human object from “People/Walking People” Write your own methods.

Program #7: Practice human walking/running animation 15 minutes?

Program #8 Walking back and forth between 2 points? Use 2 objects as end-points. What should you do when you get close to those objects?

Program #8: Practice human walking/running back & forth. 15 minutes?

Program #9 Alternate implementation of Program #8 using IF statement Can we use same code for step 1 and step 2?

Program #9: Practice human walking/running back & forth. Use variables and decision structure 15 minutes?

Logical thinking You have been introduced to several building blocks – a few more on the way too. Now, it is all about putting/using them together in various combinations. I encourage you to think in high level, note down a few ideas (design), then proceed to implementation. Direct coding is NOT recommended.

Program #10: Lists/Arrays Arrays cannot expand during run-time, but lists can. Alice supports more functionality with lists too. In simple words, lists are more powerful. Make a list of your favorite objects (multiple copies of an object is ok too!) Make them do something one at a time. Make them do something in random order Make them do something in sync. You are not limited to these - use your imagination!

Program #10: Group & individual dance moves! Use similar objects so that you can work with the parts too. 15 minutes?

Program #11: Events So far, we did everything under “my first method” or we invoked other methods from there. But when it comes to games or complex apps, user may press various buttons/items & we need to respond to each event.

Program #11: We will start with a coach and a ball. Coach keeps doing some exercise. We will use key based events to move the ball to top of his head. Then, coach should stop exercising and do something funny. 15 minutes?

Program #12: Frog’s jumping game! Swimming pool – moving lilypads – make the frog to jump on lilypads carefully and reach other side to win! Make the lilypads to move independently back and forth first. Then, work on the game. If the frog jumps and touches the water, it will sink! I guess this frog does not know to swim  Plan and write the pseudocode first, before coding!

Program #12: Frog jumping game. Discuss/share ideas with your neighbour and help each other to progress … Move frog 0.7 meters forward when up-arrow is pressed. For moving lilypads, use distance (pool width – cricle width) with bit random speed. Use vehicle property to stick to lilypad.

High level idea/pseudocode #1 move the frog by 0.7 meters. IF index is beyond lilypads declare win! ELSE IF frog is close to circles[index] frog is safe set vehicle for frog to corresponding circle ELSE frog dies! – make frog disappear display a message ENDIF increment index

High level idea/pseudocode #2 move the frog by 0.7 meters. IF frog is close to “finish” object, declare win! ELSE IF frog is close to any of the moving circles frog is safe set vehicle for frog to corresponding circle ELSE frog dies! – make frog disappear display a message ENDIF

Transition to C/C++/Java Most of you have become “mature” Alice programmers – you can see the limitations of Alice now. Now that your fundamentals are bit strengthened, this is a great time to get started with C/C++/Java! I encourage you to do the following problems in both languages: Alice and C/C++/Java. Time management is crucial – I encourage you to spend a few hours to solve programming problems periodically to strengthen your skills.

Transition to C/C++/Java: Math Practice program Display 2 random numbers (limit the range for each number to 1-100) and ask the user to multiply manually & input the result. Verify whether the user input is correct. Repeat it for 10 times, keep track of the score and display it in the end like this: Your score: 8 correct, 2 incorrect.

Transition to C/C++/Java: Guessing Game First, guess a number between 1 and 100. Then, your program should ask you a series of questions and determine your guess based on your answers. Question format: How about NN ( )? Write the high level pseudocode, manually verify it before proceeding to code.

Pseudocode initialize low = 1, high = 100 WHILE low < high mid = (low + high) / 2 ask the user how about mid? IF user response is < high = mid-1 ELSE IF user resposne is > low = mid+1 ELSE IF user response is = print great! break; IF low == great print “Your guess is” low ENDIF

Sample run #1 (user input in RED) Guess a number between 1 and 100 (both inclusive) and get ready to answer a few questions. How about 50 ( )? < How about 25 ( )? < How about 12 ( )? > How about 18 ( )? > How about 21 ( )? < How about 19 ( )? > Your guess is 20.

Sample run #2 (user input in RED) Guess a number between 1 and 100 (both inclusive) and get ready to answer a few questions. How about 50 ( )? > How about 75 ( )? < How about 62 ( )? > How about 68 ( )? = Your guess is 68.

Transition to C/C++/Java: Guessing Game Play the reverse game. Computer should guess a number between 1 and 100. Now, you should ask questions & determine that number. C/C++: use srand() and rand() to generate random numbers Write the pseudocode, manually verify it before proceeding to code.

Pseudocode guess = Generate a random number 1 … 100 Ask for user input WHILE user input != guess IF guess < user input output “<“ ELSE output “>” Ask for user input Output “You guessed it right. Good game!”

Sample run I have guessed a number. You can ask questions now. 50 < 25 < 12 > 18 > 21 < 19 > 20 = Good job!

References Alice website: (download Alice 2.2 software) Textbook: Learning to Program with Alice by Wanda Dann, Steve Cooper and Randy Pausch ISBN: Free Ebook: My Alice examples: