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, and Go. I haven't used all these languages for active projects, but they 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 mean a fascination with tools such as Waf, SCons, Gradle, Maven, Ant, Rant, Rake, and Gant. Also of course IDEs such as Eclipse, NetBeans and IntelliJ IDEA.
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:
- Introduction to Python Programming This course can be presented in 4- or 5-day formats and focused for people new to programming or who have programming experience in languages other than Python.
- Intermediate Python Programming This course is a collection of modules and so can be focused on different aspects of Python. As this is a module based system a course of almost any length is possible.
- Advanced Python Programming This course is a collection of modules and so can be focused on different aspects of Python. As this is a module based system a course of almost any length is possible.
- Introduction to Java Programming This course can be presented in 4- or 5-day formats and focused for people new to programming or who have programming experience in languages other than Java.
- Introduction to Groovy Programming This course can be presented in 4- or 5-day formats and focused for people new to programming or who have programming experience in languages other than Groovy.
- Concurrency and Parallelism using GPars This course can be presented in 2- or 3-day formats and focused for people who know some Groovy and Java and introduces them to how to create effective and efficient concurrent and parallel systems on the Java Platform.
- The SCons Build Framework This is a one-day workshop. There are two modes of presentation depending on whether the attenders have Python experience or not.