spacer
School of Computer Science The University of Adelaide Australia
Computer Science Home
Staff Only
text zoom: S | M | L

School of Computer Science
Level 4
Ingkarni Wardli Building
THE UNIVERSITY OF ADELAIDE
SA 5005
AUSTRALIA
Email

Telephone: +61 8 8313 4729
Facsimile: +61 8 8313 4366


You are here: Computer Science > users > outreach> programming

Computer Science and Programming

Computer Science is the study of Computers and the things they can do. Computer Science is what we know about getting computers to solve problems, and express our ideas as running programs.

Computers are Universal Machines which means that we can tell them to prentend to be any machine that does computation. This means the range of machines a computer can be is huge - essentially infinite. The things that a computer can do and a computer can be are limited more by our imaginations and our skills than the capabilities of the machine.

Programming

For a computer do the things we want and become the machine we want we need to tell it what to do. Programming is the art (and science) of building software machines to run on top of a computer. Programming is at the core of computing - the more fluent we are at programming the more free we are to express our ideas as software machines. When we learn Computer Science we learn the basics of programming first but you never stop learning programming - there is always more to know. Three very important things to keep in mind about programming are:
  • Programming is a skill, like playing an instrument, or riding a bike. Like any skill you learn by doing - you learn through practice. When teaching programming a teacher can demonstrate the skills, provide excercises, feedback and guidance. However, ultimately your skill at programming will depend on the time you spend stretching your abilities as a programmer. When it comes to programming, you decide how far you get to go.
  • Programming is creative. Programming solves problems and for any interesting problem there are many good solutions. With experience you can use clever and creative ideas to make new solutions and improve old ones.
  • Programs are an evolving entity. As you design and write your program you discover more about the nature of the problem you are solving. Your programs will evolve to adapt to this new knowledge. Programs grow, they don't pop into existence perfectly formed.
In our introductory courses we emphasise these things. We learn by doing in workshops and in practicals. We emphasise creativity, in our very first course students work in groups to create their own original game, including graphics, in JavaScript.

Starting to Program

Our very first course assumes no programming background but there is no need to wait till university to start learning to program. A lot of people starting programming in high-school and earlier. We recognise this and give people with good programming backgrounds the option of skipping the first course.

If you want to learn programming now it has never been easier to start. There many great resources to get you started and many of them are free. Some resources are:

  • Scratch - a platform for creating colourful stories and games using a graphical programming language. Aimed at programmers starting from primary school. Motto: imagine, program share. Lots of example projects to look at. Available for most platforms. Can be downloaded for free at the scratch homepage.
  • Alice - an environment for building 3D stories and games using a graphical programming language. Aimed at high-school programmers. Many teaching resources including, those provided by our CS For High School Program. Other resources include the Learning to Program with Alice website. Available for most platforms. Can be downloaded for free at alice.org
  • Processing - A programming language and envrionment for creating images, animations and interactions. Designed to serve as a first programming language. Comes with a simple environment and text editor. Has been used to create some beautiful art - see their exhibition link. Can be downloaded at their main site.
  • LEGO NXT - programming language for LEGO Mindstorms robots. Simple and graphical. Works on PC's and Macs. Great exposure to interesting robotics applications and working with sensors. Need to have access to the robot platform to use this properly. The School of Computer Science currently uses a lab with Mindstorm robots (programmed using Java) in its third year software engineering course. See this site for the information about the MINDSTORMS NXT language.
  • Agent Sheets/Agent Cubes - a games programming environment aimed at high-school. Designed for fast and creative prototyping and creation of 3D games and simulations. See here
  • Android App Inventor - A simple programming framework for creating your own android apps. Great first introduction to creating mobile apps. Comes with its own web-based development environment. See the home page (requires a free google account to use the facilities).
There are many other resources. Google's main Computer Science for High School is a great repository of resources. Our local site also has materials that can be used direct by teachers for the South Australian year 11 curriculum. The Python for Non-Programmers site references for getting started with the wonderfully flexible Python programming language. The game development app Codea, developed by a team of ex-Adelaide students, is a great way to develop simple games with an iPad. Finally, the Puzzle-Based Learning site is not strictly a programming resource but provides a broader perspective on problem solving in general. The first Puzzle Based learning course was developed at Adelaide and continues as an integral part of our first year curriculum.

Forums for Programming

The resources above are a great way to start programming creatively for yourself. However, programming can be and should be an interactive and social activity. There are ways to share your ideas and work with others and even compete in contests before reaching University.

The Australian Informatics Olympiad is a forum for high-school students to compete on programming problems. The results of this contest attract national and international interest and are a great way to really improve programming skills. The training site is open all year around. The competition is school-based. If you would like to have your school participate, contact Brad Alexander (the SA state director) or get your teacher to contact him. The NCSS Challenge is a "learn-as-you-go" programming competition in which you will be taught how to program as you compete rather than expecting you to be a coder already. TopCoder hosts a big variety of programming contests including high school contests. The questions range from interesting to challenging. Great for working on your problem solving strategies.

Programming Tips for Beginners

Programming is a skill that is built up over time and there is no substitute for practice and play but there are a few tips that can help you get started with your solutions.

Don't Sweat the Language

There are a huge variety of programming languages out there and many have a lot in common. Don't spend too much time sweating over which language to try first. You won't have to learn the whole language just to try it. Try to do some simple things in a few languages and go with one you like.

Take advantage of examples

When first starting. Look for simple examples that you can start with. Many platforms have a gallery of nice programs. Some are small and suitable for experimenting with. Examples are also useful when you come to building your own applications - often you'll find ways to do simple tasks such as drawing to the screen that you can expand upon or piece together. Remember, if you are programming for credit you must acknowledge other people's work.

Sketch out your design and ingredients

When you start on a project, sketch out a rough design (on paper - paper is your friend) and a list of ingredients you will need to get to the first stage. By ingredients we mean the capabilities your program will need in order to its job. Examples of capabilities include, playing a sound, finding the position of a mouse click and so on. Test all your ingredients by writing small programs to see if they work. Make sure all the parts are tested well.

Build Incrementatlly

Build the project in simple short sections that you can test as you go. Think about how you can add features one at a time. Test features carefully as you go. When you test always have a vision of how the program should work at that stage. Working in small stages like this keeps mistakes small. Make mistakes small and often. Just make sure you save the latest working version of the program in a safe place.

Keep it Readable

Use informative names for places to store things. When the language allows, use informative names for pieces of code such as functions or methods. Do go back and clean up your code - it is ok for a small bit of a program to be a little messy when it is first written but it has to be cleaned up quickly.

Keep it Testable

Make sure that every change you make can be tested. Try to minimise the time to the next test. A well tested program is much nicer to build on. Well-tested programs feel good to work with. Conversely, large sections of untested program code are slightly scary.

Doing Computer Science at the University of Adelaide

There are a variety of ways to do substantial amounts of Computer Science at the University of Adelaide. The undergraduate degrees offered by the School of Computer Science are the
  • Bachelor of Computer Science (3 year degree),
  • The Bachelor of Software Engineering (4 year engineering qualification)
  • The Bachelor of Computer Science Advanced (3 year advanced degree)
All three degrees have a strong focus on learning by doing. The Bachelor of Computer Science (BCS) has strong coverage of a broad range of programming and computing and software engineering concepts. Graduates of the BCS go on to work on a wide variety of industry jobs. Graduates of the BCS and the BCS (Advanced) also have the choice of taking a fourth, honours, year with advanced courses and a research project. An honours year can lead on to further research or provide an edge when applying for jobs with top-tier employers. The Bachelor of Software Engineering (BSE) is a 4 year engineering qualification with a stronger focus on structured project work with an industry focus. The Bachelor of Computer Science Advanced is aimed at high-achieving students and provides extension work and the chance to work on real research projects throughout the degree.

Entry to these degrees is via SATAC. Maths studies at year 12 level is a prerequisite for all Computer Science degrees at Adelaide.

Who to Contact

For information about how to study Computer Science at Adelaide please see the Study at Adelaide website. For more information about learning to program at high-school, teaching resources, or competing in the Australian Informatics Olympiad, please contact Brad Alexander. If you and your class would like to see the School of Computer Science at the University first-hand you can organise a tour and presentation. Book through Enquiry form and select Computer Science as your area of interest.