An introduction to Programming - University of Texas at Dallas

An introduction to Programming - University of Texas at Dallas

Welcome to Metroplex Math Circle & UT Dallas CS department! An enjoyable introduction to Programming Dr. Jeyakesavan Veerasamy CS faculty, University of Texas at Dallas Email: [email protected]

Website: Agenda Difficulties in attracting students to STEM careers & specifically CS - what can we do? Fundamental concepts in Programming Demos using Alice, Khan Academy, Scheme, and Greenfoot.

Best ways to make learning enjoyable & efficient Future plans @ UT Dallas Difficulties in attracting students to STEM careers in USA When was the last time you had Engineer check-up?

STEM jobs have serious problem relating to. Children want to see the jobs in action! They see lots of others at work: Doctor, pilot, flight attendant, plumber, fire-fighter, painter, server, rarely they see an Engineer at work! Only 4% of high school students enter STEM fields, in spite of low unemployment rate.

Issues specific to Computer Science Compared to other STEM areas, CS is harder to relate to! Myth Programming uses tons of math! Myth Programmer sits in front of computer all day! A typical school kid needs to say I hate math every day to keep the circle of friends Majority of girls seem to think Programming is

100% logic breaking your head all day - it is hard to be passionate about! Programming is introduced in hap-hazard manner in schools complicating the scenario further. Issues for College Freshmen in CS Considerable % of students find 1st programming course as painful experience.

They loose confidence quickly and change majors never come near CS building again end up in low paying jobs! Reality it is hard to learn Java/C/C++ directly, even with a great instructor. Wrong approach and mediocre instructor together turn away lots of students

A few bright spots in recent years Fear of outsourcing is slowly coming down. Finally, we have a few things that younger generation can relate to: Mobile applications Game development Web applications

Issues with STEM education in India Parents advice: Doctor or Engineer or Doomed Good % of students in CS/Engg. because of parents! Majority of school students excel in memorization. Students take the path of least resistance & refuse to do logical thinking. Instead of dealing with syntax errors, they

memorize 10 to 20 programs every semester and hope for 1 or 2 of them to be in the exam Lack of meaningful plans and qualified faculty Why learn programming? It is really technical common sense! Software Engineers get great pay! Less stressful compared to several other high paying

jobs - ok to do mistakes & learn from them Computer touches our lives more & more every day it is good to know programming, even if you are in other fields. More component based programming always room for simple programs to do big tasks! Software design focuses more on integration now, than writing everything from scratch.

Analogy: Learning to ride bicycle Difficulties for beginners: Learning to balance & go forward together Difficulties for experienced folks: Nothing specific.

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 Solution Visual Programming Tools to teach programming concepts without encountering

syntax errors. Focus on the logic first & build confidence. Free Visual Programming Tools Tool Alice 2.3 Scratch Snap!

Provider Web-site Carnegie Mellon University MIT UCBerkeley Lego MindStorm Lego Several more A few bit advanced tools Tool Alice 3.1 Provider Web-site

Carnegie Mellon University JavaScript Khan Academy Racket UCBerkeley Greenfoot Ukent Several

more Programming Concepts based on every day activities A few examples

Recipe to make favorite food Assembly instructions for a toy Getting ready in the morning to go to school What is common about these activities? Sequence Programming concepts:

Sequence structure instruction 1; instruction 2; instruction 3; A few more examples Go to movie or study?

Eat salad or sandwich? Go to job or go for higher studies? What is the common thing here? Selection or IF statement 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? Repetition / Loops 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? 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? 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 manufacturing industry

Alice demo Sample program in Snap 4.0 Program Output KhanAcademy Demo

Greenfoot Demo 10 ways to make learning to program enjoyable & efficient! 1. Take time to learn! Each person may learn at different pace.

Each person has a different learning style. Learning C/C++/Java directly is NOT recommended. What is the hurry? If everything looks cryptic, you are going too fast! 2. Utilize examples Instead of writing all the code from scratch, it

is good to look at a few examples. Also, majority of the learners prefer to look at examples instead of reading a manual. 3. Use a good IDE IDE stands for Integrated Development Environment Examples: MS Visual Studio, NetBeans,

