Outline
● Overview
● Paradigms
● Languages
● Popular Languages
● Choosing a Language
● Learning Resources
● Summary
What is programming?
● Instructing a computer to carry
out a task
● Creative process of turning
ideas into software
● Empowers you to make
computers do anything you
want...?
Why do we program?
● A natural, satisfying and creative experience
● Enables accomplishments previously possible.
● Opens new world of intellectual endeavor
● It is cool, fun and potentially very rewarding
● Anyone can do it!
Natural Language Examples
● Kids Make Nutritious Snacks
● Red Tape Holds Up New Bridge
● Police Squad Helps Dog Bite Victim
● Local High School Dropouts Cut in Half
[ real news paper headlines, compiled by Rich Pattis ]
Generations
● Machine Language (1GL)o Very low level, tedious and error-prone
● Assembly Language (2GL)o Usually specific to a particular processor family and
environment
● High-level Languages (3GL)o Independent of a particular type of computer
hardware
● Fourth Generation Languages (4GL)o Provides a higher level of abstraction than 3GLs
o Closer to natural human languages
● Natural Languageo Ambiguous and hard for computer to understand
Common Features
● Data Types & Structures
● Operators, Conditionals and Loops
● Functions and Procedures
● Exception Handling
Where do you begin?
● Depends on your problem domain
o High performance, low latency applications
o Complex computation and data analysis
o Embedded and control systems
o Enterprise applications
o Dynamic web applications, widgets and APIs
o Computer graphics and animation
o Computer and console games
o Mobile applications and games
Choose a language that is...
● Best suited to the problem you are trying to solve
● Widely available
o Runs on various hardware platforms
o Supports multiple operating systems
● Widely used
o Large, active community
o Readily available libraries and frameworks
Source: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Source: http://sogrady-media.redmonk.com/sogrady/files/2014/01/lang-rank-114-wm.png
● Problem Domains
o High performance applications
o Complex computations
o Embedded systems
o Computer and console games
o Mobile applications and games
● Communities
o C - http://www.cprogramming.com
o C++ -
https://plus.google.com/communities/1
16007775542700637383
o Objective-C -
https://plus.google.com/communities/1
03997592872376747208
● Problem Domains
● Client/server applications and APIs
● Mobile applications and games
● Communities
o http://www.meetup.com/Londonjavaco
mmunity/
o http://www.csharpforums.net
o http://androidcommunity.com
● Problem Domains
o Dynamic web sites and applications
o Web Plugins and widgets
o Web based games
o Automation of system admin tasks
o Popular choices for learning
programming
● Communities
o http://phpcommunity.org
o https://www.python.org/community/
o https://www.ruby-
lang.org/en/community/
o https://plus.google.com/communities/1
00875929141897651837
Learning Resources● Intensive Courses
o http://www.makersacademy.com
o https://generalassemb.ly
● Online courseso https://www.coursera.org/
o https://www.udacity.com/
o https://developers.google.com/university/
● Online tutorialso https://www.khanacademy.org/
o http://www.codecademy.com
● Other online resourceso http://www.w3schools.com
o http://learncodethehardway.org/
Aim of this Meetup Group
● Help you to Learn Computer Programmingo Programming 101: Fundamentals
o Programming 201: Hands-on Workshops
o Coaching & Mentoring
● Build a fun and vibrant community of
passionate programmers
Recommended Approach
● Find an interesting problem to solve
● Choose a language and learn the
fundamentals and language features
● Practice, practice, practice…..
● Have fun!
● ...is really not just about learning a
language
● Computer Programming in general
involves a lot more…
In Summary...