SlideShare a Scribd company logo
Why Learn Python?
Intro by Christine Cheung
Programming
Programming

How many of you have programmed before?
Programming

How many of you have programmed before?

What is the purpose?
Programming

How many of you have programmed before?

What is the purpose?

 Make - create an app
Programming

How many of you have programmed before?

What is the purpose?

 Make - create an app

 Break - edit an app
Programming

How many of you have programmed before?

What is the purpose?

 Make - create an app

 Break - edit an app

 Understand - how or why does it work?
Okay cool, but why
Python?
Okay cool, but why
Python?
Make - simple to get started
Okay cool, but why
Python?
Make - simple to get started


Break - easy to read and edit code
Okay cool, but why
Python?
Make - simple to get started


Break - easy to read and edit code


Understand - modular and abstracted
Show me the Money
Show me the Money
IT Salaries are up
Show me the Money
IT Salaries are up

  Python is 4th top growing skill in past 3
  months
Show me the Money
IT Salaries are up

  Python is 4th top growing skill in past 3
  months

Average starting Python programmer salary
Show me the Money
IT Salaries are up

  Python is 4th top growing skill in past 3
  months

Average starting Python programmer salary

  70k+
Show me the Money
   IT Salaries are up

       Python is 4th top growing skill in past 3
       months

   Average starting Python programmer salary

       70k+

Sources:
- http://www.readwriteweb.com/enterprise/2011/05/it-hiring-and-salaries-up---wh.php
- http://www.payscale.com/research/US/Skill=Python/Salary
History + Facts
History + Facts

Created by Guido van Rossum in late 80s
History + Facts

Created by Guido van Rossum in late 80s

 “Benevolent Dictator for Life” now at Google
History + Facts

Created by Guido van Rossum in late 80s

  “Benevolent Dictator for Life” now at Google

Fun and Playful
History + Facts

Created by Guido van Rossum in late 80s

  “Benevolent Dictator for Life” now at Google

Fun and Playful

  Name is based off Monty Python
History + Facts

Created by Guido van Rossum in late 80s

  “Benevolent Dictator for Life” now at Google

Fun and Playful

  Name is based off Monty Python

    Spam and Eggs!
Strengths
Strengths
 Easy for beginners
Strengths
 Easy for beginners

   ...but powerful enough for professionals
Strengths
 Easy for beginners

   ...but powerful enough for professionals

 Clean and elegant code
Strengths
 Easy for beginners

   ...but powerful enough for professionals

 Clean and elegant code

   whitespace enforcement
Strengths
 Easy for beginners

   ...but powerful enough for professionals

 Clean and elegant code

   whitespace enforcement

 Many modules and libraries to import from
Strengths
 Easy for beginners

   ...but powerful enough for professionals

 Clean and elegant code

   whitespace enforcement

 Many modules and libraries to import from

 Cross platform - Windows, Mac, Linux
Strengths
 Easy for beginners

   ...but powerful enough for professionals

 Clean and elegant code

   whitespace enforcement

 Many modules and libraries to import from

 Cross platform - Windows, Mac, Linux

 Supportive, large, and helpful community
BASIC
BASIC
10   INPUT A
20   INPUT B
30   C=A+B
40   PRINT C

RUN
C
C
#include <stdio.h>

int main(int argc, char*argv[])
{
    int a,b,c;

    scanf("%d",&a);
    scanf("%d",&b);

    c = a+b;
    printf("%dn",c);
}

$ gcc -o add add.c
$ ./add
C
#include <stdio.h>

int main(int argc, char*argv[])
{
    int a,b,c;
                                  standard input/output
    scanf("%d",&a);
    scanf("%d",&b);

    c = a+b;
    printf("%dn",c);
}

$ gcc -o add add.c
$ ./add
C
#include <stdio.h>

int main(int argc, char*argv[])
{
    int a,b,c;
                                  standard input/output
    scanf("%d",&a);
    scanf("%d",&b);               return types

    c = a+b;
    printf("%dn",c);
}

