Department of Computer Science


Undergraduate Courses 2019


This page lists course numbers and descriptions for the current academic year.

Courses may use different on-line systems for assignments. Check your course page to find out which to use;

Please note: each course number below links through to a full description, including prerequisites and which semesters the course is taught. You may also like to consider elective courses which have a digital or computer science focus (see below).

 

Stage I Description Semester
COMPSCI 101 Principles of Programming SS, S1, S2
COMPSCI 110 Introduction to Computer Systems SS, S1, S2
COMPSCI 111 An Introduction to Practical Computing SS, S1, S2
COMPSCI 120 Mathematics for Computer Science SS, S1, S2
COMPSCI 130 Software Fundamentals SS, S1, S2


 

Stage II Description Semester
COMPSCI 210 Computer Systems 1 S1, S2
COMPSCI 215 Computer Systems 2 S1
COMPSCI 220 Algorithms and Data Structures S1, S2
COMPSCI 225 Discrete Structures in Mathematics and Computer Science S1, S2
COMPSCI 230 Programming Techniques S1, S2
COMPSCI 235 Software Development Methodologies S2
COMPSCI 280 Introduction to Software Development S2


 

Stage III Description Semester
COMPSCI 313 Computer Organisation S2
COMPSCI 314 Modern Data Communications S2
COMPSCI 316 Cyber Security S2
COMPSCI 320 Applied Algorithmics S2
COMPSCI 335 Distributed Objects, Services and Programming S2
COMPSCI 340 Operating Systems S2
COMPSCI 345 Human Computer Interaction S1
COMPSCI 350 Mathematical Foundations of Computer Science S1
COMPSCI 351 Fundamentals of Database Systems S1
COMPSCI 361 Machine Learning S1
COMPSCI 367 Artificial Intelligence S2
COMPSCI 369 Computational Science S1
COMPSCI 373 Computer Graphics and Image Processing S1
COMPSCI 380 Undergraduate Project in Computer Science SS,S1,S2

 

Elective Courses

The Department of Computer Science also encourages students to consider elective courses, such as:

 

 [ Top ]
 


Stage I
 

COMPSCI 101
Principles of Programming
Prerequisites: None
Restriction: COMPSCI 107
This course introduces computer programming using the Python programming language. The main focus is on learning to understand the detailed requirements of a programming task, and writing programs that are well structured, correct and easy to read. The course covers simple variables, expressions, input and output, control structures, functions, using standard data structures such as lists and dictionaries, and using standard Python modules. 

Details about the course can be found through the links below:
 

 [ Top ]
 

COMPSCI 110
Introduction to Computer Systems
Prerequisites: None

Modern computers are both complicated and fast. This course explains how computers work and some of the things we can use them for. In order for us to understand computers we gradually examine a series of layers, each one built on the layer beneath. We start with looking at how data can be represented in binary, then see how we can make machines which can transform that data using simple circuits. Once we can control those circuits with instructions we have the basis for programming languages. The course extends the idea of a computer to how we connect computers together in networks such as the internet and we also touch on some research areas in Computer Science such as Artificial Intelligence and Computer Graphics.

This course is compulsory for students intending to major in Computer Science but is valuable to anyone who is interested in how computers work and what we can do with them.

Details about the course can be found through the links below:
 

 [ Top ]
 

COMPSCI 111/111G
An Introduction To Practical Computing
Prerequisites: None
A practical introduction to computing that will build confidence and familiarity with computers. Topics include: website design, an overview of computer hardware and operating systems,  effective use of common applications, using the Internet as a communication medium, applying programming concepts, and social implications of technology. As part of their practical work, students will create web pages, and develop skills with a variety of home and office applications including word processing, spreadsheets, and databases.

Details about the course can be found through the links below:
 

 [ Top ]
 

