Skill Focus Areas

Programming activity usually falls into one of the following areas. Choose a pathway that matches your needs or suits your personal style. Skills learned in one area often overlap with another. Following one path doesn’t stop you following another later. Instead it means you will pick it up another path more quickly.

Web Development

  • HTML, CSS and Javascript (front end / client side)
  • MySQL, Apache, PHP, and sometimes Python or Perl (back end / server side)
  • SQL Server, IIS, C#, also known as ASP.Net (back end / server side)


Desktop Application Development

  • Java (Platform independent)
  • C# (Microsoft platform)
  • For small flexible and fast development a ‘scripting’ language is useful: Ruby (Mac), Python, Perl.


Database Development

Note that many application and web development projects will require a database.

  • SQL (a language for querying databases in general)
  • MySQL (a platform independent database system)
  • SQL Server (a Microsoft database system)


Mobile App Development

Many mobile development projects are web development with ‘responsive design’ to cater for mobile and tablet.

There are also many systems that enable you to write code in a familiar language, such as C#, Python or Javascript and build for multiple platforms.


Research and HPC

  • Python, Perl or Ruby for rapid prototyping, small and fast quick development, and to get results for research questions without necessarily intending the software for the public to use.
  • R for statistics.
  • C, C++ or Fortran for a High Performance Computing (HPC) environment.


More Detail

Web Development

Within Web Development people generally focus on 'front end' or 'back end' development. Front end development is more about the design and user interface while back end development usually involves database and integration with other systems.

Some knowledge of both is useful as they work in together and the development of each needs to take the other into account. A professional web developer needs an understanding of both, but would typically specialise in one or the other. Front end development is mostly about user interface design, but usually what a website can do is limited without the power of a database, applications and integration behind it.

The essential fundamentals of web development to start with are:

  • HTML
  • CSS
  • Image Optimisation

To set up a website there are a few options:

  1. Use an easy to use DIY website system, like Wordpress or Wix. This option is good if you only want a simple website the displays text, images and embedded media. If you choose this option it is still good to have HTML and CSS skills to get as much control as possible and fix problems.
  2. Set up your own domain name and hosting. Most hosting providers include a database and the ability to use programming languages, as well as other services. Check that your host has what you need before signing up. You will need an FTP client to transfer the code you write to the server. A good FTP client is Filezilla, though you need to be careful to download it from the official website to avoid dodgy clones with adware embedded. Macs have FTP already installed. There are other FTP clients that might be just as good.

Front End Development

  • Javascript (note that the web scripting language Javascript is very different to the compiled programming language Java. Never confuse the two.)
  • JQuery (JQuery makes Javascript easy)

Back End Development

Back End Development is focused on the code and databases that run on the server, as opposed to Javascript which runs on the client computer. The server is usually running a Microsoft or Unix/Linux environment. The Microsoft environment tends to be more favoured by business and large organisations, and the Unix or Linux environment is more independent and popular with tertiary education (this is just a broad generalisation - there are many large scale businesses using the Linux environment and UON has both Linux, Unix and Microsoft environments).

Although things can be mixed and added to, there are some common scenarios for these environments that web developers focus their skill sets on. The environment includes the operating system, server software, database and programming languages.