$ gcc -o add add.c
$ ./add
C
#include <stdio.h>

int main(int argc, char*argv[])
{
    int a,b,c;
                                  standard input/output
    scanf("%d",&a);
    scanf("%d",&b);               return types

    c = a+b;                      scanf limitations
    printf("%dn",c);
}

$ gcc -o add add.c
$ ./add
C
#include <stdio.h>

int main(int argc, char*argv[])
{
    int a,b,c;
                                  standard input/output
    scanf("%d",&a);
    scanf("%d",&b);               return types

    c = a+b;                      scanf limitations
    printf("%dn",c);
                                  compiling
}

$ gcc -o add add.c
$ ./add
C
#include <stdio.h>

int main(int argc, char*argv[])
{
    int a,b,c;
                                  standard input/output
    scanf("%d",&a);
    scanf("%d",&b);               return types

    c = a+b;                      scanf limitations
    printf("%dn",c);
                                  compiling
}
                                  ...and not to mention memory
$ gcc -o add add.c                allocation, pointers, variable types...
$ ./add
Java
Java
import java.io.*;
public class Addup
{
    static public void main(String args[]) {
        InputStreamReader stdin = new InputStreamReader(System.in);
        BufferedReader console = new BufferedReader(stdin);
        int i1 = 0,i2 = 0;
        String s1,s2;
        try {
            s1 = console.readLine();
            i1 = Integer.parseInt(s1);
            s2 = console.readLine();
            i2 = Integer.parseInt(s2);
        }
        catch(IOException ioex) {
            System.out.println("Input error");
            System.exit(1);
        }
        catch(NumberFormatException nfex) {
            System.out.println(""" + nfex.getMessage() + "" is not
numeric");
            System.exit(1);
        }
        System.out.println(i1 + " + " + i2 + " = " + (i1+i2));
        System.exit(0);
    }
}
$ javac Addup.java
$ java Addup
Java
import java.io.*;
public class Addup
{                                                                      classes, arguments
    static public void main(String args[]) {
        InputStreamReader stdin = new InputStreamReader(System.in);
        BufferedReader console = new BufferedReader(stdin);
        int i1 = 0,i2 = 0;
        String s1,s2;
        try {
            s1 = console.readLine();
            i1 = Integer.parseInt(s1);
            s2 = console.readLine();
            i2 = Integer.parseInt(s2);
        }
        catch(IOException ioex) {
            System.out.println("Input error");
            System.exit(1);
        }
        catch(NumberFormatException nfex) {
            System.out.println(""" + nfex.getMessage() + "" is not
numeric");
            System.exit(1);
        }
        System.out.println(i1 + " + " + i2 + " = " + (i1+i2));
        System.exit(0);
    }
}
$ javac Addup.java
$ java Addup
Java
import java.io.*;
public class Addup
{                                                                      classes, arguments
    static public void main(String args[]) {
        InputStreamReader stdin = new InputStreamReader(System.in);
        BufferedReader console = new BufferedReader(stdin);
        int i1 = 0,i2 = 0;
                                                                       input stream, buffer
        String s1,s2;
        try {
            s1 = console.readLine();
            i1 = Integer.parseInt(s1);
            s2 = console.readLine();
            i2 = Integer.parseInt(s2);
        }
        catch(IOException ioex) {
            System.out.println("Input error");
            System.exit(1);
        }
        catch(NumberFormatException nfex) {
            System.out.println(""" + nfex.getMessage() + "" is not
numeric");
            System.exit(1);
        }
        System.out.println(i1 + " + " + i2 + " = " + (i1+i2));
        System.exit(0);
    }
}
$ javac Addup.java
$ java Addup
Java
import java.io.*;
public class Addup
{                                                                      classes, arguments
    static public void main(String args[]) {
        InputStreamReader stdin = new InputStreamReader(System.in);
        BufferedReader console = new BufferedReader(stdin);
        int i1 = 0,i2 = 0;
                                                                       input stream, buffer
        String s1,s2;
        try {
            s1 = console.readLine();                                   variable types
            i1 = Integer.parseInt(s1);
            s2 = console.readLine();
            i2 = Integer.parseInt(s2);
        }
        catch(IOException ioex) {
            System.out.println("Input error");
            System.exit(1);
        }
        catch(NumberFormatException nfex) {
            System.out.println(""" + nfex.getMessage() + "" is not
numeric");
            System.exit(1);
        }
        System.out.println(i1 + " + " + i2 + " = " + (i1+i2));
        System.exit(0);
    }
}
$ javac Addup.java
$ java Addup
Java
import java.io.*;
public class Addup
{                                                                      classes, arguments
    static public void main(String args[]) {
        InputStreamReader stdin = new InputStreamReader(System.in);
        BufferedReader console = new BufferedReader(stdin);
        int i1 = 0,i2 = 0;
                                                                       input stream, buffer
        String s1,s2;
        try {
            s1 = console.readLine();                                   variable types
            i1 = Integer.parseInt(s1);
            s2 = console.readLine();
            i2 = Integer.parseInt(s2);                                 try, catch, exceptions
        }
        catch(IOException ioex) {
            System.out.println("Input error");
            System.exit(1);
        }
        catch(NumberFormatException nfex) {
            System.out.println(""" + nfex.getMessage() + "" is not
numeric");
            System.exit(1);
        }
        System.out.println(i1 + " + " + i2 + " = " + (i1+i2));
        System.exit(0);
    }
}
$ javac Addup.java
$ java Addup
Java
import java.io.*;
public class Addup
{                                                                      classes, arguments
    static public void main(String args[]) {
        InputStreamReader stdin = new InputStreamReader(System.in);
        BufferedReader console = new BufferedReader(stdin);
        int i1 = 0,i2 = 0;
                                                                       input stream, buffer
        String s1,s2;
        try {
            s1 = console.readLine();                                   variable types
            i1 = Integer.parseInt(s1);
            s2 = console.readLine();
            i2 = Integer.parseInt(s2);                                 try, catch, exceptions
        }
        catch(IOException ioex) {
            System.out.println("Input error");                         system.out
            System.exit(1);
        }
        catch(NumberFormatException nfex) {
            System.out.println(""" + nfex.getMessage() + "" is not
numeric");
            System.exit(1);
        }
        System.out.println(i1 + " + " + i2 + " = " + (i1+i2));
        System.exit(0);
    }
}
$ javac Addup.java
$ java Addup
Java
import java.io.*;
public class Addup
{                                                                      classes, arguments
    static public void main(String args[]) {
        InputStreamReader stdin = new InputStreamReader(System.in);
        BufferedReader console = new BufferedReader(stdin);
        int i1 = 0,i2 = 0;
                                                                       input stream, buffer
        String s1,s2;
        try {
            s1 = console.readLine();                                   variable types
            i1 = Integer.parseInt(s1);
            s2 = console.readLine();
            i2 = Integer.parseInt(s2);                                 try, catch, exceptions
        }
        catch(IOException ioex) {
            System.out.println("Input error");                         system.out
            System.exit(1);
        }
        catch(NumberFormatException nfex) {
            System.out.println(""" + nfex.getMessage() + "" is not
                                                                       compiling
numeric");
            System.exit(1);
        }
        System.out.println(i1 + " + " + i2 + " = " + (i1+i2));
        System.exit(0);
    }
}
$ javac Addup.java
$ java Addup
Java
import java.io.*;
public class Addup
{                                                                      classes, arguments
    static public void main(String args[]) {
        InputStreamReader stdin = new InputStreamReader(System.in);
        BufferedReader console = new BufferedReader(stdin);
        int i1 = 0,i2 = 0;
                                                                       input stream, buffer
        String s1,s2;
        try {
            s1 = console.readLine();                                   variable types
            i1 = Integer.parseInt(s1);
            s2 = console.readLine();
            i2 = Integer.parseInt(s2);                                 try, catch, exceptions
        }
        catch(IOException ioex) {
            System.out.println("Input error");                         system.out
            System.exit(1);
        }
        catch(NumberFormatException nfex) {
            System.out.println(""" + nfex.getMessage() + "" is not
                                                                       compiling
numeric");
            System.exit(1);
        }                                                              however, at least you don’t
        System.out.println(i1 + " + " + i2 + " = " + (i1+i2));
        System.exit(0);
                                                                       have to deal with garbage
    }                                                                  collection... :)
}
$ javac Addup.java
$ java Addup
Python
Python
a = input()
b = input()
c = a + b
print c

$ python add.py
More Tech Talking
Points
More Tech Talking
Points
Indentation enforces good programming style
More Tech Talking
Points
Indentation enforces good programming style