COMPSCI 120
Mathematics for Computer Science
Prerequisites: At least 13 credits in Mathematics NCEA Level 3 or D in CIE A2 Mathematics or C in CIE AS Mathematics or 3 out of 4 in IB Mathematics or MATHS 102.
Restrictions: Cannot be taken after CS225 or Maths255
We introduce basic mathematical tools and methods needed for computer science.  We develop elementary mathematical skills for defining, analysing and reasoning with abstracts objects used in programming.  Topics include integer arithmetic, strings and languages, methods of proof (including induction), propositional logic, the study ​of a few algorithms, and elementary introductions to graphs, trees, counting and probability.

Details about the course can be found through the links below:
 

 [ Top ]
 

COMPSCI 130
Software Fundamentals
Prerequisites: Achievement Standards NCEA Level 3: Digital Technologies and Programming : 91637 Develop a complex computer program for a specified task, or COMPSCI 101, or equivalent programming experience
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.

Details about the course can be found through the links below:
 

 [ Top ]
 


Stage II
 

COMPSCI 210
Computer Systems 1
Prerequisites: COMPSCI 105 or COMPSCI 107 or COMPSCI 130
This course aims to give students an understanding of how computer systems work, at the lowest level seen by the programmer, namely the interface between the computer hardware and software. Topics include: data representation, the development of computer architectures, digital logic circuits, assembly language programming, and an introduction to elementary C syntax.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: link
  • Semester 2: link

 [ Top ]
 

COMPSCI 215
Computer Systems 2
Prerequisites: COMPSCI 105 or COMPSCI 107 or COMPSCI 130
Recommended Preparation: PHYSICS 140
An introduction to data communications: the OSI reference model, particularly how the lower layers combine to implement the application layer. An introduction to secure communication and computer systems.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: link
  • Semester 2: not offered

 [ Top ]
 

COMPSCI 220
Algorithms and Data Structures
Prerequisites: (COMPSCI 105 or 107 or 130) and (MATHS (108 or 150 or 153) or COMPSCI 120)
This course is an introduction to the analysis of algorithms and data structures. Topics covered include: common abstract data types and their implementations; asymptotic complexity analysis; sorting and searching algorithms; depth‐first and breadth‐first search and applications; and graph optimization problems.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: link
  • Semester 2: link

 [ Top ]
 

COMPSCI 225
Discrete Structures in Mathematics and Computer Science
Prerequisites: (COMPSCI 101 or 107 or 120) or MATHS (108 or 150 or 153) or PHIL 101
Restriction: MATHS 255
An introduction to logic, principles of counting, mathematical induction, recursion, relations and functions, graphs and trees, and algorithms. This course is suited to students who are interested in the foundations of computer science, mathematics and logic. The main themes are: proof methods, logic and induction; sets and functions; counting; discrete structures.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: link
  • Semester 2: link

 [ Top ]
 

COMPSCI 230
Programming Techniques
Prerequisites: COMPSCI 105 or COMPSCI 107 or COMPSCI 130
Students will develop a software application of reasonable complexity through the application of established software development techniques. In doing so, students will demonstrate fundamental skills in object‐oriented software development, GUI programming and applicationlevel multithreading. The programming language of this course is Java.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: link
  • Semester 2: link

 [ Top ]
 

COMPSCI 235
Software Development Methodologies
Prerequisites: COMPSCI 130
Restrictions: COMPSCI 280
An introduction to software development, including processes, best practices, tools and quality assurance techniques such as testing. This course is about figuring what to build and building it, not implementing a specification. Students will also learn about organising development activities and working in project environments.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: not offered
  • Semester 2: not offered

 [ Top ]
 

COMPSCI 280
Introduction to Software Development
Prerequisites: 15 points from COMPSCI 105, COMPSCI 107 or COMPSCI 130
An introduction to the process of creating software, from conceptualisation to maintenance.  This course is about figuring what to build and building it, not implementing a specification. Students will also learn about organising development activities and working in project environments.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: not offered
  • Semester 2: link

 [ Top ]
 


Stage III
 

