Department of Computer Science


Undergraduate Courses 2017


Stage I Description Semester
COMPSCI 111 An Introduction to Practical Computing SS, S1, S2
COMPSCI 101 Principles of Programming SS, S1, S2
COMPSCI 105 Principles of Computer Science
SS, S1, S2
COMPSCI 107 Computer Science Fundamentals S1


 

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 280 Introduction to Software Development S2


 

Stage III Description Semester
COMPSCI 313 Computer Organisation S2
COMPSCI 314 Modern Data Communications 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 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

 [ 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 105
Principles of Computer Science
Prerequisites: COMPSCI 101
Restriction: COMPSCI 107
The 105 course must be taken by students who have completed 101 and wish to advance in Computer Science. It extends the programming skills of the Principles of Programming course, focusing on data structures and efficient ways to manipulate data. The course is taught using the Python programming language. Topics include: recursion, regular expressions, data interchange, abstract data types, linear data structures (lists, stacks, queues), non‐linear data structures (heaps,hash tables, trees), searching and sorting. 

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

 [ Top ]
 

COMPSCI 107
Computer Science Fundamentals
Prerequisites: Achievement Standards NCEA Level 3: Digital Technologies and Programming : 91637 Develop a complex computer program for a specified task, 91636 Demonstrate understanding of areas of computer science, or equivalent programming experience, and Departmental approval. 
Restriction: COMPSCI 101, COMPSCI 105
This is the entry course to Computer Science for students with prior programming knowledge. It focuses on data structures and efficient ways to manipulate data. This course is taught using the Python programming language. Topics include: a brief recap of programming concepts, recursion, regular expressions, data interchange, abstract data types, linear data structures (lists, stacks and queues), non‐linear data structures (heaps, hash tables, trees), searching and sorting. 

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

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

 [ 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 ]
 


Stage II
 

COMPSCI 210
Computer Systems 1
Prerequisites: COMPSCI 105 or COMPSCI 107
Students who have a B+ grade or better in COMPSCI 101 may apply for a concession to enrol in COMPSCI 210 concurrently with COMPSCI 105.
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
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) and MATHS (108 or 150 or 153)
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 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
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 280
Introduction to Software Development
Prerequisites: COMPSCI 105 or COMPSCI 107
An introduction to software development, including processes, best practices, tools and quality assurance techniques such as testing.

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 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 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: