COSC480-23S1 (C) Semester One 2023

Computer Programming

15 points

Start Date: Monday, 20 February 2023
End Date: Sunday, 25 June 2023
Withdrawal Dates
Last Day to withdraw from this course:
  • Without financial penalty (full fee refund): Sunday, 5 March 2023
  • Without academic penalty (including no fee refund): Sunday, 14 May 2023


Computer programming and program development in a high-level language with special emphasis on style and structure.

Covid-19 Update: Please refer to the course page on AKO | Learn for all information about your course, including lectures, labs, tutorials and assessments.

In COSC480 you will learn the fundamentals of computer programming using the Python language.

Programming is the nuts and bolts of computer science; it is an essential tool but only a small part of the overall subject. Programming involves using a special language to issue a series of instructions to the computer in order to have it solve a particular problem.

Videos, Not Traditional Lectures

Learning to program is necessarily a hands-on process, and traditional hour-long lectures poorly support hands-on learning. Lectures also force a relatively slow and laborious rate of progress through course material, when many students would easily handle a faster pace.  And when students discover gaps in their understanding while programming, videos of hour-long lectures are an inefficient way for students to review the lecture-based theory associated with their problem.

To fix these problems, we have replaced traditional lectures with videos. Each video will be short (10-15 minutes) and describes a particular programming concept, with examples. Students will review the videos in their own time and place, and preferably they will periodically pause the videos and experiment with the concepts, rewinding as appropriate.

There will be approximately 6 videos for each week in the course. It is essential that students keep up with the videos, as lab and assignment work will draw upon them.

In addition to the videos, there will be a "Drop in Class" each week. Students need only attend this class if they have specific problems with material already covered. No new material will be presented at the Drop in Class. Instead, the lecturer will answer students' questions and provide live examples to clarify concepts that the students ask about.

The Drop in Class will start in the first week of term and it continues (as "Clinic A") for the rest of the semester. In case the first session overflows, we will run additional Drop in Classes in the Warehouse Lecture Theatre in the first week, but not thereafter.

The course is not suitable for students who have previously passed COSC121.

Learning Outcomes

  • Students will:
  • Understand the following Python data types and their methods : strings, lists, tuples, files, sets and dictionaries.
  • Be able to implement basic algorithms using selection, iteration and function calling.
  • Be able to apply their understanding of the Python language in designing, implementing and testing programs to solve simple problems in science and engineering.
  • Be able to (re)structure code using modules and functions to reduce complexity.
  • Appreciate the performance benefits of hashed data structures in certain applications.
  • Be familiar with simple object oriented programming in Python.
  • Be able to implement simple Graphics User Interfaces in Python.
  • Be able to review and assess the quality and maintainability of Python code.


Subject to approval of the Head of Department

Timetable 2023

Students must attend one activity from each section.

Computer Lab A
Activity Day Time Location Weeks
01 Monday 12:00 - 14:00 Jack Erskine 010 Computer Lab (20/2-27/3, 24/4-29/5)
Jack Erskine 001 Computer Lab (20/2-27/3, 24/4-29/5)
20 Feb - 2 Apr
24 Apr - 4 Jun
02 Tuesday 10:00 - 12:00 Jack Erskine 010 Computer Lab (21/2-28/3, 25/4-30/5)
Jack Erskine 001 Computer Lab (21/2-28/3, 25/4-30/5)
20 Feb - 2 Apr
24 Apr - 4 Jun
03 Tuesday 12:00 - 14:00 Jack Erskine 010 Computer Lab (21/2-28/3, 25/4-30/5)
Jack Erskine 001 Computer Lab (21/2-28/3, 25/4-30/5)
20 Feb - 2 Apr
24 Apr - 4 Jun
04 Wednesday 08:00 - 10:00 Jack Erskine 010 Computer Lab (22/2-29/3, 26/4-31/5)
Jack Erskine 001 Computer Lab (22/2-29/3, 26/4-31/5)
20 Feb - 2 Apr
24 Apr - 4 Jun
05 Wednesday 10:00 - 12:00 Jack Erskine 010 Computer Lab (22/2-29/3, 26/4-31/5)
Jack Erskine 001 Computer Lab (22/2-29/3, 26/4-31/5)
20 Feb - 2 Apr
24 Apr - 4 Jun
06 Wednesday 16:00 - 18:00 Jack Erskine 010 Computer Lab (22/2-29/3, 26/4-31/5)
Jack Erskine 001 Computer Lab (22/2-29/3, 26/4-31/5)
20 Feb - 2 Apr
24 Apr - 4 Jun
07 Thursday 08:00 - 10:00 Jack Erskine 010 Computer Lab (23/2-30/3, 27/4-1/6)
Jack Erskine 001 Computer Lab (23/2-30/3, 27/4-1/6)
20 Feb - 2 Apr
24 Apr - 4 Jun
08 Thursday 10:00 - 12:00 Jack Erskine 010 Computer Lab (23/2-30/3, 27/4-1/6)
Jack Erskine 001 Computer Lab (23/2-30/3, 27/4-1/6)
20 Feb - 2 Apr
24 Apr - 4 Jun
09 Friday 09:00 - 11:00 Jack Erskine 010 Computer Lab (24/2-31/3, 28/4-2/6)
Jack Erskine 001 Computer Lab (24/2-31/3, 28/4-2/6)
20 Feb - 2 Apr
24 Apr - 4 Jun
10 Friday 13:00 - 15:00 Jack Erskine 010 Computer Lab (24/2-31/3, 28/4-2/6)
Jack Erskine 001 Computer Lab (24/2-31/3, 28/4-2/6)
20 Feb - 2 Apr
24 Apr - 4 Jun
11 Friday 15:00 - 17:00 Jack Erskine 010 Computer Lab (24/2-31/3, 28/4-2/6)
Jack Erskine 001 Computer Lab (24/2-31/3, 28/4-2/6)
20 Feb - 2 Apr
24 Apr - 4 Jun
Tutorial A
Activity Day Time Location Weeks
01 Tuesday 15:00 - 16:00 Ernest Rutherford 140
20 Feb - 2 Apr
24 Apr - 4 Jun
02 Friday 12:00 - 13:00 Rehua 102
27 Feb - 2 Apr
24 Apr - 4 Jun