COMPSCI 313
Computer Organisation
Prerequisites: COMPSCI 210 and 215 and (PHYSICS 140 or 243)
Restriction: SOFTENG 363, COMPSYS 304
This course gives students an understanding of the hardware and firmware found in modern computer systems, and of the relationships between hardware, firmware, and software. It introduces the following topics: The functioning and organization of modern computer systems. Architecture of computers and computer systems. Processor organization and implementation. Instruction formats, microprogramming, input/output systems, virtual memory and hierarchical memory systems.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: not offered
  • Semester 2: link

 [ Top ]
 

COMPSCI 314
Modern Data Communications
Prerequisites: COMPSCI 210 and (COMPSCI 215 or INFOSYS 224)
Restriction: SOFTENG 364

The course focuses on the fundamentals of data communications and computer networks, and is delivered in three parts.
 

Part 1 covers network media (cables and radio links), signals and signalling, and channels and coding.

Part 2 primarily covers the Internet, and its TCP/IP protocol stack.

Part 3 covers Internet applications such as Web, Peer‐to‐peer, and DNS.

Parts 2 and 3 are based on the course textbook; lectures and assignments are aimed at directing students to the relevant sections of the textbook.
 

Expected topics include: the layered model, physical transmission techniques and coding, data security and integrity, protocols, local area networks, Internet measurement, wide area networks, routing, TCP/IP and application layer protocols.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: not offered
  • Semester 2: link

 [ Top ]
 

COMPSCI 316
Cyber Security
Prerequisites: COMPSCI 210 and COMPSCI 215
The course introduces various concepts related to software, system and network security. It covers a range of topics including attacks on privacy and attack surface, static and dynamic analysis of malware, hardware security (trusted computing base, secure boot, and attestation), network security and some hot topics in cryptography including elliptic curve, blockchain and bitcoin.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: not offered
  • Semester 2: TBA

 [ Top ]
 

COMPSCI 320
Applied Algorithmics
Prerequisites: COMPSCI 220 and 225
This course explores fundamental design techniques for efficient algorithmic problem‐solving and software development. Design methods such as greedy approach, divide‐and‐conquer, dynamic programming and exhaustive search are applied for many real‐world problems to yield solutions that are both correct and efficient. Coping strategies will be briefly introduced. You will cover several case studies for algorithmics in such areas as optimally scheduling events, how to pack knapsacks, routing algorithms in networks and data compression. 

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: not offered
  • Semester 2: link

 [ Top ]
 

COMPSCI 335
Distributed Objects, Services, and Programming
Prerequisites: COMPSCI 230 and one other Stage II COMPSCI course
Programming introduction to distributed services and to browser based applications. Specifically, service‐oriented architectures, performance, and security. Introduction to functional programming for developing services and clients integrating data from heterogeneous local and remote sources. 

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: not offered
  • Semester 2: link

 [ Top ]
 

COMPSCI 340
Operating Systems
Prerequisites: COMPSCI 210 and 230
Restriction: SOFTENG 370
Operating Systems are taken for granted by almost everyone who uses a computer, however a clear understanding of them makes you a better programmer and program designer. If you don’t know what is beneath the surface you can’t think clearly about things such as efficiency and scalability. The major topics of Operating Systems continue to develop as our concept of the computer changes. This course focuses on desktop Operating Systems but stretches up to distributed computing on the Web and down to embedded devices. Some of the fastest growing areas of computing are included in this course, such as virtualisation and parallel programming.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: not offered
  • Semester 2: link

 [ Top ]
 

COMPSCI 345
Human‐Computer Interaction
Prerequisites: COMPSCI 230 or SOFTENG 206
Restriction: COMPSCI 370, SOFTENG 350
This course provides an introduction to Human Computer Interaction examining human behaviour and expectations, computer interfaces and the interaction between the two. As approximately half of the development effort in typical systems is related to the user interface, the role of interface design and user centred design is emphasised throughout the course. Usability evaluation techniques for web and standard interfaces are explained and practised. You will survey a selection of advanced HCI topics, for example: informal interfaces, collaborative interfaces, visualisation tools, accessibility, mobile computing, or multi‐modal interfaces.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: link
  • Semester 2: not offered

 [ Top ]
 

