Course Portfolio for Introductory Programming at University of Gloucestershire

cmedia | university |

Teaching Philosophy

For novice programmers, programming can be difficult and alien. I feel that the discipline and attention to detail that it requires does not come naturally and students should be supported in understanding the basic concepts well before going further. I also believe that imperative programming requires an operational understanding of the code and (at some level) what is happening on the underlying machine. I have taught an 'objects first' approach in the past but I feel that this is not suitable for my students. I minimize their exposure to object-oriented ideas at first and introduce them gradually, letting them use objects but not asking them to write their own classes in the first term.

Students need time to assimilate ideas and the students I teach are not good at thinking abstractly. I do not attempt to explain the entire notation they are exposed to at first (e.g. public static void main .). I try to provide lots of small examples for them to look at and to practice on. In order to encourage communication, students have to show their work to tutors in the labs as part of the assessment. The assessment is structured as a staged portfolio of work so there is opportunity for lots of formative feedback.

As another aid to help students see the effects of their programs, I base exercises on a Turtle class, a logo-like class that enables programs to draw pictures using only straight lines. This not only helps them to visualise the effects of their code, but also to realise what can be achieved by building up from very primitive operations (as with machine code).

The aims of our course are heavily vocational and I encourage a professional approach to programming, reminding students that someone else may well maintain their code and they have to make their code clear to others (and themselves a week later!). I produce a 'Standards Manual' of programming style - layout, use of comments, choice of variable names, and require students to adhere to the standards given. I try to encourage them to develop programs with sensible indentation from the start, as it helps them in their understanding.

As well as encouraging novice programmers, we also have the 'rocket scientists' who have been programming for years and feel that we have nothing to teach them. It is difficult to maintain their interest, especially as the pace is so slow at the beginning. I set more advanced exercises as part of the assignment - to make them think but only worth a few marks. It is inevitable that some novice programmers will find that they do not like programming and some drop out of the module quite early on. We have very few women taking the module and they are often among those who drop out. Programming clearly does not attract some women, but I wonder whether the male dominated environment is off-putting.


Extract from the Introductory Programming web-site:

Aims

This module aims to teach you the fundamentals of programming using the Java programming language. You may have heard of Java as a language you can use to program for the internet. We haven't got time to explore this aspect of Java here but what you learn will be a good foundation for going on to learn about applets (Java applications designed to be run on the web).

What you will learn

We will look at the process of writing a computer program, from understanding a description of what is needed, designing and implementing a solution and testing that the program works as required. You will learn about basic constructs common to all procedural programming languages e.g. declaration of variables; assignment; looping and the conditional. You will also learn about using classes and objects that are found in object-oriented programming languages such as Java. No programming knowledge is assumed. For more details of what you will learn see the module guide .

Teaching and Assessment

Teaching is in the form of a one hour lecture followed by a two hour practical session. You are expected to attend these sessions each week as well as spending several hours every week of your own time in study and practice. This is a practical module and assessment is by assignments . There is no exam. Experience shows that it is only by constant practice and application that you will be in a position to pass and do well in this module. Ironically, this is especially true for those of you who have already done some programming. Those who do well in the first assignment sometimes become over-confident and stop attending. They frequently find they do not have enough knowledge to do later assignments. Do keep in touch with the module, even if the pace is easy for you. If this is the case, there are always opportunities to learn more than the basics and do extra well in the assignments.

No prior programming experience needed

If you've never programmed before, you will probably find this module difficult and bewildering at first. There is a very steep learning curve to get to grips with an unfamiliar editor, strange programming concepts and language. Don't despair! If you feel overwhelmed in the first week or so, this is quite normal. Ask your tutors for help as often as you need. Other students are pleased to help too. With a lot of practice, you will gradually understand what is going on, but it all takes time. It's a bit like learning to drive. Some people pick things up faster than others, but you can't avoid the hours of practice needed to build up experience. Remember, there's no shame in not knowing something. Computing is a broad, constantly-changing field where we can never know everything. So just ask, even if you feel it is a trivial question.

<-- Previous Next -->

 

©2006 Vicky Bush