3. Agenda
• Software Development Life Cycle
• Discovering Software Requirements
• Programming Languages
• Choosing a Language
• Software Development
• Software Testing
• What next?
23. 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 Language
o Ambiguous and hard for computer to
understand
27. Useful Criteria
● Best suited to the problem you
are trying to solve
● Widely available
● Widely used
28. ● 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/100
875929141897651837
29. ● 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
30. ● 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/11
6007775542700637383
o Objective-C -
https://plus.google.com/communities/10
3997592872376747208
40. In Summary...
● Learning Software Development involves
a lot more than just learning a
programming language…
41.
42.
43. Aim of this Community
● Build a vibrant community of Software
Professionals
● Help you Learn Software Development via
o Free Programming 101 Sessions
o Low-cost Hands-on Workshops
o Coaching & Mentoring
o Virtual Internships?
44. Recommended Approach
● Find an interesting problem to solve
● Choose a language and learn the
fundamentals and language features
● Practice, practice, practice…..
● Have fun!
45. Other Learning Resources
● Intensive Courses
o http://www.makersacademy.com
o https://generalassemb.ly
● Online courses
o https://www.coursera.org/
o https://www.udacity.com/
o https://developers.google.com/university/
● Online tutorials
o https://www.khanacademy.org/
o http://www.codecademy.com
● Other online resources
o http://www.w3schools.com
o http://learncodethehardway.org/
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 ]
Python - great first language for beginners available on multiple platforms
Ruby - “...focus on simplicity and productivity with an elegant syntax that is natural to read and easy to write” - www.ruby-lang.org
PHP - Usually for web programming and “hackers” language of choice