  can read other’s code, and not obfuscated
More Tech Talking
Points
Indentation enforces good programming style

  can read other’s code, and not obfuscated

  sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the
  wall"; die map{b."$w,n".b.",nTake one down, pass it around,
  n".b(0)."$w.nn"}0..98
More Tech Talking
Points
Indentation enforces good programming style

  can read other’s code, and not obfuscated

  sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the
  wall"; die map{b."$w,n".b.",nTake one down, pass it around,
  n".b(0)."$w.nn"}0..98


  No more forgotten braces and semi-colons! (less debug time)
More Tech Talking
Points
Indentation enforces good programming style

  can read other’s code, and not obfuscated

  sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the
  wall"; die map{b."$w,n".b.",nTake one down, pass it around,
  n".b(0)."$w.nn"}0..98


  No more forgotten braces and semi-colons! (less debug time)

Safe - dynamic run time type checking and bounds checking on arrays
More Tech Talking
    Points
    Indentation enforces good programming style

         can read other’s code, and not obfuscated

         sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the
         wall"; die map{b."$w,n".b.",nTake one down, pass it around,
         n".b(0)."$w.nn"}0..98


         No more forgotten braces and semi-colons! (less debug time)

    Safe - dynamic run time type checking and bounds checking on arrays


Source
http://www.ariel.com.au/a/teaching-programming.html
Why Learn Python?
Scripting and what else?
Scripting and what else?
Application GUI Programming
Scripting and what else?
Application GUI Programming

