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.
|