Examination and Formal Tests

Test A
Activity Day Time Location Weeks
01 Monday 19:00 - 20:00 Online Delivery
13 Mar - 19 Mar
Test B
Activity Day Time Location Weeks
01 Friday 19:00 - 20:30 Jack Erskine 131 Lab 1
24 Apr - 30 Apr
02 Friday 19:00 - 20:30 Jack Erskine 133 Lab 2
24 Apr - 30 Apr
03 Friday 19:00 - 20:30 Jack Erskine 134 Lab 3
24 Apr - 30 Apr
04 Friday 19:00 - 20:30 Jack Erskine 136 Lab 4
24 Apr - 30 Apr

Timetable Note

Check your personal timetable on My Timetable. Note that you are welcome to attend extra lab sessions provided there are free machines available.

Depending on final student numbers, some of the advertised lab/tutorial streams may not run. Final lab/tutorial options will be available for self-allocation closer to the start of the semester through My Timetable.

Note that lectures and labs are held in conjunction with COSC121.

Please note that the course activity times advertised here are currently in draft form, to be finalised on Monday 30 January 2023 for S1 and whole year courses, and Monday 26 June 2023 for S2 courses.
Please hold off enquiries about these times until those finalisation dates.

Course Coordinator

Andrew Bainbridge-Smith


Assessment Due Date Percentage 
Lab Quizzes 7%
Test 17%
Project 30%
Exam 46%

2022 Covid-19 Update: Please refer to the course page on AKO | Learn for all information about your course, including lectures, labs, tutorials and assessments.

There are four assessment components: weekly laboratory online quizzes, a mid-semester test, a so-called “assignment" and the final exam. The assignment will be a series of programs for you to write, handed out at regular intervals throughout the course. They will for the most part be automatically marked by our online program tester, but some of them will also be assessed by staff for readability and `style'. This set of assignment programs will also be referred to as the assignment superquiz.

Additionally, each student will complete a practical programming project, submitting both the program's source code and a report describing the analysis, design, and implementation of the program.

Updated Semester One 2020 assessment deadlines and details will be available once finalised.

Textbooks / Resources

There are two main options for books to use to supplement the lectures and support your lab work.
- The second edition of "Practical Programming: An Introduction to Computer Science Using Python 3" by Campbell, Gries, Montojo and Wilson is the best book for the course  as it matches the lecture sequence well.
It is available from the university bookshop, or you buy an e-copy for
$US25 from You can probably find second hand copies of the first edition of the same book, but be aware that it uses version 2.7 of Python, and we are now using version 3. There are only a few minor changes that you will need to adjust for, and we'll give information about this in the course.

- "How To Think Like a Computer Scientist'' is available free online at It uses the same version of Python as you'll need for labs (version 3).


There are several important documents available online about departmental regulations, policies and guidelines at the following site. We expect all students to be familiar with these.

Notices about this class will be posted to the class forum in the Learn system.

COSC students will also be made members of a class called “CSSE Notices”, where general notices will be posted that apply to all classes (such as information about building access or job opportunities).

Additional Course Outline Information

Academic integrity

Every year several students fail the course because of dishonest practice. Please do not be among them. You are encouraged to discuss the general aspects of a problem with others. However, anything you submit for credit must be entirely your own work and not copied, with or without modification, from any other person.

If you share details of your work with anybody else then you are likely to be in breach of the University's General Course and Examination Regulations and/or Computer Regulations (both of which are set out in the University Calendar) and/or the Computer Science Department's policy. The Department treats cases of dishonesty very seriously and, where appropriate, will not hesitate to notify the University Proctor.

