NWEN241 (2021) - Systems Programming


This course considers the issues raised when programming at a low-level, for example in embedded systems, OS system level, or network protocol stacks. It includes an introduction to C language programming and motivating examples related to a wide variety of applications of system programming.

Course learning objectives

Students who pass this course should be able to:

  1. Use appropriate tools compiling/debugging C/C++ programs.
  2. Write C programs using pointers and arrays, user-defined data types, input/output operations, bit-level operations, and user-defined and library routines.
  3. Understand the differences between C and C++, and write C++ programs using stream input/output, classes, vectors and templates.
  4. Use or understand the main techniques of dynamic memory management in C and C++.
  5. Structure larger programs in multiple files.
  6. Understand the differences between application software and system software.

Course content

The course is primarily offered in-person, but there will also be a remote option and there will be online alternatives for all the components of the course for students who cannot attend in-person.
Students taking this course remotely must have access to a computer with camera and microphone and a reliable high speed internet connection that will support real-time video plus audio connections and screen sharing.  Students must be able to use Zoom; other communication applications may also be used. A mobile phone connection only is not considered sufficient.   The comuputer must be adequate to support the programming required by the course: almost any modern windows, macintosh, or unix laptop or desktop computer will be sufficient, but an Android or IOS tablet will not.
If the assessment of the course includes tests, the tests will generally be run in-person on the Kelburn campus. There will be a remote option for students who cannot attend in-person and who have a strong justification (for example, being enrolled from overseas). The remote test option may use the ProctorU system for online supervision of the tests. ProctorU requires installation of monitoring software on your computer which also uses your camera and microphone, and monitors your test-taking in real-time. Students who will need to use the remote test option must contact the course coordinator in the first two weeks to get permission and make arrangements.

Withdrawal from Course

Withdrawal dates and process:


Alvin Valera (Coordinator)

Teaching Format

This course will be offered in-person and online.  For students in Wellington, there will be a combination of in-person components and web/internet based resources. It will also be possible to take the course entirely online for those who cannot attend on campus, with all the components provided in-person also made available online.
During the trimester there will be three lectures per week where the third lecture is a tutorial-style lecture. There are practical lab (programming) assignments that require students to apply the concepts taught during the lectures.

Student feedback

A summary of the course feedback provided by students previously for this course is available at http://www.cad.vuw.ac.nz/feedback/feedback_display.php.

Dates (trimester, teaching & break dates)

  • Teaching: 22 February 2021 - 28 May 2021
  • Break: 05 April 2021 - 18 April 2021
  • Study period: 31 May 2021 - 03 June 2021
  • Exam period: 04 June 2021 - 19 June 2021

Class Times and Room Numbers

22 February 2021 - 04 April 2021

  • Tuesday 12:00 - 12:50 – LT103, Maclaurin, Kelburn
  • Wednesday 12:00 - 12:50 – LT103, Maclaurin, Kelburn
  • Friday 12:00 - 12:50 – LT103, Maclaurin, Kelburn
19 April 2021 - 30 May 2021

  • Tuesday 12:00 - 12:50 – LT103, Maclaurin, Kelburn
  • Wednesday 12:00 - 12:50 – LT103, Maclaurin, Kelburn
  • Friday 12:00 - 12:50 – LT103, Maclaurin, Kelburn

Other Classes

From Weeks 2-12, Helpdesk Sessions will be conducted in CO246. Tutor(s) will be present to assist students who have questions on exercises and assignments. See course wiki at https://ecs.wgtn.ac.nz/Courses/NWEN241_2021T1/ for more details.


There are no required texts for this offering.

 There are many good C/C++ programming books available in the library. Below are some recommended books for this course:

  • Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language [2nd Edition], Prentice Hall, 1988.
  • Perry, Gregory, C Programming Absolute Beginner's Guide, [Third Edition], Pearson Education, 2014.
  • Kochan, Stephen, Programming in C [Fourth Edition], Addison-Wesley, 2015.
  • Love, Robert, Linux System Programming [2nd Edition], O'Reilly, 2013.
  • Donahoo, Michael, TCP/IP Sockets in C [2nd Edition], Morgan Kaufmann, 2009.
  • D.S. Malik, C++ Programming [8th Edition], Cengage, 2017.

Mandatory Course Requirements

There are no mandatory course requirements for this course.

If you believe that exceptional circumstances may prevent you from meeting the mandatory course requirements, contact the Course Coordinator for advice as soon as possible.


This course will be assessed through assignments, exercises, quizzes, and a final test.

Assessment ItemDue Date or Test DateCLO(s)Percentage
Assignments - 4 in totalAs stated in the respective assignment handouts.CLO: 1,2,3,4,540%
Exercises - 4 in totalAs stated in the respective exercise handouts.CLO: 1,2,3,4,510%
Quizzes - 4 in totalWeeks 4, 7, 10 and 12CLO: 1,2,3,420%
Final Test (2 hours)TBC (during assessment period)CLO: 2,3,4,5,630%


For the EXERCISES. Any exercise submitted after the deadline (normally 23:59 on Fridays) will not be marked and will get 0 marks. There are no "late days" for labs.
For the ASSIGNMENTS. Any assignment submitted up to 24 hours after the deadline will be penalised by 20%, and any assignment submitted between 24 and 48 hours after the deadline will be penalised by 40%. Any assignment submitted 48 hours or more after the deadline will not be marked and will get 0 marks.
LATE DAYS POLICY (for Assignments). Each student will have three "late days" which you may choose to use for any assignment or assignments during the course. There will be no penalty applied for these late days. You do not need to apply for these, instead any late days you have left will be automatically applied to assignments that you submit late.


Requests for assignment deadline extensions must be sent in writing (email) to the course coordinator, attaching any relevant supporting documents, e.g. medical certificate from doctor.

Submission & Return

Instructions on submission of assignments and return of work are available on the course wiki at https://ecs.wgtn.ac.nz/Courses/NWEN241_2021T1/.

Marking Criteria

As stated in the respective assignment handouts.

Group Work

There is no group work.

Peer Assessment

There will be no peer assessment.

Required Equipment

Refer to https://ecs.wgtn.ac.nz/Courses/NWEN241_2021T1/ for details.


The total workload for NWEN 241 is 150 hours. In order to maintain satisfactory progress in NWEN 241, you should plan to spend an average of 10 hours per week on this course.

Teaching Plan

See https://ecs.wgtn.ac.nz/Courses/NWEN241_2021T1/LectureSchedule

Communication of Additional Information

You must regularly check the course Wiki page at https://ecs.wgtn.ac.nz/Courses/NWEN241_2021T1/ for the latest information on the course, e.g. lecture schedule, assignments, reading materials, etc.

Offering CRN: 18315

Points: 15
Prerequisites: COMP 103
Duration: 22 February 2021 - 20 June 2021
Starts: Trimester 1
Campus: Kelburn