Effective Programming

First Semester, 2019

Teaching Team

  • Hamza Bennani
  • Andrew Trotman (Course Coordinator)


This paper aims to improve and develop your programming skills by setting a series of exercises, called études, which require an analytical and creative approach to problem solving. Most, but not all, of them will involve programming tasks. Some will not use computers at all, while others will use computers only for ancillary tasks. Each solution will be assessed against the requirements and you will be expected to go back and rework each étude until it is completed satisfactorily. You will be required to fully test and debug your programs as well as learn to identify inefficiencies.

The main objectives of this course are to develop and foster general skills relating to computer related techniques, understanding a problem, problem solving strategies and working with people. Most of the études will require working in pairs or in groups, although some exercises are individual work. There are no lectures, but weekly town hall meetings will be used to discuss or propose solutions, give hints, and reflect on the things you've learned.

To pass COSC326 you must complete all of the études.

The course structure and objectives are set out in more detail in the manifesto.

Academic Integrity

In COSC326 we place high value on the virtue of academic integrity, and view academic misconduct as a very serious matter. For further information, please see our statement on academic integrity and academic misconduct. Here is a student guide to Academic Integrity published by the University.

Submission details

Please send all COSC326 related materials to not to any personal address. This includes all submissions of work, questions etc.

When submitting programs you must submit source code (i.e., .java, .py, or similar files) with a README file or similar on how to compile and run your code. The readme file should contain some test cases you have used to test your code.

When submitting reports, please submit plain text or (preferred) PDF files. Under no circumstances should you submit .doc, .docx, .odt or similar file types. You should think of your reports as being documents sent to a client answering questions that the client has raised -- we may bounce them back if they are too informal, too technical, or poorly presented.

If you have made significant use of any external resources in preparing your code or report, those resources must be identified, and acknowledged. Formal citation is not necessary, but enough information to enable me to find the resource is required.

If a submission is accepted we will reply with an email that includes the phrase "complete and correct", or a very close variant. When you receive such an email you can assume the submission has been accepted. Conversely, if that phrase does not appear, then your submission has not been accepted and a resubmission is required. If you are at all in doubt, then check back with us before assuming either that you've finished, or that you haven't (last semester a couple of students sent me resubmissions of études that we'd actually already accepted).

Class Reps


Timetable - First Semester, 2019

Town hall meetings: 10:00-11:00 on Thursdays in Ōwheo G34.

Laboratories: 11:00-13:00 on Tuesdays and Fridays, in Ōwheo G06.

NOTE: The second hour of the first lab time (12:00am on Tuesday February 26) will be an extended Town Hall in G34. It is important that you attend this session as we will be organising groups and pairs as well as introducing your first tasks.

Assessment: check your marks.

Étude Marker Name Type Should be Completed and Passed by:
1 Andrew Etude 1: HT Pair
  • April 8, 5pm
2 Andrew Etude 2: Dates Individual
  • April 1, 5pm
3 Andrew Etude 3: LoopyNumbers Pair
  • March 25, 5pm
4 Andrew Etude 4: CP Group
  • April 15, 5pm
5 Andrew Etude 5: Quilt Individual
  • March 11, 5pm
6 Andrew Etude 6: Addition Pair
  • March 18, 5pm
7 Andrew Etude 7: Emails Individual
  • March 4, 5pm
8 Hamza Etude 8: Hole patches Group
  • May 31, 5pm
9 Hamza Etude 9: Lights With GUI Pair
  • May 20, 5pm
10 Hamza Etude 10: Arithmetic Individual
  • May 13, 5pm
11 Hamza Etude 11: Catalan Group
  • May 31, 5pm
12 Hamza Etude 12: Hilbert Curves Individual
  • May 6, 5pm
13 Hamza Etude 13: Counting Up Pair
  • May 27, 5pm
14 Hamza Etude 14: Evaluation Individual/Group
  • May 30, 11am

Page maintained by Hamza.                     Last updated:  25th Feb 2019   12:58