  Gtk, Qt, Tk, WxWidgets, and MANY more...
Scripting and what else?
Application GUI Programming

  Gtk, Qt, Tk, WxWidgets, and MANY more...

  IronPython (.NET), Jython (Java)
Scripting and what else?
Application GUI Programming

  Gtk, Qt, Tk, WxWidgets, and MANY more...

  IronPython (.NET), Jython (Java)

Web Frameworks
Scripting and what else?
Application GUI Programming

  Gtk, Qt, Tk, WxWidgets, and MANY more...

  IronPython (.NET), Jython (Java)

Web Frameworks

  Django, Pylons, TurboGears, Zope, ...
Scripting and what else?
Application GUI Programming

  Gtk, Qt, Tk, WxWidgets, and MANY more...

  IronPython (.NET), Jython (Java)

Web Frameworks

  Django, Pylons, TurboGears, Zope, ...

Hardware
Scripting and what else?
Application GUI Programming

  Gtk, Qt, Tk, WxWidgets, and MANY more...

  IronPython (.NET), Jython (Java)

Web Frameworks

  Django, Pylons, TurboGears, Zope, ...

Hardware

  Arduino interface, pySerial
Is it really that perfect?
Is it really that perfect?
Interpreted language
Is it really that perfect?
Interpreted language

  slight overhead
Is it really that perfect?
Interpreted language

  slight overhead

  dynamic typing
Is it really that perfect?
Interpreted language

  slight overhead