COMPSCI 350
Mathematical Foundations of Computer Science
Prerequisites: COMPSCI 225 and (COMPSCI 220 or PHIL 222)
The aim of this paper is to present mathematical models for computers and computation, and derive results about what can and cannot be computed. It deals with idealised computers (automata) which operate on idealised input and output (formal languages). For example, we prove that it is impossible to write a computer program that takes as input any computer program and tells us whether or not that program will end up in an endless loop (the halting problem).

Quantum computing will also be briefly described and the Church‐Turing Thesis will be critically discussed. In addition we will discuss some problems in algorithmic complexity.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: link
  • Semester 2: not offered

 [ Top ]
 

COMPSCI 351
Fundamentals of Database Systems
Prerequisites: COMPSCI 220 and 225
Restriction: SOFTENG 351
Databases are at the core of most modern software applications. In this course you will learn the foundations of database systems, enabling you to build effective and efficient database applications. The course is divided into two parts: the first teaches you how to design and program a database application and the second looks in depth at how database systems are built to work in the current changing environment. In particular, it considers how consistency is maintained across a database when something breaks, how security of the data can be ensured, and what influence the Internet has had on database systems.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: link
  • Semester 2: not offered

 [ Top ]
 

COMPSCI 361
Machine Learning
Prerequisites: COMPSCI 220, COMPSCI 225
Machine learning is a branch of artificial intelligence concerned with making accurate, interpretable, computationally efficient, and robust inferences from data to solve a given problem. Understand the foundations of machine learning, and introduce practical skills to solve different problems.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: TBA
  • Semester 2: not offered

 [ Top ]
 

COMPSCI 367
Artificial Intelligence
Prerequisites: COMPSCI 220 and 225
Restriction: COMPSCI 365, 366
In this course, you will cover the representation, utilisation, and acquisition of knowledge. These are the cornerstones of AI. You will investigate how to take a real world problem and represent it in a computer, so that the computer can undertake inference. Utilising this knowledge, or acquiring new knowledge, is done by search. The basics of search and its use in planning will be covered. Machine learning will be covered, including the difference between induction and deduction and the similarities between machine learning and optimisation.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: not offered
  • Semester 2: link

 [ Top ]
 

COMPSCI 369
Computational Science
Prerequisites: COMPSCI 220, 225 and 15 points from STATS 101 ‐ 125
Computational science involves developing and applying computer algorithms and software to solve scientific problems using methods such as probabilistic computer modelling, statistical inference and simulation. We study these methods in general and focus on applications in computational biology and evolution. No background in biology is assumed. We will cover numerical methods in linear algebra, stochastic modelling, simulation, Markov and hidden Markov models, dynamic programming, phylogenetics and inference.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: link
  • Semester 2: not offered

 [ Top ]
 

COMPSCI 373
Computer Graphics and Image Processing
Prerequisites: COMPSCI 210 and 230
Restriction: COMPSCI 372, 375
This course introduces the fundamentals of image processing and computer graphics, which are necessary for the analysis and processing of image data and for the reconstruction, modelling, animation and photo‐realistic rendering of 3‐D. You will learn key computer graphics concepts including graphics primitives, lighting and shading, texture mapping, ray tracing, character animation and curve and surface design. In addition, image processing fundamentals are presented such as image definition and representation, perception and colour models, grey level and colour enhancement, neighbourhood operations and filtering. Basic geometric processes for image analysis and scene formation will be discussed including transformations, viewing and projection, and digital geometry.

Details about the course can be found through the links below:
 

  • Summer: not offered
  • Semester 1: link
  • Semester 2: not offered

 [ Top ]
 

COMPSCI 380
Undergraduate Project in Computer Science
Required Approval of Head of Department required. Contact the Project Coordinator before enrolment at projectcoordinator@cs.auckland.ac.nz. 
Restriction: COMPSCI 690
This 15‐point project is supervised, independent research or development work on a topic in Computer Science.

Details about the course can be found through the links below: