CITS2002 Systems Programming  
 

Unit home

Project 1

help2002

Lecture & Workshop
recordings on LMS

Schedule

FAQ

Unit outline

C textbooks

OS textbooks

Information resources


Extra reading

Past projects

Recent feedback


Working effectively

Look after yourself!

CITS2002 Systems Programming - SELT (2022)

UWA's Student Experience of Learning and Teaching (SELT) Survey is used to collect student feedback about Student Learning and Teaching in coursework units. Student participation in SELT is voluntary.

Response rate: 48 responses from 308 students enrolled (15.84%)

Thank you to all students that have offered feedback, either positive or negative. Unfortunately, some of the negative feedback deserves longer discussion, and should have been raised during the unit, and not just in a final survey. There's a few recurring comments




Open-ended comments about the unit

What were the best aspects of the unit?

  • deep understanding of computers at a fundamental level
  • Personally, I found that the projects were set up in a way that you had to do a good amount of personal research to really understand them (which is a good thing)
  • Learning about the C programming language, having previously learnt Java, and with Chris' expertise - everything taught by him is quite an honour. Having a workshop dedicated for projects is valuable and worth it, which makes me appreciate the time put into the work behind assessments.
  • The lack of assessments is very nice.
    ?? I presume you prefer longer projects, than many small weekly assignments.
  • There was a lot of interesting content
  • helpful teaching staff
  • Enhanced my coding skill and some basic understanding of the operating system.
  • This unit was so challenging for me but so rewarding. Both the projects and the lecture content were some of the most difficult things I have studied, but still achievable so it was really satisfying. My lab instructors (Larry and James) were a great help, were super approachable and provided great answers. I could tell they really knew their stuff.
    Agreed; Larry and James were fantastic lab facilitators this year.
  • The projects were very fun and required us to do a good amount of learning on our own and were interesting as they were very relevant to the theory we were learning. The lab facilitators were EXTREMELY helpful and EXTREMELY dedicated. God knows where I'd be without them. Shout out James for letting us bug u for so long you had to do your online class in your car, were we still bugged you. Love u man. The content of the unit overall is very interesting (both the theory and the C language itself) and Chris provides some interesting insight into the history and inner working of OSs
  • There were no good parts about this unit. The unit cannot even use LMS, let alone communicate assignment expectations properly. The teaching material is next to useless and the weekly labs are so packed it's almost impossible to receive any help in the two hour lab.
    Negative criticism is welcomed, but it should also be constructive. Your opinions are quite at odds with most others in this section. It's not a matter of 'cannot use' LMS, but of 'prefer to use something better'.
  • The first couple of labs weren't too bad.
  • Larry and James, the lab facilitators, went above and beyond to assist students during lab times. They often stayed far later than they were supposed to, and took the time to explain topics to students.
  • Listening to Chris's vast amount of knowledge
  • There were multiple lectures a week which was really great in terms of learning the material.
  • I really liked the practical/lab sessions which were useful for learning to code in C as well as utilising system calls and library functions necessary for this unit.
  • The sample solutions provided for the assessments were an incredible help with confirming the specifications of the projects, and the help forum was also helpful
  • The projects were challenging enough to push me to my limits. The contents thought were also interesting.
  • the lectures
  • covered the right amount of content. Was very interesting
  • Chris's lectures were delivered with passion and a wealth of knowledge, making it easy to stay focused while watching. The projects were enjoyable and challenging, I can say confidently, that my programming skill has improved after taking this unit.
  • Chris's responses to, hmm, *ignorant* questions being asked on the help forum
  • The projects were the highlight of the unit, both made use of the core concepts we were taught during the course and developed my programming skills and intuative understanding.
  • projects can work with classmates.
  • The content was interesting.
  • Finally learned how to program in C as an electronics engineering (non comp sci) student. Understood how operating systems work
  • projects
  • It was very challenging, a real big eye opener to those entering the field of CS. That it is not a very easy world
  • Projects - made me actually think rather than simply writing mindlessly
  • The concepts in this unit
  • The lab assistants were extremely helpful and provided great support in understanding the unit content.
  • The best aspect of this unit was that it covered both the fundamentals of operating systems and c programming, which enabled us to learn and understand both aspects as they are core in computer science.

