Our Wellington and Manawatū campuses are open, Auckland remains closed at AL3. More information.



Computer Science

159.100 Programming for Engineering and Technology 15 credits
This course provides an introduction to computer programming for Technology and Engineering disciplines. The language is C++ which is a "real world" language heavily used in games, real-time applications and the control of devices. The course guides students through all the steps needed to write, compile and debug simple C++ programs with lots of practical examples. No previous programming experience is required.
159.101 Applied Programming 15 credits
The focus of this course is on problem solving and the design of logical and efficient programming solutions. It is an applied course with an emphasis on software construction using basic algorithmic methods and simple data structures. The course introduces the C++ programming language and is an essential preparation for advanced programming courses.
159.102 Computer Science and Programming 15 credits
This course advances the programming knowledge to include abstract data types, recursion, pointers, and the foundations of object-oriented programming. Foundational Computer Science topics are also covered including bits, bytes, twos complement arithmetic, gates, logic circuits and an introduction to assembler programming.
159.103 Introduction to Games Programming and Simulation 15 credits
The essentials of designing and constructing computer games; game software architecture; types of games; basic concepts of Artificial Intelligence; basic concepts of computer graphics; platform and performance issues. This course requires a significant practical programming component.
159.171 Computational Thinking and Programming 1 15 credits
The focus of this course is on problem solving and the design of logical and efficient computer-based solutions to real-world problems. This is a practical course with an emphasis on software construction using basic data structures and algorithmic methods that are common to many programming languages. The programming language used will be a high level, multi-paradigm, programming language, such as Python. The course is intended as preparation for advanced courses in object-oriented, functional and scientific programming. Students will gain an appreciation of simple software design principles and the ability to create useful custom-built programs.
159.172 Computational Thinking and Programming 2 15 credits
This course follows on from 159.171 by extending programming ability and putting the developed methods into context. It advances the programming knowledge obtained in 159.171 to include recursion, abstract data types and basic foundations of functional and object-oriented programming. It introduces elements of algorithm design and analysis. The programming language used will be a high level, multi-paradigm, programming language, such as Python. The course is intended as preparation for advanced courses in object-oriented, functional and scientific programming. Students will gain an appreciation of aspects of computer science theory and the ability to program using a range of computational techniques and data structures.
159.201 Algorithms and Data Structures 15 credits
An introduction to the analysis and implementation of algorithms and data structures including linear data structures, trees, graphs, hash tables, searching algorithms, sorting algorithms, optimization problems and complexity analysis. The course includes a significant practical component covering the implementation and application of important data structures and algorithms.
159.202 Declarative Programming 15 credits
This course continues the study of computer programming with an introduction to declarative programming languages. The principles of the declarative programming paradigm are explored through practical examples. Key topics include recursion, list processing, lazy evaluation and higher-order functions.
159.233 Computer Architecture 15 credits
Digital logic. Architecture. Processor organisation, analysis and design. Assembler programming.
159.234 Object-Oriented Programming 15 credits
An introduction to the principles of object-oriented programming. It covers both object-oriented programming techniques and their application to program design including classes, objects and objects lifecycle, abstraction, encapsulation, inheritance, polymorphism and generic programming, as well as some advanced programming features. The course includes a significant practical component involving designing and implementing object-oriented programs in Java.
159.235 Programming for Computer Graphics 15 credits
An introduction to the programming principles, methods and techniques of computer graphics. The course covers general graphics methods and techniques, graphics transformations, drawing algorithms, 3D rendering and animation. These are implemented using basic approaches as well as modern shader-based pipelines.
159.236 Embedded Programming 15 credits
A study of embedded programming using low-level programming languages. The course covers the hardware architecture of an embedded system and the techniques needed to write programs for simple peripherals such as switches, LEDs, timers and accelerometers.
159.251 Software Engineering Design and Construction 15 credits
A study of techniques, methods and tools used to design and construct high-quality software systems.
159.253 Computer Systems 15 credits
Computer architecture, assembler, processor organization. A case study, highlighting the decisions involved in producing a well-designed computer architecture.
159.261 Games Programming 15 credits
An exploration of a range of essential topics for implementing computer games including fundamental computer graphics, games software architecture and game physics systems. The course contains a significant practical computer lab component where students are guided through the games development process.
159.270 Hardware-Oriented Computing 15 credits
A study of programming in a hardware-oriented language such as C and the construction of object-oriented software solutions using C++. The course has a practical focus based on concepts such as pointers, memory allocation, objects, classes, operator overloading, inheritance, and polymorphism. It addresses techniques such as structuring programs, software testing and debugging techniques, and the use of microcontrollers.
159.271 Computational Thinking for Problem Solving 15 credits
An in-depth study of data structures and the design and analysis of algorithms to solve real-world problems. The course has a practical focus based on the correct implementation of algorithms in a high level programming language. An introduction to computability, tractability and strategies to address issues related to intractability.
159.272 Programming Language Paradigms 15 credits
An introduction to different programming paradigms with a focus on the functional paradigm – lists, recursion, lazy-evaluation, higher-order functions, currying and lambda expressions. The course includes a significant practical component designing and implementing functional solutions to problems using both pure and multi-paradigm languages.
159.302 Artificial Intelligence 15 credits
An advanced study of the principles and techniques used in developing Artificial Intelligence applications. The course includes the implementation and application of a range of AI methods including state-space representation and search, knowledge representation, constraint satisfaction, game playing, logic systems and machine learning.
159.331 Algorithms and Languages 15 credits
Comparative programming languages. Programming and algorithm design using different paradigms. Algorithm analysis. Algorithm complexity.
159.333 Computer Science Project 15 credits
A capstone computer science project. Students will develop a piece of software or conduct a computer science research project under the supervision of an academic staff member. Projects will be completed individually or as part of a team depending on staff availability. Students must produce a written technical report and give an oral presentation demonstrating their work.
159.334 Computer Networks 15 credits
A layered approach to data communications and the Internet protocols.
159.335 Concurrent Programming and Operating Systems 15 credits
Task parallelism: processes, synchronisation methods. Operating systems, structures and techniques. Brief introduction to data-parallel and distributed computing.
159.336 Mobile Application Development 15 credits
The course covers many practical aspects of designing, creating, testing and publishing mobile applications. Students will develop mobile applications using a real software development toolkit and have the option of publishing their applications to an app marketplace.
159.339 Internet Programming 15 credits
An advanced study in programming Internet applications and modern web technologies including scripting, HTML, client- and server-side programs, web request/response mechanism and Internet security.
159.341 Programming Languages, Algorithms and Concurrency 15 credits
Advanced study in models of computation, programming languages and algorithms with a specific focus on concurrent programming. The course includes models of computation, programming language paradigms, programming language design, algorithm analysis, processes, threads, synchronisation and parallel programming.
159.342 Operating Systems and Networks 15 credits
A detailed study of operating systems and network communication protocols. The course covers the technologies that underpin modern computer systems including the architecture of operating systems and their structures and methods along with computer network design, protocols and associated technologies.
159.352 Advanced Web Development 15 credits
A study of the programming and scripting languages, frameworks and tools used to develop web and distributed applications with a consideration of the security issues involved in these technologies.
159.354 Data Communication Networks 15 credits
The Internet is a fundamental platform for communication in our world. The architecture and protocols of this network of networks are essential to how they operate. This course focusses on the associated multi-layer protocol structure of the Internet by showing how it is constructed and how protocols underpin the variety of applications developed to support business, education and social networking.
159.355 Concurrent Systems 15 credits
This course builds on concurrency theory giving practical experience in all aspects of concurrent programming, including issues of synchronisation. Operating systems, structures and techniques are presented as examples of complex, concurrent programs.
159.356 Software Engineering Capstone Project 15 credits
Management of the software engineering process. A group project will form a significant component of this course.
159.360 Programming for Computer Graphics 15 credits
Generating graphical images and animations involves a variety of concepts and tools, starting from basic modeling and algorithms to advanced tools for graphics programming. The course covers theory and underlying algorithms as well as practical programming exercises including games using 3D graphics.
159.361 Advanced Games Programming 15 credits
This course continues the study of games programming by exploring the development of computer games using a modern game engine. The development of games and specific game systems within a modern architecture are covered with a significant practical component.
159.372 Intelligent Machines 15 credits
This course introduces fundamental techniques to create intelligent machines, including formalisms for representing knowledge and reasoning about it, methods for searching and planning, and approaches to machine learning.
159.391 Special Topic 15 credits
159.392 Special Topic 15 credits
159.702 Knowledge Engineering 15 credits
A study of state-of-the-art techniques in knowledge engineering used in the context of the semantic web, such as ontologies, OWL, description logic, rule engines and graph databases.
159.703 Advanced Computer Systems 15 credits
Advanced topics in computer systems, including concurrency, interconnection networks and technology drivers.
159.704 Systems Programming 15 credits
Internet of Things, general-purpose input/output (GPIO) programming, sensor integration, cloud computing, wireless and mobile networks.
159.707 Advanced Software Design and Construction 15 credits
A study of state-of-the art techniques used to design and construct complex, enterprise-level software systems, including: component-based software engineering, dependency injection, frameworks, design patterns, design analysis, aspect-oriented programming, distributed objects, meta programming and multi-paradigm programming languages.
159.709 Computer Graphics 15 credits
Graphics devices. Interactive graphics systems. Drawing algorithms. Lines and polygons. Curves and surfaces. Representation of 3-D objects. Perspective. Techniques for visual realism. The course will include practical programming work.
159.710 User Interface Design 15 credits
Practical techniques, models and tools to support the analysis and design of user interfaces.
159.731 Studies in Computer Vision 15 credits
Selected advanced topics including: low level digital image processing, 2D/3D image processing, image transforms, pattern recognition.
159.732 Studies in Computer Programming 15 credits
Selected advanced topics including: programming paradigms; procedure; functional; declarative; object-oriented; compiler techniques.
159.735 Studies in Parallel and Distributed Systems 15 credits
Selected advanced topics including: Parallel computing; network security; client-server computing; compression; web applications; wireless and mobile computing.
159.736 Studies in Operating Systems and Architecture 15 credits
Selected advanced topics including: Concurrency; scheduling; API programming; real-time and embedded systems; fault tolerance; computer architecture; HDLs.
159.737 Studies in Compilers and Grammars 15 credits
Selected advanced topics from grammars and compilers, including: formal grammars, languages, lexical analysis, parsing, semantic analysis, optimization and code generation. This course contains significant practical programming.
159.738 Special Topic 15 credits
159.739 Special Topic 15 credits
159.740 Studies in Intelligent Systems 15 credits
Selected advanced topics including: knowledge-based systems; AI; agents; natural language processing; search and constraint satisfaction.
159.794 Project 15 credits
159.795 Project 15 credits
159.870 Research Report 60 credits
159.871 Thesis 90 Credit Part 1 45 credits
A supervised and guided independent study resulting in a published work.
159.872 Thesis 90 Credit Part 2 45 credits
A supervised and guided independent study resulting in a published work.
159.875 Thesis 90 credits
A supervised and guided independent study resulting in a published work.
159.888 Computer Science Professional Project 60 credits
Candidates will undertake a practical and/or research project including the design and production of a significant software application. This may be conducted either individually or in groups and assessment may be in a variety of ways including written and oral presentations and software demonstrations.
159.897 Thesis 120 Credit Part 1 60 credits
A supervised and guided independent study resulting in a published work.
159.898 Thesis 120 Credit Part 2 60 credits
A supervised and guided independent study resulting in a published work.
159.899 Thesis 120 credits
A supervised and guided independent study resulting in a published work.
159.900 PhD Computer Science 120 credits