Skill Level: Beginner

Having some knowledge of a computer programming language (does not matter which one) can help one save lot of time in the life of the computer modeler. Examples are sorting through a large dataset, making a nice graph, getting several pieces of computer software to work together, pre-and-post-processing for models, etc. While there is no single language that is best for ‘everything’ some languages are better in terms of reaching productivity faster for the casual programmer. Python is such a popular programming language. The language of choice for this course is therefore Python. However, once you learn a programming language, mastering others becomes easy – on in certain sense the language of choice is not that important.

The course is offered during four days without about 24 contact hours. Lecturing will be limited to about 4 hours and rest of the time will be spent on hand-on exercises and demonstrations.

At the end of this course you will be able to:

  1. Explain elements of programming (common to any programming language) 
  2. Write Python program to solve a simple urban water system related problems. (e.g. analysis of a rainfall dataset, plotting a nice graph, handling large text files)
  3. Solve urban modeling problems using python libraries (e.g. Running a drainage model using EPA-SWMM python interface, a water distribution model using EPANET model)
  4. Develop optimization algorithms by integrating models with genetic algorithm libraries. (e.g. Calculating least cost design of a water distribution network)

Focus of the course: will be for those who want to apply computer models in their research. The models covered during classes will be EPA-SWMM5 (urban drainage/sewerage) and EPANET (general water distribution).  Those who are interested in learning how to apply optimization techniques (e.g. population-based metaheuristics, like genetic algorithms, NSGA-II) in their research are also welcome.

What it is not: (a) Python applications in GIS (there is a separate course on this). (b) Advanced software development course (You can teach yourself to be an advanced computer programmer/software developer, this can only provide the start. It takes time and effort.)

Skill Level: Beginner