  dynamic typing

Complex systems (compute bound)
Is it really that perfect?
Interpreted language

  slight overhead

  dynamic typing

Complex systems (compute bound)

Limited systems
Is it really that perfect?
Interpreted language

  slight overhead

  dynamic typing

Complex systems (compute bound)

Limited systems

  low level, limited memory on system
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?

More Related Content

What's hot (19)

DOC
Final JAVA Practical of BCA SEM-5.
Nishan Barot
 
PPT
Initial Java Core Concept
Rays Technologies
 
PDF
Functional Algebra: Monoids Applied
Susan Potter
 
PPTX
CodeCamp Iasi 10 march 2012 - Practical Groovy
Codecamp Romania
 
PDF
C# - What's next
Christian Nagel
 
PDF
Design Patterns - Compiler Case Study - Hands-on Examples
Ganesh Samarthyam
 
PDF
Kotlin, why?
Paweł Byszewski
 
PPTX
07. Java Array, Set and Maps
Intro C# Book
 
PDF
Java Concurrency by Example
Ganesh Samarthyam
 
PDF
Important java programs(collection+file)
Alok Kumar
 
PPTX
Java simple programs
VEERA RAGAVAN
 
PDF
Java Class Design
Ganesh Samarthyam
 
PPTX
Scala - where objects and functions meet
Mario Fusco
 
PDF
The Magic Of Elixir
Gabriele Lana
 
PDF
Swift internals
Jung Kim
 
PPTX
Unit Testing with Foq
Phillip Trelford
 
PDF
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
Fabio Collini
 
PDF
Network security
babyangle
 
PPTX
TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...
tdc-globalcode
 
Final JAVA Practical of BCA SEM-5.
Nishan Barot
 
Initial Java Core Concept
Rays Technologies
 
Functional Algebra: Monoids Applied
Susan Potter
 
CodeCamp Iasi 10 march 2012 - Practical Groovy
Codecamp Romania
 
C# - What's next
Christian Nagel
 
Design Patterns - Compiler Case Study - Hands-on Examples
Ganesh Samarthyam
 
Kotlin, why?
Paweł Byszewski
 
07. Java Array, Set and Maps
Intro C# Book
 
Java Concurrency by Example
Ganesh Samarthyam
 
Important java programs(collection+file)
Alok Kumar
 
Java simple programs
VEERA RAGAVAN
 
Java Class Design
Ganesh Samarthyam
 
Scala - where objects and functions meet
Mario Fusco
 
The Magic Of Elixir
Gabriele Lana
 
Swift internals
Jung Kim
 
Unit Testing with Foq
Phillip Trelford
 
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
Fabio Collini
 
Network security
babyangle
 
TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...
tdc-globalcode
 

Viewers also liked (20)

PPT
Why I Love Python
didip
 
ODP
Python Presentation
Narendra Sisodiya
 
PDF
Learn 90% of Python in 90 Minutes
Matt Harrison
 
PPT
Learn to Find Your Dream Job with Your Dream Employer with DreamPath
pdx MindShare
 
PDF
From Java to Python: beating the Stockholm syndrome
Javier Arias Losada
 
PDF
How To Find Your Passion by Ben Rosenfeld
Ben Rosenfeld
 
PDF
Ruby vs python
Igor Leroy
 
PPT
Awaken The Giant Within
Aishwarya Bhavsar
 
PDF
Python Programming - I. Introduction
Ranel Padon
 
PDF
Mind, Brain and Relationships
Daniel Siegel
 
PDF
Awaken the giant within
supermaverick
 
PDF
PHP, Java EE & .NET Comparison
Haim Michael
 
PPTX
Comparison of Programming Platforms
Anup Hariharan Nair
 
PPT
Python Programming Language
Dr.YNM
 
PPTX
Python PPT
Edureka!
 
PDF
Jython: Integrating Python and Java
Charles Anderson
 
PPT
Mixing Python and Java
Andreas Schreiber
 
PPT
Introduction to Python
amiable_indian
 
PPT
Lect 1. introduction to programming languages
Varun Garg
 
PDF
Build Features, Not Apps
Natasha Murashev
 
Why I Love Python
didip
 
Python Presentation
Narendra Sisodiya
 
Learn 90% of Python in 90 Minutes
Matt Harrison
 
Learn to Find Your Dream Job with Your Dream Employer with DreamPath
pdx MindShare
 
From Java to Python: beating the Stockholm syndrome
Javier Arias Losada
 
How To Find Your Passion by Ben Rosenfeld
Ben Rosenfeld
 
Ruby vs python
Igor Leroy
 
Awaken The Giant Within
Aishwarya Bhavsar
 
Python Programming - I. Introduction
Ranel Padon
 
Mind, Brain and Relationships
Daniel Siegel
 
Awaken the giant within
supermaverick
 
PHP, Java EE & .NET Comparison
Haim Michael
 
Comparison of Programming Platforms
Anup Hariharan Nair
 
Python Programming Language
Dr.YNM
 
Python PPT
Edureka!
 
Jython: Integrating Python and Java
Charles Anderson
 
Mixing Python and Java
Andreas Schreiber
 
Introduction to Python
amiable_indian
 
Lect 1. introduction to programming languages
Varun Garg
 
Build Features, Not Apps
Natasha Murashev
 
Ad

Similar to Why Learn Python? (20)

PDF
ECSE 221 - Introduction to Computer Engineering - Tutorial 1 - Muhammad Ehtas...
Muhammad Ulhaque
 
PDF
Microsoft word java
Ravi Purohit
 
PPTX
บทที่ 3 พื้นฐานภาษา Java
Itslvle Parin
 
DOC
5 Rmi Print
varadasuren
 
DOCX
All Of My Java Codes With A Sample Output.docx
adhitya5119
 
DOCX
Main Java[All of the Base Concepts}.docx
adhitya5119
 
PDF
Sam wd programs
Soumya Behera
 
PDF
Java programming lab manual
sameer farooq
 
PDF
Java Reference
khoj4u
 
PDF
PSI 3 Integration
Joseph Asencio
 
PPTX
Core java
Uday Sharma
 
PPTX
Lab01.pptx
KimVeeL
 
PPTX
lab programs on java and dbms for students access
Rohit Kumar
 
PPTX
OBJECT ORIENTED PROGRAMMIING LANGUAGE PROGRAMS
Rohit Kumar
 
PPTX
Lab101.pptx
KimVeeL
 
PPTX
Basic pogramming concepts
Anurag Prajapat
 
PDF
java-introduction.pdf
DngTin307322
 
PDF
Java
Sravya221181
 
PDF
Lecture 2 java.pdf
SantoshSurwade2
 
PPTX
Understanding java streams
Shahjahan Samoon
 
ECSE 221 - Introduction to Computer Engineering - Tutorial 1 - Muhammad Ehtas...
Muhammad Ulhaque
 
Microsoft word java
Ravi Purohit
 
บทที่ 3 พื้นฐานภาษา Java
Itslvle Parin
 
5 Rmi Print
varadasuren
 
All Of My Java Codes With A Sample Output.docx
adhitya5119
 
Main Java[All of the Base Concepts}.docx
adhitya5119
 
Sam wd programs
Soumya Behera
 
Java programming lab manual
sameer farooq
 
Java Reference
khoj4u
 
PSI 3 Integration
Joseph Asencio
 
Core java
Uday Sharma
 
Lab01.pptx
KimVeeL
 
lab programs on java and dbms for students access
Rohit Kumar
 
OBJECT ORIENTED PROGRAMMIING LANGUAGE PROGRAMS
Rohit Kumar
 
Lab101.pptx
KimVeeL
 
Basic pogramming concepts
Anurag Prajapat
 
java-introduction.pdf
DngTin307322
 
Lecture 2 java.pdf
SantoshSurwade2
 
Understanding java streams
Shahjahan Samoon
 
Ad

Recently uploaded (20)

PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 

Why Learn Python?