What improvements would you suggest?

  • I understand that C is the basis that other programs are built from, but I don't really see this language being relevant for anything but context as I wouldn't optionally choose to write a program in this language in the future
    It's true that few new (application) programs are written in C, but C still plays a dominant role in systems programming - the focus of this unit. Operating systems, their services and utility programs, programming languages, their core and speed-critical libraries, networking services, device and microcontroller interfaces, and IOT applications are all still written in C, both for its speed and portability. You may have misunderstood the nature of this unit.
  • A second workshop for projects would be great - one for student questions, one for the professor to really talk us through it for people who don't quite understand still.
    Agreed, but like many things associated with this and other units, there's only so many hours in a week to present material. I also believe there's a danger in 'everything else stopping' because there's a project running. Hopefully we'll be able to schedule an additional (optional) weekly session next year.
  • Cover more systems content in depth; a lot of it felt very surface-level here.
    It's encouraging to hear you wanting more material but, given we have limited time each week, suggestions on what material to drop would be appreciated :-)
  • Describe the project better. Most people I have spoken to are all in agreement that the projects are so vague
  • - for my major (artificial intelligence) this unit has been listed in my level 1 core units, but from the actual study I found that taking it in the 2nd-semester of 1st year is making the study very challenging, and sometimes lecturer refers to content in other units which students in other normal major would have done in the previous semester, and it makes the lecture a bit hard to follow
    Agreed, placing CITS2002 in some study-plans is far from perfect. Most students do have CITS2002 in their 4th semester, but the 'pressures' from other majors' units can't support this in all cases. (Fortunately) the unit now has a formal prerequisite of one programming unit - previously, without it, too many students took this unit as their first programming unit.
    - i suggest having small tasks to submit every one or two week to keep (motivate? force?) students to stay up to date, as the content is challenging and students might be discouraged to complete the necessary practice and realized later on that they are having trouble to stay up to date
    This really is difficult to get the balance right - some students prefer (need?) many short assessments, while others prefer longer projects that they can get their teeth into. There's also the mpossible challenge of getting 350+ shorter marked and returned in time for the next one. Personally, I wish that university education wasn't so driven by assessment.
    - i think the lecture slides are helpful, but it can be much better if there's a small section of lecture objective/summary for each lecture to make things easier to follow
  • The speed of the lecturer can slow down a little bit, I can't always catch up with him.
  • I really like units that have weekly (or at least more frequent) assessments that are not worth as much. This means I can get a better understanding of how I am doing in the unit (I could get some idea based on how I did and felt about the weekly lab work, and there were the former midsem practices, but no formal feedback). We haven't received any feedback or marks, and we've just finished week 12 (except for one email giving common mistakes made in project 1, also I am aware that there were a couple of unexpected things that disrupted the marking of project 1). However, to be honest, I'm not exactly sure how more frequent, smaller assessments could be implemented in this unit, although if someone could think of a way I'm sure I would appreciate that.
  • a more achievable and enjoying projects, something most people are capable to do with limited experience where the averages are able to increase. More assesments to spread the load of weightings and reduce the stress and pressure towards very hard projects
  • Due to the way marks are awarded in this unit, many students neglect the theory aspects (as to focus on the programming projects worth about 50% of the grade) till the last few weeks of the unit and so do not do so well in this area (the way it is structure essentially encourages this). We are already provided labs to practice our coding but have nothing to practice our learning of theory. I know that I struggled grasping topics like paging and was only able to understand it in abstract way.

    To improve the unit, I suggest quizzes. These quizzes would be released every second week or just on the more heavy theory topics, right after the lectures so students are able to test themselves and consolidate what they've learnt. These quizzes would not be mandatory or contribute to students grades, they would simply be for self-testing purposes.
    Thanks for the suggestion about (formative) quizzes. The unit could perhaps benefit by providing past-exam questions, added to some of the labsheets. Not immediately sure when we'd have opportunity to discuss possible answers without releasing single answers which students often just rote learn.
  • Weekly quizzes on the theoretical content worth a small percent of the unit to encourage long term memory retention of the content. I find this has helped a lot in other units. A midterm exam to again encourage long term memory retention and take a small load off the projects.
  • Provide assigned labs instead of walk in labs so that students can receive the help they need.
    This unit has more enrolled students than the number of labs we can offer (both the availability of lab demonstrators and the number of unallocated hours in the rooms shared with other units). Moreover, most students (say they) appreciate being able to visit a lab session when they have a short/simple problem and, for others (most), two hours per week would be insufficient.
    Redo the lectures with better information - so that the entire unit isn't self taught through stack overflow. For the two assignments that contribute to 50% of the unit's grade - provide marking rubrics or clear expectations so that students can clearly understand the task instead of being marked down for assumptions they are forced to make due to lack of information. Add tests to the unit instead of just assignments so that multiple aspects of the knowledge the unit is meant to teach can be assessed. Provide exam answers as being given exam questions with no answers is next to useless. Replace the unit lecturer with someone who tries to help students, instead of actively ignoring them during lab time. Replace the teaching.csse website used with LMS so that the information for the class can be easily accessed alongside other units. Add criteria to the marking that ensures students can receive the first assignment (worth 25% of their final grade) before having to submit their second assignment. If this is not possible, at least make the first assignment grades be received before the exam study week.
  • More practical teaching as we would constantly learn about abstract concepts with little guidance on how to implement them using the c programming language.
  • The organisation of the unit, and the lack of feedback were ultimately detrimental to the learning outcomes of this unit. I understand that there were unforeseen circumstances involved with the marking of projects, but being in week 12 of the semester with 0% of the cumulative mark released is a horrible experience for students. Chris and the lab facilitators were certainly helpful during lab time and were able to answer questions, but it is incredibly hard to assess how well students are grasping aspects of this unit when none of our assessments are returned. Feedback from the first project was not released in time to assist us with our second project, and while I can appreciate that this was mostly due to markers attempting to get failed projects to work, the fact that this occurred reveals a larger issue with the overall structure of this unit.

    A mid semester test which evaluated the systems theory aspect of the unit would have been helpful. As it stands, a student's grasp of these learning outcomes is largely ignored right up until the 50% exam at the end of the semester. These theory topics are quite unwieldy to the uninitiated, and so it would have been very helpful to have some form of assessment during the semester to ensure people are understanding the content.
  • This unit would benefit from a better reinforcement of the systems content, and greater guidance in terms of how the aspects taught in the unit fit together. As it stands this unit is well structured only for a person who is already proficient in systems programming.
  • Nothing I can think of
  • While the labs were great, I do suggest the addition of theory-related questions in the labs so it is easier to learn and grasp the theory side of the unit. The projects were good to learn general skills but I found that they lacked interest. I did them because I had to but they weren't very fun. That is just something I think could be altered a bit to make students more interested in what they were doing.
  • I feel that more focus could be placed on the usage of pipes and dup2 with separate processes, given their importance to the second assessment and exam; a lab or workshop covering the topic would have been appreciated
  • -I would suggest weekly quizzes to motivate the students more about learning the materials.
    -The unit could be better by making the students interact with real life cases of how the OS operates(not just chris) like how when the OS starts booting or going deeper into how the I/O interface of the OS interacts with the I/O devices on the computer.
  • making the exam easier or give more exam prep resources, as averages in the 50s are far too low The assignments were a big step up from the unit material. Would be useful to maybe cover less theory and focus more on the programming aspect of the unit. Teaching students how to make use of Visual Studio will give the unit a more modern approach as well.
    I don't believe that a 2nd-year unit should need to teach a specific IDE (and it would not be easily assessed). We do encourage students to at least try using a traditional text editor (such as 'vi') as, one day, you'll be using a system without any graphical interface, perhaps over a network, and you'll need to know a text-only editor.
  • Making 3/5 content labs compulsory would greatly improve some students' marks.
  • Considering it was a great unit, only improvement I can suggest is the addition of an online compiler similar to the online Java compiler used in the data structures and algorithms unit. It may be beneficial in allowing students to test their projects using the same system as the marking machine before they submit. However, I can appreciate that "it works on my machine" is never a good excuse!
  • Maybe spend a tad more time going through the sample solutions of the assignments and the process/logic by which you arrived at your method of implementation to give students an idea of how they should be thinking
  • None
  • Perhaps other ways to acquire marks through the unit. Two big projects are quite stressful. This on top of final exams in previous years having an average mark of around 55% is really quite worrying and scary.
  • It was quite alot of content covered within a short period of time, not something that could really be improved much upon on the unit. But i would have studied earlier if i had known it was going to be this difficult ;D
  • change labs structure to make it more cooperative (more like workshops than labs), I know most parts of the unit are actually self-learning BUT student need to get related more with the unit.
  • Focus only one topic. Stop trying to teach linux/unix systems and their intricacies. The programming/compiler environment should be platform agnostic. Not everyone has 30+ years of programming experience. If you're gonna teach C programming teach C. If you're gonna teach operating systems then just focus on that topic. The topics are over the place and the learning material reads more like reference sheet.
    It's unclear what linux/unix intricacies you feel were presented. Nearly all of the coded examples introduce concepts defined by POSIX, supported on both Unix- and Windows-based platforms. The unit focuses on systems programming, but we do need to choose a widely available and representative platform and a programming language to explain and demonstrate the concepts. (Untried, but) all examples should compile with relatively small (preprocessor) changes.
  • It was difficult to understand most of what was discussed in the lectures.