Eclipse, jGRASP, DrJava, BlueJ, Good IDE takes care of mundane things and makes programming enjoyable! 4. Plan before you code You can be slow and steady or race and burn It is common for experienced designers to do

race and burn before reverting back to slow and steady Make a practice of writing high level pseudo code before coding unfortunately, this is not insisted in most programming courses! 5. Learn with a friend Learning in a group setting is preferred, if not,

try to learn with a friend. Discuss ideas and help each other when you get stuck. Enables you to work on a team assignment Self-paced learning alone is not for every one. It requires lot of self-discipline & it is not much fun!

6. Mimic an interesting game/feature It is easier to focus on implementation when functionality is clearly understand. It is easy to relate to. 7. Have a time-discipline I encourage you to fix the issues on your own, but do not spend >30 minutes on any one

issue. Ask for help! If not, your frustration level will increase & confidence will go down. 8. Implement a useful app/game It increases your confidence level. You can be proud of your work.

Future Plans Current Status In the past year, we have conducted Introduction to programming using Java Advanced problem solving using Java Enjoyable introduction to programming using Alice CHAMPS problem solving camp using Alice

programming competitions I want to develop an array of courses to help the school students in our area. Enjoyable series of courses Enjoyable Introduction to Programming using Alice

Scratch SNAP Pictures Music Animation Robotics

Games Next level programming courses

Java C/C++ Python Mobile app development Game development

Advanced level Problem solving & algorithms Programming competitions

Advanced game development Sophisticated Mobile app development Suggested courses for a typical student One or two courses from Enjoyable series One introductory course

One advanced course Important links My email: [email protected] My web page: Alice workshop materials:

Subscribe to Google group [email protected] to get the announcements about upcoming courses. Thanks for listening! It is time for Questions & Answers!!

Recently Viewed Presentations

  • Cortana Skills Development

    Cortana Skills Development

    A skill is a unit of conversational intelligence that enables Cortana to help users using your services. Developers (i.e. you!) register this intelligence with Cortana using the Cortana Skills Kit. Users speak with Cortana to use these new capabilities.
  • MDC-B353: Comparing Windows ServerHyper-V & VMware vSphere

    MDC-B353: Comparing Windows ServerHyper-V & VMware vSphere

    2 ARP Spoofing, DHCP Snooping Protection & Virtual Port ACLs require the App component of VMware vCloud Network & Security (vCNS) product or a Partner solution, all of which are additional purchases 3 Trunking VLANs to individual vNICs, Port Monitoring...
  • State of Tennessee

    State of Tennessee

    The Plan is self-insured. All claims are paid through the combined premiums of our members and any contributions that employers make toward monthly premiums. The State is the plan administrator rather than an insurance company.

    CHPATER 03 E-MARKETING: MECHANISMS AND TOOLS MBA 61062: E-Commerce by S. Sabraz Nawaz. At , you can find a list of several penny auction companies. Some companies allow the auction's unsuccessful bidders to use all their bidding fees toward a purchase of items at regular or...
  • Value Engineering Tools for Contractor Support

    Value Engineering Tools for Contractor Support

    To locate the AMSC go under "WebFLIS Output Selection Views" click on "select all", then put the NSN in the NIIN/NSN field, then click "Go". Under the tab "MOE Rule Coded" is AMSC. RPPOB is not available on NSNs with...
  • Chapter 2 The Historical Development of Captialism

    Chapter 2 The Historical Development of Captialism

    The Importance of Historical Processes The present economic landscape can only be understood as the result of an historical process Decisions to site production facilities "yesterday" produce the spatial pattern that is the foundation for trade and patterns of consumption...
  • The Byzantine Empire - Miami-Dade County Public Schools

    The Byzantine Empire - Miami-Dade County Public Schools

    The Byzantine Empire Political Having one ruler as a supreme authority prevented the empire into breaking into smaller kingdoms. The loss of many populated and rich provinces reduced its power. The Byzantines encountered new enemies in the northern and southern...
  • The Moon - Mr. Gittermann

    The Moon - Mr. Gittermann

    Moon phases are caused by the Moon's revolution around the Earth and the reflected light of the Sun. Terms: New Moon - we only see the non-illuminated side of the moon. Waxing- the amount of illumination is getting larger (New...