Course syllabus


Prerequisite & Restrictions



  • COMPSCI 101, or
  • Achievement Standards NCEA Level 3: Digital Technologies and Programming: 91637 Develop a complex computer program for a specified task, or
  • Equivalent programming experience and departmental approval.



Course Description

This is the entry course to Computer Science for students with prior programming knowledge. It focuses on the quality of processes used when developing software, and the quality of the software product produced using those processes.  The course provides an introduction to fundamental software development techniques and processes, such as reading, writing, and documenting programming code; decomposing problems; testing; debugging; using recursion; handling unexpected errors.  It also addresses efficient ways to organize and manipulate data, including sorting and searching algorithms, and writing software that uses and implements common abstract data types such as lists, stacks, queues, dictionaries and trees.  The course will be taught using the Python programming language.

Course Outcomes

A student who successfully completes this course should be able to:

  • Use common programming statements to implement iterative and recursive algorithms.
  • Export and import data structures (via file or console I/O) using standard text-based data formats.
  • Decompose a problem into several smaller tasks, design and implement a function for each task, and compose these functions into a program that solves the problem.
  • Use simple testing and debugging strategies to correct faulty programs.
  • Provide a useful level of documentation for all programs developed.
  • Work together with peers to collaboratively develop, and review, programs.
  • Demonstrate how typical data structures are modelled in memory.
  • Write programs that use standard abstract data types (lists, stacks, queues, priority queues, dictionaries).
  • Implement standard abstract data types using standard data structures such as arrays, linked lists, hash tables and trees.

Requirements for passing

You are required to pass both the invigilated (test) component of the course and the non-invigilated component.

  • Non-invigilated component:
    • Twenty labs worth 30% in total (including the group component)
    • Two projects worth 20% in total
  • Invigilated component:
    • Two tests worth 50% in total


  • To pass the non-invigilated component you will need to achieve a satisfactory performance in the combined score of all the non-invigilated work (labs + projects).
  • To pass the invigilated component, you will need to achieve a satisfactory performance in the combined total of both tests.
  • You also need an overall mark of at least 50% out the full course total of 100%.


There are 20 assessed laboratory sessions, and 2 non-assessed lab sessions.  The 2 non-assessed laboratories are allocated for you to work independently on your projects.

The laboratories are worth 30% of your final mark. Every assessed laboratory session contributes towards your final grade.  You are expected to prepare for each lab by completing any reading and practice exercises before you attend the lab.  The laboratory sessions will include group activities where you will be expected to participate in discussions and collaborative problem solving, as well as individual programming tasks that are submitted online.  Some laboratory activities will be timed and will be conducted during your allocated laboratory session.


There are two projects for this course, each worth 10% of the final grade.


There are two tests for the course.  The combined total of the tests is worth 50% of the final grade.  The tests will be held in the evenings of Fri 30 August 6-8pm, and Fri 25 October 6-8pm.  The tests will be 2 hours in duration.  They will be computer-based and will include tasks that require you to write programs that meet given specifications.  The tests will be invigilated.


There is no exam for this course. 

Lecture Times and Locations

  • Tue 1:00PM - 2:00PM (303-G23 (Sci Maths & Physics, Room G23), OR
  • Wed 12:00PM - 1:00PM (401-439 (Engineering Block 1, Room 439))

Please re-check all room allocations closer to the time on SSO as they often change around the start of semester.


Two laboratory sessions each week.  Laboratories begin on Monday in the second week of semester.  All laboratories are compulsory.

  • We 9:00AM - 11:00AM, 175 Th 8:00AM - 10:00AM, 279
  • We 9:00AM - 11:00AM, B75 Th 8:00AM - 10:00AM, 279
  • Tu 9:00AM - 11:00AM, B75 Fr 1:00PM - 3:00PM, 279
  • Mo 10:00AM - 12:00PM, G75 Th 4:00PM - 6:00PM, 279
  • Mo 2:00PM - 4:00PM, B75 Th 10:00AM - 12:00PM, 279
  • Mo 4:00PM - 6:00PM, B75 Fr 10:00AM - 12:00PM, 279
  • Tu 11:00AM - 1:00PM, B75 Th 10:00AM - 12:00PM, 175
  • We 11:00AM - 1:00PM, B75 Th 2:00PM - 4:00PM, 279
  • We 3:00PM - 5:00PM, 175 Fr 3:00PM - 5:00PM, 279
  • Mo 8:00AM - 10:00AM, 302.180 Th 1:00PM - 3:00PM, 180
  • Tu 8:00AM - 10:00AM, 302.180 Fr 2:00PM - 4:00PM, 180
  • We 8:00AM - 10:00AM, 302.180 Fr 9:00AM - 11:00AM, 175
  • Tu 10:00AM - 12:00PM, 302.180 Fr 11:00AM - 1:00PM, 302.180

Please re-check all room allocations closer to the time on SSO as they often change around the start of semester.

Course summary:

Date Details