On the teaching of Chris McDonald

What were the best aspects of this person's teaching?

  • Very enthusiastic and kept audience engaged in lectures

  • He is skillful.
  • Extremely knowledgeable (or a very good faker), and he was very helpful when answering questions in person
  • He was quite funny and spoke very clearly.
  • He knows a lot of the material very well. He is very approachable and helpful.
  • The lecture was well presented
  • The fact that when he lectures he doesn't just read off the slides but is able to complement the slides with his in-depth knowledge of the topic, making it worthwhile to watch his lectures as opposed to just reading the slides.
  • very interesting and enthusiastic; approachable and helpful
  • very helpful and responsive. Always on tasks and very reliable. Good at explaining concepts
  • Chris taught the unit in a very engaging way that made the unit very interesting to me.
  • I truly cannot think of a single aspect of this unit that was taught in a helpful manner.
    You're clearly disgrunted with the unit but, again, your comments are at odds with most others in this section. If you'd spoken up earlier, I would have suggested that you associate with some other students in the unit to receive a diversity of views.
  • He just knows it all
  • his explanations are helpful sometimes.
  • He is very knowledgeable on it all
  • He always encouraged questions and did his best to answer and help the students.
  • There is a lot of information given by the lecturer that were not just from the lecture slides.

What would you have liked this teacher to have done differently?

  • Speak slower in lectures, because it is really hard to catch up with him when comes to theoretical content.
  • While i do understand there's a lot of work exepcted to be done by a unit coordinator, it was sometimes slightly challenging when he wasn't there in person at some of the labs, or took some time to respond on the help forum. This was only really a problem because he was the only helpful person in the teaching group so everyone had to rely on chris and only chris answering everyone's questions
    The unit runs with 9 lab sessions per week and, as other students have noted, we have very knowledgeable and helpful lab facilitators. Of the 900+ posts on the help forum, 40% were responses from me. The help forum would work far better if many more students offered help to each other by posting their thoughts and suggestions as well. I honestly can't squeeze more into my week than I do (teaching CITS2002 supposedly being just 40% of my week).
  • To see him in more labs would be great!
  • Have greater focus on individual topics when presenting lectures; reading lecture slides and listening to Chris is often like watching two separate lectures at the same time.
  • Some of Chris' responses to students have been quite unsympathetic. Watching students receive sarcastic responses on help forums doesn't exactly give people the confidence to ask questions of their own.
    If you felt this, you should have raised it far earlier, with examples, so that there was a chance to correct any misunderstandings.
  • Chris' responses to people's questions sometimes came off to me as sarcastic, making him less approachable. He also sometimes acted as though certain parts of content and the projects were obvious and straightforward (which was probably true for him and some students, but not for me), which was, at times, discouraging. I understand that to some extent it is my responsibility to not feel scared to ask questions or discouraged, however I do believe changes in his teaching style in these specific ways could make the learning experience easier and more enjoyable.
  • Provide more advice on how to implement the concepts we learn into the c programming language and not put the mic so close to his mouth as it distorted the audio when listening to lectures online.
    If there was a problem with lecture recordings, you should have raised it far earlier - no other students raised this as a problem.
  • Not much
  • Concepts were not explained and described in a progressive manner but rather were explained at a high level of difficulty most times. Individuals who were newly being introduced to the topics discussed, would've struggled with following along with the lecture content due to difficulties in comprehending the various concepts higlighted.
  • teaching is sometimes a bit hard to follow as the verbal explanation doesn't always correspond to the lecture slides. i wasn't sure if that's relevant to the content because it sounds relevant but i couldn't relate it to our content which always confuses me.
  • Personally I felt he deviated off the slides of the lecture too much at times which led me to trying to focus on the slides or him or both and it ended up with me not being able to focus on either. This led me walking out of lectures with very little learned often and so later in the sem i opted to viewing the recordings instead. I understand now that I should have prepared myself more before each lecture by reading the slides beforehand (which I did half the time) but I often did not have time before lectures to do so.
    This is less a complaint towards wanting to change how Chris teaches, more an expression of my difficulties (I'm sure some students love his teaching style).
  • I would have liked for Chris to not ignore me the day the second assignment was due when I tried to ask him questions during lab time. I would have liked the content to be taught in a manner other than Chris rapidly typing into a heavily modified command line (instructions for modifying our command line were given to a bare minimum extent, and only in a file hidden away on the teaching.csse platform). I would like for students to be able to email the lecturer with their questions, instead of posting on a public forum - helping neurodivergent students who require more explicit answers than often initially provided to feel comfortable in asking questions. I would have liked the lecturer to clearly state his requirements for the given assignments, instead of giving the students a typo-filled mess of a HTML document with minimal explanations.
    I sincerely doubt that you were ignored in any lab session but, given that we have 350+ students, and limited people and hours to assist with the unit, not everyone can receive all the attention they may require or expect - not an excuse, but a fact. You have not been singled out. I cannot attend every lab session and will very often have something else immediately after a lab session. I also assist many neurodiverse students and others with mental-health challenges every week, answer many individual questions via email, and speak with many individual students outside of lectures, labs, and consultation hours.
  • A bonus lecture on Visual C++ to go with the C++ lecture at the end of semester would be interesting. But honestly, no complaints.
    Agreed (though Visual C++ is an IDE, C++ is a language). But before we introduce new lectures that are not assessed, there's plenty of additional systems-programming material that could be covered.
  • Not sure
  • I find his lectures to not be helpful in understanding the materials. Even though all his explanations are fluent, they do not make me better understand the materials since there are too much assumed knowledge and ambiguous explanations.
    The lecture slides don't have a clear purpose: it isn't particularly helpful during the lectures because:
    -there was too many texts to read on the screen while listening to the explanation
    -The book has a clearer explanation to be read for review So changing the lecture slides that allow students to better visualize the concept is more helpful.
    I also wish that he gave more precise instructions on which material I should read from rather than just recommending a bunch of textbooks.
  • Marking the projects took a lot of time, I still didn't know my final mark going into the exam. It would have been nice to know how I was doing in the class.
  • Make better slides. Don't make an info dump. Make visual diagrams that supplement the concept you are trying to explain. Some of your diagrams are non intuitive
  • Sometimes can get carried away with other information, making it feel more complex than it actually is.

The University of Western Australia

Computer Science and Software Engineering

CRICOS Code: 00126G
Presented by [email protected]