If you need help with specific details relating to your work, or are not sure what you are allowed to do, then contact your tutors or lecturer for advice.

Grade moderation

The Computer Science department's grading policy states that in order to pass a course you must meet two requirements:
1. You must achieve an average grade of at least 50% over all assessment items.
2. You must achieve an average mark of at least 45% on invigilated assessment items.

If you satisfy both these criteria, your grade will be determined by the following University-wide scale for converting marks to grades: an average mark of 50% is sufficient for a C- grade, an average mark of 55% earns a C grade, 60% earns a C+ grade and so forth. However if you do not satisfy both the passing criteria you will be given either a D or E grade depending on marks. Marks are sometimes scaled to achieve consistency between courses from year to year.

Students may apply for special consideration if their performance in an assessment is affected by extenuating circumstances beyond their control.

Applications for special consideration should be submitted via the Examinations Office website within five days of the assessment.

Where an extension may be granted for an assessment, this will be decided by direct application to the Department and an application to the Examinations Office may not be required.

Special consideration is not available for items worth less than 10% of the course.

Students prevented by extenuating circumstances from completing the course after the final date for withdrawing, may apply for special consideration for late discontinuation of the course. Applications must be submitted to the Examinations Office within five days of the end of the main examination period for the semester.

Laboratory Work

Practical work is an essential part of learning to program.
A new laboratory exercise will be made available each week and you are expected to work on that exercise during your scheduled lab for that week. Each laboratory exercise is accompanied by an online quiz. The quizzes are electronically graded and the sum of all your quiz marks contributes 10% of your total course mark. Usually you will submit your work at the end of that scheduled lab session but if you wish to continue to work on the exercise in your own time during the next week you may do so.

However, you must submit each quiz by its final submission date, the so-called “drop dead date", which is written on the exercise handout. Usually this is the Friday of the week after the lab exercise is handed out.

The lab tutors will help you work through the exercises when you are stuck, but try to solve the problems yourself before calling for help. In programming there are in infinitely many possible programming exercises and each one has a huge number of possible solutions. It's not the solution to the problem that's important; it's the mental processes you use to get even one solution that matter. Tutors can provide only limited assistance with guiding your mental processes - ultimately you yourself have to acquire the necessary problem-solving skills.


Your usercode on our computer system enables you to access a range of services. Some of these services are not free and you are responsible for ensuring that your account contains sufficient funds to cover any charges you incur. If your account balance becomes negative then you may be unable to use any computer facilities until you have cleared this debt. The Computer Science Department is not involved with the financial details of your account - you should go to the Information and Communications Technology Services (ICTS) Department for this.
The main chargeable service you are likely to make use of is printing.

To use chargeable services you will need to have money loaded on your Canterbury Card.

See the Information and Communication Technology Services (ICTS) Department home page for details of services and charges.


If you need help or are feeling lost, seek help immediately. Do not wait until the day before your assignment is due. There is plenty of help available - it is up to you to make use of it.

Sources of help
There are a variety of ways for you to get help.
•   The Learn COSC121S1 forums provide electronic noticeboards for use by all students and staff involved with COSC121S1. You can post any course-related queries to these forums and other students or staff can answer them. You can access the forum by logging into Learn.
However, there are a few rules to be observed:
•    Be courteous. The forum should be a pleasant place for everyone. Rude, angry or arrogant postings will rapidly destroy the value of the forum.
•   Don't be too helpful. By that we mean don't destroy someone else's learning experience by posting direct answers to test, exam or assignment questions. Rather, try to guide someone towards the solutions by hints or suggestions as to where the answers can be found. Never post assignment-related code.
•   If time permits, some problems may be discussed with your tutors during normal laboratory sessions.
•   Your lecturers are happy to help. However, their time is limited so please try to arrange an appointment by email to ensure that sufficient time will be available to deal with your queries effectively.
•   Some students may wish to engage a tutor for additional private or group tuition. Mr Holland (room 220) can assist with advertising and information about likely costs.

Note that the department is not responsible for computer systems and networks around the campus. The ICTS help desk (x6060) is the place to get help with technical problems outside the department.

Working on your home computer

Many students will do at least some of their laboratory and assignment work on home computers.
To do that, you will need to install some course-specific software as follows:
•   Python, version 3.5 or later. This can be downloaded from NB: Version 2.7 is NOT appropriate, as it is not compatible with version 3, which will be using in the course.
•  Wing101 Version 6.0, the IDE (Integrated Development Environment) we use in COSC121S1. This can be downloaded from . [This is not strictly essential; you can, if you wish, develop your programs using the IDLE IDE that comes with Python. Wing101 is what we will use in the lectures and laboratories, however.]
•  Enjoy the Course!!!

Indicative Fees

Domestic fee $1,079.00

* All fees are inclusive of NZ GST or any equivalent overseas tax, and do not include any programme level discount or additional course-related expenses.

For further information see Computer Science and Software Engineering .

All COSC480 Occurrences