Dr Russel Winder's Training Activity

Background

I have been programming for many, many years. My programming language learning sequence has been Fortran, Algol68, Pascal, C, Prolog, C++, Scheme, Miranda, Java, Python, Groovy, Ruby, Scala, OCaml, Clojure, D and Go. I haven't used all these languages for active projects, but they have all influenced the way I program. They also influence the way I teach programming: cross fertilization from one language to another, especially one computational model to another, significantly improves any programmer's programming.

Build tools and programming development support tools have been an interest of mine since almost the moment I started programming. This has meant a lot of scripting programming, especially in Sh, Csh and Bash as I have been Unix and Linux focused for most of my career. Recently though this has meant a fascination with tools such as SCons, Waf, Gradle, Maven, Ant, Rant, Rake, and Gant. Also of course IDEs such as Eclipse, NetBeans, IntelliJ IDEA, PyCharm, Aptana Studio, Android Studio, and WingIDE.

Version control is crucial for any software development project so it is natural to have an interest in these. The arrival of the distributed version control systems (Bazaar, Mercurial, Git, etc.) has been a huge boon to the free and open source software community. Although less of an issue within a corporate environment where centralized systems (Subversion, etc.) involve few inappropriate hurdles, distributed version control systems can improve workflows and make things much easier all round.

Courses

The following are courses that I have available for immediate presentation. I also undertake custom course creation and presentation:

Python Programming Workshop

This course is for people new to programming or who have some programming experience in languages other than Python. It can be presented in 4- or 5-day formats.

Intermediate Python Programming Workshop

This course is for people who have some familiarity with Python, but need to structure their knowledge and use of Python more. This is a collection of modules so can be focused on different aspects of Python. As this is module based, a course of almost any length is possible.

Advanced Python Programming Workshop

This course is aimed at people who use basic Python regularly but wish to extend their knowledge and use into the more sophisticated aspects of Python. This is a collection of modules so can be focused on different aspects of Python. As this is module based, a course of almost any length is possible.

Django Workshop

This course is for people who have some Python knowledge and want to create Web applications using Django, but have no current knowledge of Django. This is normally presented as a 3- or 4-day activity.

Java Programming Workshop

This course is for people new to programming or who have some programming experience in languages other than Java. It can be presented in 4- or 5-day formats.

Intermediate Java Programming Workshop

This course is for people who have some familiarity with Java, but need to structure their knowledge and use of Java more. It is particularly focused on the upcoming Java 8. This is a collection of modules so can be focused on different aspects of Python. As this is module based, a course of almost any length is possible.

Groovy Programming Workshop

This course is for people new to programming or who have programming experience in languages other than Groovy. It can be presented in 4- or 5-day formats.

Intermediate Groovy Programming Workshop

This course is for people who have some familiarity with Groovy, but need to structure their knowledge and use of Groovy more. This is a collection of modules so can be focused on different aspects of Groovy. As this is module based, a course of almost any length is possible.

Concurrency and Parallelism using GPars

This course is for people who know some Groovy and/or Java, introducing them to how to create effective and efficient concurrent and parallel systems on the Java Platform using GPars. This course can be presented in 2- or 3-day formats.

The SCons Build Framework

This is a 1- or 2-day workshop for people interested in learning to use SCons for C++, C, D, Fortran, or LaTeX builds – there are many other languages SCons can build for, but these are the main ones. There are two modes of presentation depending on whether the attenders have Python experience or not.