  • 1. Why Learn Python? Intro by Christine Cheung
  • 3. Programming How many of you have programmed before?
  • 4. Programming How many of you have programmed before? What is the purpose?
  • 5. Programming How many of you have programmed before? What is the purpose? Make - create an app
  • 6. Programming How many of you have programmed before? What is the purpose? Make - create an app Break - edit an app
  • 7. Programming How many of you have programmed before? What is the purpose? Make - create an app Break - edit an app Understand - how or why does it work?
  • 8. Okay cool, but why Python?
  • 9. Okay cool, but why Python? Make - simple to get started
  • 10. Okay cool, but why Python? Make - simple to get started Break - easy to read and edit code
  • 11. Okay cool, but why Python? Make - simple to get started Break - easy to read and edit code Understand - modular and abstracted
  • 12. Show me the Money
  • 13. Show me the Money IT Salaries are up
  • 14. Show me the Money IT Salaries are up Python is 4th top growing skill in past 3 months
  • 15. Show me the Money IT Salaries are up Python is 4th top growing skill in past 3 months Average starting Python programmer salary
  • 16. Show me the Money IT Salaries are up Python is 4th top growing skill in past 3 months Average starting Python programmer salary 70k+
  • 17. Show me the Money IT Salaries are up Python is 4th top growing skill in past 3 months Average starting Python programmer salary 70k+ Sources: - http://www.readwriteweb.com/enterprise/2011/05/it-hiring-and-salaries-up---wh.php - http://www.payscale.com/research/US/Skill=Python/Salary
  • 19. History + Facts Created by Guido van Rossum in late 80s
  • 20. History + Facts Created by Guido van Rossum in late 80s “Benevolent Dictator for Life” now at Google
  • 21. History + Facts Created by Guido van Rossum in late 80s “Benevolent Dictator for Life” now at Google Fun and Playful
  • 22. History + Facts Created by Guido van Rossum in late 80s “Benevolent Dictator for Life” now at Google Fun and Playful Name is based off Monty Python
  • 23. History + Facts Created by Guido van Rossum in late 80s “Benevolent Dictator for Life” now at Google Fun and Playful Name is based off Monty Python Spam and Eggs!
  • 25. Strengths Easy for beginners
  • 26. Strengths Easy for beginners ...but powerful enough for professionals
  • 27. Strengths Easy for beginners ...but powerful enough for professionals Clean and elegant code
  • 28. Strengths Easy for beginners ...but powerful enough for professionals Clean and elegant code whitespace enforcement
  • 29. Strengths Easy for beginners ...but powerful enough for professionals Clean and elegant code whitespace enforcement Many modules and libraries to import from
  • 30. Strengths Easy for beginners ...but powerful enough for professionals Clean and elegant code whitespace enforcement Many modules and libraries to import from Cross platform - Windows, Mac, Linux
  • 31. Strengths Easy for beginners ...but powerful enough for professionals Clean and elegant code whitespace enforcement Many modules and libraries to import from Cross platform - Windows, Mac, Linux Supportive, large, and helpful community
  • 32. BASIC
  • 33. BASIC 10 INPUT A 20 INPUT B 30 C=A+B 40 PRINT C RUN
  • 34. C
  • 35. C #include <stdio.h> int main(int argc, char*argv[]) { int a,b,c; scanf("%d",&a); scanf("%d",&b); c = a+b; printf("%dn",c); } $ gcc -o add add.c $ ./add
  • 36. C #include <stdio.h> int main(int argc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); c = a+b; printf("%dn",c); } $ gcc -o add add.c $ ./add
  • 37. C #include <stdio.h> int main(int argc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); return types c = a+b; printf("%dn",c); } $ gcc -o add add.c $ ./add
  • 38. C #include <stdio.h> int main(int argc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); return types c = a+b; scanf limitations printf("%dn",c); } $ gcc -o add add.c $ ./add
  • 39. C #include <stdio.h> int main(int argc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); return types c = a+b; scanf limitations printf("%dn",c); compiling } $ gcc -o add add.c $ ./add
  • 40. C #include <stdio.h> int main(int argc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); return types c = a+b; scanf limitations printf("%dn",c); compiling } ...and not to mention memory $ gcc -o add add.c allocation, pointers, variable types... $ ./add
  • 41. Java
  • 42. Java import java.io.*; public class Addup { static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; String s1,s2; try { s1 = console.readLine(); i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 43. Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; String s1,s2; try { s1 = console.readLine(); i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 44. Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 45. Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 46. Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); try, catch, exceptions } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 47. Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); try, catch, exceptions } catch(IOException ioex) { System.out.println("Input error"); system.out System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 48. Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); try, catch, exceptions } catch(IOException ioex) { System.out.println("Input error"); system.out System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not compiling numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 49. Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); try, catch, exceptions } catch(IOException ioex) { System.out.println("Input error"); system.out System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not compiling numeric"); System.exit(1); } however, at least you don’t System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); have to deal with garbage } collection... :) } $ javac Addup.java $ java Addup
  • 51. Python a = input() b = input() c = a + b print c $ python add.py
  • 53. More Tech Talking Points Indentation enforces good programming style
  • 54. More Tech Talking Points Indentation enforces good programming style can read other’s code, and not obfuscated
  • 55. More Tech Talking Points Indentation enforces good programming style can read other’s code, and not obfuscated sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall"; die map{b."$w,n".b.",nTake one down, pass it around, n".b(0)."$w.nn"}0..98
  • 56. More Tech Talking Points Indentation enforces good programming style can read other’s code, and not obfuscated sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall"; die map{b."$w,n".b.",nTake one down, pass it around, n".b(0)."$w.nn"}0..98 No more forgotten braces and semi-colons! (less debug time)
  • 57. More Tech Talking Points Indentation enforces good programming style can read other’s code, and not obfuscated sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall"; die map{b."$w,n".b.",nTake one down, pass it around, n".b(0)."$w.nn"}0..98 No more forgotten braces and semi-colons! (less debug time) Safe - dynamic run time type checking and bounds checking on arrays
  • 58. More Tech Talking Points Indentation enforces good programming style can read other’s code, and not obfuscated sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall"; die map{b."$w,n".b.",nTake one down, pass it around, n".b(0)."$w.nn"}0..98 No more forgotten braces and semi-colons! (less debug time) Safe - dynamic run time type checking and bounds checking on arrays Source http://www.ariel.com.au/a/teaching-programming.html
  • 61. Scripting and what else? Application GUI Programming
  • 62. Scripting and what else? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more...
  • 63. Scripting and what else? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java)
  • 64. Scripting and what else? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java) Web Frameworks
  • 65. Scripting and what else? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java) Web Frameworks Django, Pylons, TurboGears, Zope, ...
  • 66. Scripting and what else? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java) Web Frameworks Django, Pylons, TurboGears, Zope, ... Hardware
  • 67. Scripting and what else? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java) Web Frameworks Django, Pylons, TurboGears, Zope, ... Hardware Arduino interface, pySerial
  • 68. Is it really that perfect?
  • 69. Is it really that perfect? Interpreted language
  • 70. Is it really that perfect? Interpreted language slight overhead
  • 71. Is it really that perfect? Interpreted language slight overhead dynamic typing
  • 72. Is it really that perfect? Interpreted language slight overhead dynamic typing Complex systems (compute bound)
  • 73. Is it really that perfect? Interpreted language slight overhead dynamic typing Complex systems (compute bound) Limited systems
  • 74. Is it really that perfect? Interpreted language slight overhead dynamic typing Complex systems (compute bound) Limited systems low level, limited memory on system

Editor's Notes