Tutorials in 2012
Each tutorial are 3.5 hour sessions. They are either Morning (AM) or Afternoon (PM) sessions. If you choose to attend 2 tutorials, you would have to choose one Morning (AM) and one Afternoon (PM) session. Tea-breaks will be served for each tutorial. For those who sign up for 2 tutorials, lunch will also be served.
AM Tutorials
- Python 101 (Friso Kluit)
- Introduction to Game Development (Richard Jones)
- Basic Big Data Analysis (Roy Hyunjin Han)
- Basics of Python Web Development (Senthil Kumaran)
- Redis : A Data Structure Server (Ankur Gupta)
PM Tutorials
- Python 102 (Simon Lau)
- Kinect with Python (Morgan Heijdemann)
- Advanced Big Data Analysis (Roy Hyunjin Han)
- Writing Your First Web App in Python - A Personal Blog (Senthil Kumaran)
Python 101 (Friso Kluit)
This half-day tutorial presents the basics of Python to beginning and intermediate programmers. It pairs well with Python 102 which follows a similar outline but goes much deeper.
Rather than starting with "Hello, world!", we use the interactive Python interpreter shell to get hands-on familiarity with much of core Python before covering blocks and scripts. The tutorial is divided into short sections, each with presentation and hands-on exercises, to quickly cover lots of ground.
Advanced topics are introduced throughout and covered in "extra credit" exercises such that more advanced participants can learn at their own pace.
Intended Audience
Programmers with experience in other languages who want a fast hands-on introduction to Python. Content will target both Python 3.1 and 2.6.
Requirements
Bring a laptop computer with Python 2.6 or 3.1 installed. Try to get as much of an overview of Python before the tutorial as you have time to in order to get more out of the tutorial. Two angles on this are the Python Quick Reference and the Python website's tutorial.
Class Outline
- Numbers and operators
- Strings - immutability, operators, methods, functions, and formatting
- Introspection/Discovery
- Tuples and Lists
- List Comprehensions
- Objects and Names
- Dictionaries
- Loops and Blocks
- Iterables
- Generator Expressions
- Functions
- Generators
- Namespaces
- Simple Classes
- Exceptions
Presenter’s Bio
Friso is a Senior Academic Staff at the School of Information and Communications Technology of Republic Polytechnic, Singapore. In his teaching and research he focuses on programming topics including PHP, Android and Python. Before coming to Singapore, he lived and worked in Maastricht, the Netherlands, where he obtained his Master of Science (Specialization in Artificial Intelligence). Friso is currently the manager of the Technology Development Centre in Open Source Technologies within the School of Information and Communications Technology.
Python 102 (Simon Lau)
This half-day tutorial presents intermediate and some advanced features of Python to beginning and intermediate programmers. It pairs well with Python 101 which follows a similar outline but at a more introductory level. Rather than starting with "Hello, world!", we use the interactive Python interpreter shell to get hands-on familiarity with much of core Python before covering blocks and scripts. The tutorial is divided into short sections, each with presentation and hands-on exercises, to quickly cover lots of ground.
Advanced topics are introduced throughout and covered in "extra credit" exercises such that more advanced participants can learn at their own pace.
Intended Audience
Programmers with experience in other languages who want a fast hands-on introduction to intermediate and some advanced features of Python. Content will target both Python 3.1 and 2.6.
Requirements
Bring a laptop computer with Python 2.6 or 3.1 installed. Try to get as much of an overview of Python before the tutorial as you have time to in order to get more out of the tutorial. Two angles on this are the Python Quick Reference and the Python website's tutorial.
Class Outline
- Numbers and Strings - operators, functions and methods
- Introspection
- Sequences - overview, concepts, and methods
- Objects
- Dictionaries
- Files
- Classes
- Namespaces
- Dynamic Classes
- Iterators and Generators
- Functions
- Exceptions
- Standard Library
Presenter’s Bio
Simon Lau is an Academic Staff at the School of Infocomm in Republic Polytechnic in Singapore. He primarily teaches programming modules in languages such as Java, PHP and Python from Year 1 to Year 3. Before joining RP, he obtained a Masters of Technology (Software Engineering) from the Institute of System Science at the National University of Singapore. He dabbles in Python as a means of creating instructional content for educational purposes as well as a productive tool to ease administrative tasks.
Kinect with Python (Morgan Heijdemann)
In this tutorial you will be trained on using the Kinect in python. You will learn what you, as a python programmer, can do with a Kinect, what type of python wrappers there are. You will then dive into the depth views and the animated skeletons behind the RGB video. We will go through examples that highlight these features and finish with a simple game using the Kinect.
Requirements
If you have a Kinect, bring it along! If you don’t have one, you can use your live feed of skeleton data coming from a Kinect in the training room.
Class Outline
(To be advised)
Presenter’s Bio
Morgan Heijdemann is a senior academic staff at Republic Polytechnics with a strong background in 3D Game Development using C++. Before joining RP, he has been working for over 3 years with Electronic Arts as software engineer on Need For Speed, FifaStreet and others. He has used Python to write tools for the game development pipeline chain and has been using Python in RP for the form facto programming language. In his free time you can find him working on numerous programming projects using Python like the Digibanner, developing MMORPG games with students or working on trend analysing algorithms using Python.
Introduction to Game Development (Richard Jones)
This tutorial will walk the attendees through development of a simple game (how to make a good game) with time left over for some experimentation and exploration of different types of games.
Requirements
Participants should be familiar with Python, and must have pygame version 1.9+ installed. We will not have time to deal with installation and compatibility issues so participants must check their laptops can run pygame applications
Class Outline
The trainer will walk through the practicalities of building a simple video game from scratch, starting with presenting one approach to structuring the game code to keep it sane. He will talk about what libraries are available and then focus on the facilities present in the library used in the tutorial.
He will then walk through the development of a simple game during which the attendees will code the game. Once the game is developed he will talk about potential further development that possibilities and use the remaining tutorial time to encourage and assist attendees in their efforts to do so.
The game developed will cover the key game-writing skills of controlling what appears on the screen (including animation), loading resources, handling user input and simulating the environment within the game.
Presenter’s Bio
Richard writes telco systems by day, games by night. Organiser of PyWeek, PyCon AU and MPUG. But mostly it's about the games.
Basic Big Data Analysis (Roy Hyunjin Han)
Python is the language of choice when it comes to data analysis. This tutorial will present a series of hands-on walkthroughs for machine learning with scikit-learn, time series modelling with pandas, statistical modelling with statsmodels, network analysis with networkx and geospatial analysis with shapely. In addition, it will cover reading and writing numerical data with h5py and geospatial data with geometryIO. Each attendee receives a live usb flash drive containing required packages.
The tutorial will be a series of ten-minute walkthroughs where attendees type commands into their computers. Some exercises will be social to encourage collaboration.
Intended Audience
Attendees should be comfortable with Python.
Attendees from scientific and mathematical backgrounds will benefit the most from this tutorial.
Familiarity with NumPy, SciPy, matplotlib is recommended.
Requirements
The presenter will provide each attendee with a live usb containing a Linux operating system and all required software packages.
Class Outline
- Numpy, SciPy, matplotlib (30 minutes)
- Demonstrate features of NumPy
- Demonstrate features of SciPy
- Demonstrate features of matplotlib
- Machine learning with scikit-learn (30 minutes)
- Walk through a supervised learning example
- Walk through an unsupervised learning example
- Walk through model selection with cross-validation
- Time series modelling with pandas (30 minutes)
- Walk through basic operations on data structures
- Walk through a data manipulation example
- Walk through a data computation example
- Statistical modelling with statsmodels (30 minutes)
- Walk through a regression example
- Walk through basic time series analysis
- Walk through standard statistics computations
- Network analysis with networkx (10 minutes)
- Walk through graph creation, analysis, visualization. (10 minutes)
- Geospatial analysis with shapely (10 minutes)
- Walk through geospatial data creation and analysis. (10 minutes)
- Miscellaneous (10 minutes)
- Walk through reading and writing numerical data with h5py.
- Walk through reading and writing geospatial data with geometryIO.
Presenter’s Bio
Roy Hyunjin Han is a Computational Engineer at CrossCompute, working on mathematical models to help cities run effectively. Previous projects include an electricity infrastructure planning system currently used by countries in Africa and a remote sensing system that finds buildings in satellite images using convolutional neural networks. He holds a M.S. in machine learning and a B.S. in mathematics and neuroscience. He lives in New York.
Previous Experience
- 2012 March, PyCon Santa Clara, CrossCompute is a web platform where users can run algorithms.
- 2011 March, PyCon Atlanta, Introduction to parallel computing on an NVIDIA GPU using PyCUDA.
- 2011 March, PyCon Atlanta, Geospatial computation and visualization cooperative lab.
- 2010 March, O’Reilly Where 2.0 Conference, Finding and connecting people in Africa to infrastructure using remote sensing and geospatial optimization.
- 2010 February, PyCon Atlanta, How Python is guiding infrastructure construction in Africa.
- 2009 November, NYC Seminar and Conference Center, Build and deploy your own document search engine web application from start to finish using Xapian and Pylons on WebFaction.
- 2009 March, PyCon Chicago, Working with geographic information systems in Python.
- 2009 February, Millennium Villages Student Research Showcase, Automatically finding houses in rural satellite images with multiband convolutional neural networks.
- 2008 October, New York Academy of Sciences Machine Learning Symposium, Automatically marking houses in rural satellite images of UN Millennium Villages in Africa.
- 2008 March, PyCon Chicago, Automating Windows applications with win32com.
Open Source Contributions
Here are examples of projects the trainer has released on https://github.com/invisibleroads and PyPI.
- Electricity infrastructure prototyping system used in Ghana and other countries based on work from the Modi Research Group https://github.com/invisibleroads/networkplanner http://october.mech.columbia.edu
- Web service for centralizing geospatial data across applications https://github.com/invisibleroads/georegistry
- Remote sensing image recognition system for satellite images written in Python with LeCun's Lisp-based machine learning library https://github.com/invisibleroads/furtherperception
- Scaffolds with user account management for the Pyramid web application framework http://pypi.python.org/pypi/invisibleroads-scaffolds
- GDAL wrapper for reading and writing geospatial data to a variety of vector formats http://pypi.python.org/pypi/geometryIO
- Convenience decorators for reading and writing to compressed archives http://pypi.python.org/pypi/archiveIO
- Convenience classes and methods for processing IMAP mailboxes http://pypi.python.org/pypi/imapIO
- Methods for formatting and parsing friendly timestamps http://pypi.python.org/pypi/whenIO
Advanced Big Data Analysis (Roy Hyunjin Han)
We will cover machine learning concepts in greater detail and apply them to real-world data using scikit-learn. We will also walk through examples of deep learning with Theano, demonstrate GPU computing with PyCUDA and discuss options for cloud computing. Each attendee receives a live usb flash drive containing required packages.
Intended Audience
- Basic big data analysis hands-on workshop is a recommended prerequisite.
- Attendees should be comfortable with Python.
- Attendees from scientific and mathematical backgrounds will benefit the most from this tutorial.
- Familiarity with NumPy, SciPy, matplotlib is recommended.
Requirements
The presenter will provide each attendee with a live usb containing a Linux operating system and all required software packages.
Class Outline
- Machine learning with scikit-learn (120 minutes)
- Review supervised learning concepts
- Compare supervised learning techniques
- Cover boosting and feature selection to improve performance
- Review unsupervised learning concepts
- Compare unsupervised learning techniques
- Discuss practical considerations when applying machine learning to real-world problems
- Deep learning with Theano (30 minutes)
- Summarize deep learning concepts
- Walk through a supervised learning example
- Walk through an unsupervised learning example
- GPU computing with PyCUDA (15 minutes)
- Summarize GPU concepts
- Walk through GPU computation techniques
- Cloud computing (15 minutes)
- Summarize cloud computing concepts
- Compare cloud computing options
Presenter’s Bio
Roy Hyunjin Han is a Computational Engineer at CrossCompute, working on mathematical models to help cities run effectively. Previous projects include an electricity infrastructure planning system currently used by countries in Africa and a remote sensing system that finds buildings in satellite images using convolutional neural networks. He holds a M.S. in machine learning and a B.S. in mathematics and neuroscience. He lives in New York.
Previous Experience
- 2012 March, PyCon Santa Clara, CrossCompute is a web platform where users can run algorithms.
- 2011 March, PyCon Atlanta, Introduction to parallel computing on an NVIDIA GPU using PyCUDA.
- 2011 March, PyCon Atlanta, Geospatial computation and visualization cooperative lab.
- 2010 March, O’Reilly Where 2.0 Conference, Finding and connecting people in Africa to infrastructure using remote sensing and geospatial optimization.
- 2010 February, PyCon Atlanta, How Python is guiding infrastructure construction in Africa.
- 2009 November, NYC Seminar and Conference Center, Build and deploy your own document search engine web application from start to finish using Xapian and Pylons on WebFaction.
- 2009 March, PyCon Chicago, Working with geographic information systems in Python.
- 2009 February, Millennium Villages Student Research Showcase, Automatically finding houses in rural satellite images with multiband convolutional neural networks.
- 2008 October, New York Academy of Sciences Machine Learning Symposium, Automatically marking houses in rural satellite images of UN Millennium Villages in Africa.
- 2008 March, PyCon Chicago, Automating Windows applications with win32com.
Open Source Contributions
Here are examples of projects the trainer has released on https://github.com/invisibleroads and PyPI.
- Electricity infrastructure prototyping system used in Ghana and other countries based on work from the Modi Research Group https://github.com/invisibleroads/networkplanner http://october.mech.columbia.edu
- Web service for centralizing geospatial data across applications https://github.com/invisibleroads/georegistry
- Remote sensing image recognition system for satellite images written in Python with LeCun's Lisp-based machine learning library https://github.com/invisibleroads/furtherperception
- Scaffolds with user account management for the Pyramid web application framework http://pypi.python.org/pypi/invisibleroads-scaffolds
- GDAL wrapper for reading and writing geospatial data to a variety of vector formats http://pypi.python.org/pypi/geometryIO
- Convenience decorators for reading and writing to compressed archives http://pypi.python.org/pypi/archiveIO
- Convenience classes and methods for processing IMAP mailboxes http://pypi.python.org/pypi/imapIO
- Methods for formatting and parsing friendly timestamps http://pypi.python.org/pypi/whenIO
Redis : A Data Structure Server (Ankur Gupta)
Web users expect response to web request in seconds. Programmers deploy cache, store precomputed results, and try to reduce Disk I/O by keeping data in RAM for fast response. Redis serves as an indispensable tool in every Python web application developers skill set. One that allows them to meet modern web application architecture paradigms. Storage of data in data types formats like string, hash, list, set. Allows for quick replication and persistent storage. In conjunction with multiprocessing module python developers can create fault tolerant distributed software with ease.
This will be a hands-on tutorial where in end user will write and run code snippets on laptop. The session will ramp user all the way from basics to intermediate knowledge of redis using python.
Intended Audience
Prerequisite is basic knowledge of python programming and conceptual knowledge of data structures like list, set, hash. Beginner programmers can attend and understand the content of this session. Those who have worked/working on a web application are best placed to benefit from this session.
Requirements
- Hardware : Laptop required with any distribution of Linux Running,
- Software : Python 2.6/2.7 series needed ( Not Python 3.x )
Class Outline
Basic: (Approx 80 Minutes)
- What is Redis : A Data Structure Server ?
- Overview
- Features
- History/Background.
- Installing and Running Redis
- Installing Python Redis Library redis-py
- Redis Data Structure : Creation, Retrieval, Deletion
- Strings
- Lists
- Sets
- Sorted Sets
- Hashes
Intermediate (Approx 80 Minutes)
- Walk through on Redis Server Options
- Use case (Code Walk Through)
- Web Application Realtime notification backend
- Redis based background queue and multiprocessing based workers
- Live Replication Demo
Presenter’s Bio
Ankur has been involved as a volunteer with PyCon India and Mumbai Python User Group. Speaker at SciPy 2011 (http://scipy.in/scipyin/2011/talks-cfp/conference/#sec2.2), PyCon 2010(http://in.pycon.org/2010/talks/2-gui-programming-using-pyqt) and MumPy User Meet 2011(http://www.slideshare.net/guptaankur/python-performance-101, http://youtu.be/F7Z_IlItTc0).
Ankur started programming at age fourteen in D-Base III Plus. He has a Masters in Computer Application with experience of 5+ years. Has worked at two VC funded startup and Hewlett-Packard. He has programming skills in Python, Django, C, C++, Qt. At HP he developed an Early Warning Software named OSSA. OSSA would parse approx 40 TB worth data in near real time employing a cluster of machines. It would find threshold violations and inform customers before the storage array could be affected. He is currently employed at ThinkLABS a Robotics Startup in India as Software Development Manager. Besides programming he enjoys reading, following the sport of Boxing. His Linkedin Profile http://in.linkedin.com/in/ankurgupta1982.
Basics of Python Web Development (Senthil Kumaran)
This is 2 part tutorial. This tutorial is Part 1 and will cover the basics and Part 2 will address advanced concepts.
Web development is an interesting area in Python. There is a WSGI standard in Python which almost all web frameworks try to adhere to. Understanding the WSGI standards and starting with writing a simple WSGI web application without any framework first will give a good introduction to Web development using Python.
Once this basic understanding is met, introduction to Python web application frameworks like Django, Pyramid and Flask would be presented. The details of database modelling, database design, using Object Relational Mapper would be covered.
The web application is not at all complete without the front-end. We will use a templating language like Django or Mako templates and then add bootstrap CSS and client side Javascript for effects to completely develop your first web application.
An introduction to the Google AppEngine framework and ability to upload your first application to App Engine will give an idea of hosting your web application as well.
Intended Audience
Beginner programmers
Pre-Requisites
- Basic knowledge of Python.
- Non-Python programmers but with web development knowledge in other languages like PHP, Ruby, ASP .net is fine.
Requirements
- A Laptop with Python 2.7 pre-installed.
- Apache Installed.
Class Outline
1st Hour
- Python important modules
- CGI Tutorial
- WSGI Tutorial
2nd Hour
- Using Mod_WSGI and setting up basic Webapp.
- Explaining WSGI.
3rd Hour
- Introduction to Web Frameworks.
- Dissecting the Simple Application written using a Web Framework.
- Uploading that Web Framework to a dummy host.
Presenter’s Bio
Senthil Kumaran is a Software Developer who enjoys programming in Python. http://www.uthcode.com is his programming playground.
Previous experience
Presentations available at http://www.uthcode.com
Writing Your First Web App in Python - A Personal Blog (Senthil Kumaran)
This is 2 part tutorial. This tutorial is Part 2 and will address more advanced concepts associated with Python Web Development.
Web development is an interesting area in Python. There is a WSGI standard in Python which almost all web frameworks try to adhere to. Understanding the WSGI standards and starting with writing a simple WSGI web application without any framework first will give a good introduction to Web development using Python.
Once this basic understanding is met, introduction to Python web application frameworks like Django, Pyramid and Flask would be presented. The details of database modelling, database design, using Object Relational Mapper would be covered.
The web application is not at all complete without the front-end. We will use a templating language like Django or Mako templates and then add bootstrap CSS and client side Javascript for effects to completely develop your first web application.
An introduction to the Google AppEngine framework and ability to upload your first application to App Engine will give an idea of hosting your web application as well.
Intended Audience
Beginner programmers
Pre-Requisites
- Attendance of Part 1 tutorial – “Basic of Python Web Development”
- Basic knowledge of Python.
- Non-Python programmers but with web development knowledge in other languages like PHP, Ruby, ASP .net is fine.
Requirements
- A Laptop with Python 2.7 pre-installed.
- Apache Installed.
Class Outline
1st Hour
- Web Framework Introduction - Django or Pyramid.
- Details of the Framework.
- Explaining MVC.
2nd Hour
- Designing the Blog Schema.
- Writing Database Code.
- Writing the Controllers.
3rd Hour
- Putting together the entire application.
- Using Templates and Bootstrap CSS.
- Adding discus commenting - Javascript.
- Adding Analytics - Javascript
- Uploading to Host. Google Appengine or any other site.
Presenter’s Bio
Senthil Kumaran is a Software Developer who enjoys programming in Python. http://www.uthcode.com is his programming playground.
Previous experience
Presentations available at http://www.uthcode.com

