XMUT241 (NWEN241) Systems Programming

First Semester, 2023/2024

Prescription

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

Learning Objectives

Students who pass this course will be able to:

  • Use appropriate tools compiling/debugging C programs.
  • Write C programs using pointers and arrays, user-defined data types, input/output operations, bit-level operations, and user-defined and library routines.
  • Use or understand the main techniques of dynamic memory management in C.
  • Structure larger programs in multiple files.
  • Understand the differences between application software and system software.

Teaching Format

There will be two lectures per week during the semester. There are practical lab (programming) assignments that require students to apply the concepts taught during the lectures.

There will be in-person lectures in XMUT. You will be provided with recorded lectures every week. The labs will be conducted by Dr. Meng Zhaorui in XMUT.

Lecturers

Course Organisation details

Dates, Times, and Rooms: Lectures and Laboratories

The course will have lectures on Mondays (Mingli 5-301) and Wednesdays (Mingli 4-105).

The course will have labs on ?? and ??, but we expect that you will need approximately 6 hours per week of additional work to complete the homework assignments and prepare for the tests and the exam. We hope to provide some additional time in the computer lab, but much of the time will need to be done on your own computer.

There is no required textbook for the course. There are many good C programming books which may be helpful. Below are few recommendations:
  • 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.
  • Adam Hoover, System Programming [1st Edition], Pearson Education, 2010

Assessment

Your grade for the course will be based on a combined mark for the assignments, exercises, tests, and the final exam.

Notes:
  • If you fail the course the first time, and need to take the make-up exam, the make-up exam will only replace your tests and exam marks - your final grade will be 40% from your assignments, exercises and attendance, and 60% from the make-up exam.
  • If you get a higher mark in the exam than you did in tests, then we will increase your mark for the test up to your exam mark.
Assessment Item Due Date or Test Date Percentage
Attendance   10%
Assignments - 4 in total Week 5, Week 9, Week 11, week15 24%
Exercises - 3 in total Week 3, Week 7, Week13 6%
Test1 Week 10 10%
Test2 Week 15 10%
Final Exam Exam period 40%

Assignment Marking and Late Penalties

LATE DAY POLICY for the ASSIGNMENTS and EXERCISES. Work submitted:
  • 1 day after the deadline will receive a maximum mark of 90%,
  • 2 days after the deadline will receive a maximum mark of 80%,
  • 3 days after the deadline will receive a maximum mark of 70%,
  • 4 days after the deadline will receive a maximum mark of 60%,
  • 5 days after the deadline will receive a maximum mark of 50%.

No work will be accepted after releasing the solutions unless previously arranged with the course lecturer.

Submission & Return

Students are not allowed to use AI tools (ChatGPT, Bing Chat, Github Copilot, Google Bard, Moonbeam, etc... ) to generate submitted material or complete coursework in this course.

Submission of assignments must be done via the ECS online submission system, accessible through the 'Assignments' link on the course web pages: https://ecs.wgtn.ac.nz/Courses/XMUT241_2024T2. Marks and comments will be returned through the ECS marking system, also available through the course web pages.

Workload

The course is expected to have a total workload of about 150 hours. If you are still struggling with English, you may need to spend more time than this. This means you should expect to work on this course for at least 10 hours every week.

Teaching Plan

See the 'Schedule' link on the course web pages: https://ecs.wgtn.ac.nz/Courses/XMUT241_2024T2/LectureSchedule

Communication of Additional Information

The primary means of communication outside of the lecture will be the COMP241 website at https://ecs.wgtn.ac.nz/Courses/XMUT241_2024T2. You should make a bookmark for the course home page because you will need to access it frequently.

The course website has important information about the course, including:
  • Announcements,
  • Course schedule (with links to copies of the lecture slides and additional reading materials (if any)),
  • Files and assignments-related information,
  • Assignment submission system.

There is also a WeChat group. The lecturer will answer questions on WeChat and may make urgent announcements. All communications in the WeChat room must be in English.

Academic Integrity and Plagiarism.

Academic integrity means that university staff and students, in their teaching and learning, are expected to treat others honestly, fairly and with respect at all times. It is not acceptable to mistreat academic, intellectual or creative work that has been done by other people by representing it as your own original work.

Plagiarism is presenting someone else's work as if it were your own, whether you mean to or not. "Someone else's work" means anything that is not your own idea. Even if it is presented in your own style, you must acknowledge your sources fully and appropriately. This includes:
  • The work of other students or staff
  • Material from books, journals or any other printed source
  • Information from the internet
  • Software programs and other electronic material
  • Designs and ideas
  • The organisation or structuring of any such material

Notes

You must always properly cite any work of others that you include in your submission. If you are ever in doubt as to whether some action you have taken may be considered plagiarism, you should consult your lecturer and/or clearly state on the submitted work the extent of the contribution from others.

Strictly follow the rules below:
  • Do not give your answers to other students – you may get zero!
    • If someone submits work that is the same as or very similar to yours, you should expect to be asked to explain and, if the explanation is not satisfactory, to receive zero mark for the assessment and/or the course, if repeated.
  • Do not copy another student’s work (assignment/test/final exam), you will get zero.
  • Do not ask other students for their answers – it is stealing their marks. You may both get zero.
  • If there is a record of more than two previous cheating events in any VUW course, you will be referred to the Dean.

Plagiarism and Code

If you are completing a programming project, you may be allowed to use code segments from a software library on the web, from model solutions in previous courses you have taken, or even from other students. If you do this, you must clearly indicate all of the code that has come from another source and state the source. Unless your course requirements state otherwise, you are not required to cite algorithms, data structures or source code provided with the assignment or from lecture notes. If you are in doubt about the use of code that you have not written yourself you should check with your lecturer before submitting the program. If you have had help from someone else (other than a tutor), it is always safe to state the help that you got. For example, if you had help from someone else in writing a component of your code, it is not plagiarism as long as you state (e.g., as a comment in the code) who helped you in writing the method.

Classroom Policies

  • No eating, drinking, or smoking.
  • Respect classmates’ ideas, opinions, and questions.
  • No behaviour that prevents other students from learning.
  • You are welcome to visit the instructor’s office during his office hours.
  • Take good care of the laboratory facilities.