While a system administrator looks after the operating system and server, a web developer needs a basic understanding of these to work with them. Web developers normally install server software on their own computer, so that it runs as if it were a server and the code can be properly developed and tested (your local server is called "localhost" and it's IP address, by convention, will be If you favour the Linux way, but have a Windows or Mac computer it's fine to install Apache and MySQL on you Windows or Mac for developing, to then upload to a Linux server (OSX is actually a kind of Unix, which Linux was modelled on).

Microsoft environment

  • OS: Microsoft
  • Server: IIS
  • Database: MS SQL Server
  • Popular Language: ASP.Net with C# (.Net)
  • IDE: Visual Studio

Steps to Get Started:

  1. Install IIS
  2. Install Visual Studio Express for Web
  3. Understand how to stop and start IIS and where to put your code.
  4. Do tutorials on ASP.Net with C#
  5. Install MSSQL Server
  6. Do tutorials on SQL
  7. Do tutorials on Entity Framework (for data driven websites)

Linux environment

  1. OS: Unix or Linux
  2. Server: Apache
  3. Database: MySQL
  4. Popular Languages: PHP, Python, Ruby
  5. Popular IDEs: Komodo, Eclipse.

Steps to Get Started:

  1. Install Apache
  2. Install Komodo
  3. Understand how to stop and start Apache and how to make your scripts work.
  4. Do PHP tutorial
  5. Install MySQL
  6. Do tutorials on SQL
  7. Do tutorials on PHP PDO

To use a database you will need to know the basic features of SQL (Structured Query Language). SQL which is a language which is almost the same in all popular databases. Different providers provide different database systems, such as MySQL and MS SQL Server. These are actual databases for storing data. Use the SQL language to 'query' data stored in a database such as MySQL or MS SQL Server. You can do almost everything in SQL with just a few statements: CREATE, UPDATE, INSERT, DELETE, JOIN and WHERE clauses. Combining these basic commands to get exactly the information you need can become very complex.

Other Web Dev Topics

  • Responsive Design
  • Accessibility
  • JSON
  • XML
  • RSS


Desktop Application Development

This is any application that you would install and run on your laptop or desktop computer. Microsoft Word is a desktop application and so it Google Chrome or a game that you download and install.

Usually, desktop applications are written in a 'compiled' language. There is a distinction between 'compiled' languages and 'scripting' languages. The scripting language remains as the text you have written. Whenever you run this file it is 'compiled' at that time and then executed. Scripts are usually small, and run a bit slower than already 'compiled' code.

Compiled programming languages are compiled into an executable, ie: converted into the computer's language. Because compiled code is already in the computer's language, it runs quicker, but you can't read the code in the compiled executable. Large and complex applications are usually built with compiled languages. Because the code we write needs to be converted into an executable in the machines language, it needs a compiler. Normally, you would use an IDE which has a compiler built in. Again there is the Microsoft way, and the alternative way.

Steps to get started:

  1. Decide which language to develop in.
  2. Download the IDE for it:
    • The most popular Microsoft development language is C#. Microsoft provide an excellent IDE for development called Visual Studio. The free version is very powerful and will be all you need to get started.
    • Java is a popular and widespread compiled language. A Java application can be run on a Windows or Mac, usually without needing to modify your code. You will need to download and install the JDK (Java Development Kit). Popular IDEs for Java development include Eclipse and NetBeans.


Database Development

Data can be stored in many ways, in text files, as .csv files, in Excel or XML. If you have a large amount of structured data, especially if the data involves complicated relationships, then you should use a relational database. A relational database is often used in applications to store all the information the application and the user need. It can also be used on it's own, for example, if your research requires gathering and data storage and you only need to query it to find specific answers, rather than provide it as a service to others. Data in these database is manipulated and accessed using Structured Query Language (SQL).

If you just have rows of data, then a .csv file might be enough to store your data. An example of structured data that requires a relational database might be a University administration system. It needs to store information about students so there would be a database table called 'students' and each row would represent a student and there would be a column for student number, firstname, lastname, address, etc. A student can be enrolled in many courses. We would have another table for courses which contains the course code, course name, description, credit points etc. Each course would have a teacher for which there would be another table. The important thing is the relationships in the data are established by linking the tables together. Because they are linked you can run queries, using the SQL, to extract reports on specific questions, such as which students are enrolled in a certain course, or which courses a student is enrolled in, or whether a certain student has the same teacher for more than one course, and so on.

Steps to get started:

MySQL is a relatively easy to use, yet powerful and professional level, database that works on any platform. Make sure you download the version that includes MySQL Workbench, which makes it much easier to interact with your database.

If you are working within a Microsoft .Net environment then use MS SQL Server, and make sure you the Management Studio so it's easier to interact with.


Mobile App Development

The widespread popularity of smaller devices, phones and tablets has created the field of 'app' development. Usually, apps need to be built specifically for the operating system of the device, Apple, Android or otherwise. If you want the app to be on both devices it would need to be modified or rewritten for that environment.

These vendors provide instructions, rules and tutorials on how to develop apps for their systems, and get them into the 'app store' or 'Google play'. They also provide simulators so you can more quickly preview your working app on your computer while you develop, instead of having to transfer it to a device every time you want to test.

To ease the problem of having to rewrite and build for different platforms there are also many systems that enable you to write code in a familiar language, such as C#, Python or Javascript and build for multiple platforms.

Note that many mobile or tablet development projects are web sites with ‘responsive design’ to cater for smaller mobile and tablet screen sizes. This is often cheaper and easier than developing a mobile app.

Steps to get started:

Get the development environment for either Android or Apple:

OR search for a mobile development platform that lets you program in your preferred language and build for multiple platforms.


Research and HPC

Rapid Prototyping and Research Answers:

Software development in research often involves a lot of rapid change and trial and error to get some idea working, to demonstrate feasibility or get answers to research questions, without necessarily intending to provide the software for public use.

'Scripting' (or 'Interpreted') languages, such as Python, Perl and Ruby, which are easy to read, write and to change, are good for small scale, fast and rapidly changing development. These languages are none the less robust and often used in professional contexts.

A scripting language differs to compiled languages like Java, C#, C, C++ and Fortran. A compiled language needs to be 'compiled' into machine language before it can be run. A scripting language doesn't require that step. You just run the file with your human-readable code in it. Scripting languages are fine for many needs but they are slower than compiled languages, so should be avoided where speed is an issue, such as in HPC.

Steps to get started:

  1. One of these languages may already be installed on your computer, especially if it's Apple. Look at one of the tutorials for that language to find out how to check.
  2. If the language isn't installed, download and install it, and follow a tutorial. You will only need a text editor, but one which extra features for autocompleting and highlighting code elements like Komodo is useful.


Much research requires statistical analysis. Often popular and easy to use applications like Excel or commercial statistics applications are all you need. If you want a high level of control to manipulate data and run calculations, the ability to process a lot of data, and output a wide variety of stunning visualisations, try the statistics focused language 'R'.

If you have a lot of research data and it has a complex structure where different information needs to be related in different ways, also look into database development.

Steps to get started:

  1. Download and install R


In a research context there is sometimes a need for processing power and memory beyond the capacity of a desktop or laptop computer. For example if you need to model the stars in a galaxy, the neurons in a part of the brain, or map the entropy of all the texts in Project Gutenberg. In this scenario software can be developed to run in a High Performance Computing (HPC) environment, ie: on servers and networks specifically designed for high speed processing and massive amounts of data.

HPC environments are often provided by Universities or partner research organisations. Code writing style needs to focus on optimisation of resource use and speed. Common languages, used because they are fast if programmed well, in the HPC environment are C, C++ and Fortran.

Steps to get started:

  1. Contact your HPC provider. University IT should be able to help. Ask about getting access and any constraints there might be to run your software.
  2. Choose a language.
  3. There are a variety of Fortran compilers for varieties of Fortran. You could try gfortran
  4. Visual Studio, Eclipse or Netbeans can be used for C or C++

The University of Newcastle acknowledges the traditional custodians of the lands within our footprint areas: Awabakal, Darkinjung, Biripai, Worimi, Wonnarua, and Eora Nations. We also pay respect to the wisdom of our Elders past and present.