The University of Western Australia
CITS2002 Systems Programming
 

Department of Computer Science and Software Engineering

CITS2002 Systems Programming

CITS2002 Systems Programming - SURF Feedback (2018)

These are the verbatim comments (sadly, only 29) from students who took CITS2002 in 2018, together with my feedback (in blue). It's instructive for students to see comments from their peers, and from the previous year's cohort, to appreciate the diversity of opinions, abilities, misunderstandings, and suggestions (unfortunately SURF hides these comments).

In 2018 the unit had 340 students, and these comments certainly reflect the diversity of the cohort - some students enjoyed the unit, others not so much; some students found the project 'about right', some impossibly difficult; some students enjoyed that lectures involve discussion that's not written on slides, others believe that lectures should only follow the written slides.

The organization of the project materials was messed up a bit in 2018, and we needed to have only a single project rather the tw0 originally planned. I feel that it was the change in the organization of the project, rather then there being one or two, that concerned many students. This unit has tried both a single project, and two projects, in recent years and students' reactions to that have been equally mixed (see past years' feedback).

Thanks for your comments and support offered to Daniel and Ryan in 2018, who both stepped up to help with the unit, far moreso than we'd planned!

  • I have previously done Python but found this unit very very difficult. I think the project expected too much from us, and after having watched the lectures I still had no idea how to do it. Since the project was about making a utility and not just solving a normal problem, I also couldn't find much online. I think the project should be simpler. I really struggled with this unit.
    Thanks for your comments. I'm unsure what sort of 'normal problem' you may have preferred - this is a unit on systems programming, and it needs a solid project to reflect that content. You will also find in later units that the projects are very-specific to the units' contents, and are not general problem-solving projects.
  • I think Chris always coordinates great units that are well structured and informative. My only suggestion would be if not too complicated to provide some code in the lab workshops that could run your compiled programs and check if they correctly produce an output for a number of test cases. I know that the week after labs are finished there was example code released but often time if you had your lab early in the week you'd completely lost interest in what you did in the lab. And even if you didn't go back and check, which i tried to force myself to do, you would have kind of forgotten exactly what the question was and how your code was working so it was difficult to compare. I think it is important to not provide the example solution immediately so students are forced to tackle the problem themselves but i thought some test cases and example output would be nice for students to self check. There are plenty of checks you can do yourself but it's hard to see the forest for the trees.
    Thanks for the suggestions. We'll try and incorporate some test cases and example outputs in future labsheets and the workshops.
  • I feel that there is little point in this feedback, as I know that next year Chris will just post this on the CITS2002 website with his responses in red. However, I really hope it might stick so that the learning experience is better for the class of 2019. Good things about the unit: - Chris is clearly ridiculously, ridiculously knowledgeable about the content contained in this unit. More importantly, he is very passionate which is awesome. - All the lab advisers that I came in contact with (Ryan and Daniel?) were super helpful, friendly, and knowledgeable. - The project was challenging yet (in my opinion and contrary to popular belief) relatively achievable. I learnt A LOT whilst doing it. Some people clearly had a lot of issues understanding the core premise of the project, which I do not agree with as I thought the learning outcomes, tasks, and objectives were all very explicit. Also, I appreciate the endeavors of Chris/others to mark them before the exam.
    All your comments appear very positive, so I'm confused as to why you felt there was little point in writing them!
  • The only aspect of the unit I disliked was the assignment was one large 30% unit with a lot of the assignment requiring knowledge from the last couple of weeks. As I understand, this wasn't planned however in the event of a stuff-up, this would weigh heavily on the final grade (in my case.. ). The assignment was in my opinion, a very interesting one that helped solidify understandings of the concepts in the unit. Possibly the most engaging assignment because it truly requires an understanding of system programming. Chris has been an absolutely amazing teacher, with help in class and out (help2002 and emails) along with the tutors. Thank you Chris! Any students in the coming semesters who take this unit should take advantage of the learning opportunity!
    Yes, having to 'drop' to a single project was unfortunate this year although, in previous years, some students felt that having two smaller projects was an overload; difficult to please everyone. Be warned, though, that most later CSSE units will have a single project, sometimes contributing 40-50%.
  • Best CITS unit yet. Excellent unit which has taught me many things and also opened up avenues for me to learn a lot of new things myself. Have never used linux before and although not a mandatory OS for the unit, learning many different things about the system has been very enjoyable. Chris does get off topic during lectures but the things he talks about are still very interesting albeit not always vital. I recommend this unit only for people who have at least one coding language under their belt.
    A few students (each year) state that I get a bit off-topic in lectures, agreed, but I try to constrain that to the history of the topics we're learning about. I'm not a believer in the idea that 100% of what's discussed in a unit (lectures) has to be directly examinable, a strong believer that history is important, but we can't devote enough time to history to 'make' it examinable.
  • The organisation of content in this unit is really haphazard, jumping from C content back to systems content at random with often little in common between each topic. The unit covers a number of OS topics in brief, but there seems to be little direction to the choice of these - I didn't leave with a broader understandings of how OS's work (except for the processes content, that was handled and taught well and also tied into the project a little). Also, the project has basically nothing to do with systems and is 90% string manipulation - the C content in general should be first year stuff and was so tiresome to work through as a second year CITS major
    Thanks for your comments; it's unclear if you completed the project successfully, but there was far more substance to it than just string manipulation. The project did involve parsing command-line arguments and a text-based configuration file (representative of nearly all system utilities), accessing file attributes, creating and monitoring processes. You may have a better understanding of the material than many of our 2nd year students, but very few describe the projects as too easy or tiresome (as students' feedback shows).
  • Having the two assignments this semester was not a good idea. Many friends of mine ended up spending 10 days straight smashing it out with their partner in one go and hating themselves for it despite completing it. please consider spending the first 30 minutes of the labs teaching the new skills and the rest helping student do the questions.
    A bit confusing, as we had only one project this semester, and five weeks to complete it.
    Please email with any examples of the skills that you feel should be taught in labs (though a bit of a challenge as laboratory attendance is not compulsory, so some online materials may be better).
  • unit, unfortunate that the two projects were combined into one. Unsure if it is better or worse that way, however it was more than understandable as too why this happened. Chris did a great job as a lecturer as did his colleagues when they stepped in.
  • More time could have been spent of memory allocation. Having one assignment made things quite hard as we could not learn from the mistakes of the first assignment. The lab co-ordinators were very helpful. More examples during the lectures would be very helpful even if it is just extra slides not talked about in the lecture.
  • There was a large difficulty gap between the mid semester test and the project, would have preferred that the expected effort was about even throughout the semester, but it was heavily concentrated on the later half
    It's unclear whether you found the test or project more difficult, but they are very different modes of assessment (but, 5 weeks of lectures versus 5 weeks of practical work), with the project being worth more because you were encouraged to work with a project partner. You will find most later units also increase their density of material towards their end; very few students are 'ready to go' with concentrated material in the early weeks.
  • The lectures where interesting and engaging I genuinely enjoyed attending
    Thanks!
  • I did really enjoy this unit although the project being merged into 1 proved very stressful as a first time c project, keeping 2 projects is a far better plan. Other than that the unit was enjoyable and well run.
  • The unit labs have been the most supportive out of all other units I have undertaken so far - esp Daniel Cowen. I learnt a lot of the programming required whilst undertaking the unit project. However, it would have been handy to have access to all lecture material prior to beginning the unit as the concept of structures was new to me forcing me to roll back a fair amount of time and effort I put in by that time in completing the project. To overcome this, I would recommend providing access to all the unit lecture slides in advance with additional depth provided later during lectures. This worked well for me in CITS1401 and 1402. Overall, despite being the hardest course I have undertaken this semester, I have come out learning a lot about OS and C programming (particularly 'looking at man pages'!). One thing to add to projects would be to add a disclaimer on the general information page given with Lab 1 that .o files built in Linux don't work on macs. Made me skip a few beats!
  • Submissions should have a lower penalty for large projects
  • Chris is an excellent lecturer! Really enjoyed this unit.
    Thanks!
  • This unit was great, learning the inner workings of a computer was an eye-opener and made for an interesting unit. I, however, didn't like this large assignment, as a large part of it was too ambiguous. I fully understand that due to Chris' health the unit was distributed and hope he recovers, but the assignment brief didn't give enough information and large portions of important cases were left for help2002 to discuss and find the answers. For example, in help2002 Chris gave somewhat conflicting information to what was in the assignment brief and the tutors gave differing answers as well. So in all, great unit, but the assignment was too rushed.
  • This unit needs more prerequisites for a complete understanding.
    Agreed, but the university hopes to provide as much flexibility as possible by not setting too many prerequisites (you'll note that few CSSE units have prerequisites, just strong advice as to what to take). While prerequisites enable a lecturer to assume a better depth of understanding, they play havoc with students entering their degrees mid-year, different cohorts in the same units, or for students failing a prerequisite required by a core unit.
  • 1. The HELP forum is not user-friendly; navigating between responses for posts per link is just..... hurts my head
    2. Chris' teaching style was great, however, sometimes a bit too stripped down and bare. It was unclear who he was catering too in terms of experience and it made the expectations of the unit a bit unclear.
    3. The assignment objectives were written like a secret journal. Felt like I was having to 'decipher' what to do. I don't expect to be handed the answers but I've experienced assignment objectives that were straight-forward but still promoted individual work and creativity.
    5. Too many resources. Learning C for the first time and being given an abundance of resources makes it hard to manage which resources are effective in the face of 13 weeks.
    6. With all due respect to [], he was a nice and friendly person, but as a tutor, I felt his teaching skills were unsuccessful. Few times I would ask a question and get a weak response.
  • No idea why this unit is listed for data science, it is a bunch of stuff i do not care for nor taught well
    It may not help your degree but, from 2020 CITS2002 will not be a DS core unit.
  • Chris explains things at a philosophical level it was a bit hard to follow. But in general, I enjoyed him sharing his insights and thoughts rather than just passing technical knowledge. I admire his passion to lead the unit despite his health condition.
  • a very good unit. I found the C programming side much more easily absorbed than the systems side of things that was comparatively less graspable. I don't know if this due to the way it was taught or more likely just the nature of the subject matter. The project was a very good learning experience and could probably bare to be worth more than 30%. The exam is currently worth 50% and I would expect to get a similar mark to what I get for my project but for much less time spent so perhaps they should be 40% each. Having 1 larger project rather than two smaller ones had positives and negatives. I found that with 6 weeks dedicated to it I was able to produce something of higher quality than I have before and really spend the time thinking, researching, and learning. On the other hand we learn too many things during that time so by the time you get to the end of the project the first stuff written is no longer representative of your understanding or skill.
  • The unit being split half C half systems would have been fine if they were grouped together better rather than an uneven combination of C and systems, it would have been nicer to learn all the C before the project and then the systems stuff later. Two projects would have been better than only the one that was given, as 2 projects are useful to see where you can improve when learning a new coding language.
  • The semester test should not be weighted as highly
    The test contributes 20% and covers the first 5 weeks of lectures (12 weeks in the whole unit). I can't imagine it contributing only 10% or 15%, or is the suggestion that the test should be longer?
  • The exam is the first time any questions are asked about the operating system (OS) portion. Tutorial style questions about OS' in addition to the lab sheets would be useful in preparing for these questions in the exam. Access to more past exam papers would also be useful. The unit not using LMS improves the experience. Chris' apt responses in the forum were a boon. Perhaps if students could be subtly pointed to the relevant resources for the project, or have 2 projects so students learn from the pitfall of their first project. The recent student's feedback section of the website displays that this feedback is taken seriously and is a big part of why I have written a long response.There is difficulty in the OS lectures determining what content is assessable rather than enthused information about the topic, though the enthused information is valuable in displaying a high degree of confidence and builds trust in the lecturer's knowledge. A higher character limit would be useful.
  • A well run unit, lecturer Chris was very good in lectures. They flow very well and he keeps them interesting with relevant info/sometimes history which I appreciated. He missed a couple of weeks lecturing due to illness and some colleagues had to step in and it was quite a change as they mostly just read from the lecture notes (I didn't mind as they were temporarily covering, and is more a credit to the way chris lectures). I was quite a terrible student in this unit, I spent a lot of time focusing on one of my other units (ELEC4403 digital embedded systems), which CITS2002 was a recommended precursor unit, thinking that the things I would learn in that unit would transfer down to this unit and I would be fine. Come 4 days from assignment deadline, and I decide to actually start the project, I realised that I was out of my depth, queue me submitting my shoddy assignment a day late. In previous years it seems CITS2002 had 2 projects rather than the one big one, and I honestly believe [that that would be better].
  • more assessments , if you bomb one project, it's hard to get a good grade or pass at all. How can I see where to improve if there is only one project?
  • unit requires a level of investment into learning things outside of the lectures in order to do well, especially for programmers who are not that confident, such as myself. The books are necessary in my opinion, and my grades will have suffered due to my purchasing reluctance and laziness. I have listed the unit as well-organised, however, unforseen circumstances to do with Chris's own personal health screwed with the unit's structure. It meant the singular large project (instead of the 2 smaller projects) could not be given during a time where important concepts, that were crucial to know about in order for early designing of the program to be effective, were given later during the project itself and thus people had to make changes, offsetting any progress they had made. This was unfortunate, but couldn't be helped. Chris is an excellent lecturer, and while some may complain about his tangents, I found them to be insightful and interesting. Good unit.
  • I learned a lot from this unit, but most of it came through the final project. I do not think I learned a whole lot from the lectures. I had only taken the CITS1001 Java course, so I was very inexperienced with programming. Listening to the lectures was hard and I felt bogged down with jargon. Chris goes quite fast with his explanations, and I think is geared more towards students who have more background knowledge than I do. (I heard this from some other students as well.) I understand the need to cater to all the students, but it seemed that if I simply read through the lecture slides and thought about them, I would get more out of them than attending a lecture. I hope Chris is doing well after his health problems early in the semester. I really appreciated how much work he put into Help2002, where nearly every question was answered promptly. It helped a great deal with the project.
  • Not enough coding demonstrations.Slides not concise,info too long winded.Not enough just boxes and arrows used to explain concepts.Expect self-learning,learner unknowingly misunderstood concepts and not clarified until after midsem released.Talk too much excess info,not precise with explanation of concepts. Workshop:Not enough guidance towards how to begin attempting WS problems.Guidance should not be in word form,should be codes or notify what functions to look at before workshop.Should teach debugging. Labs:Not enough lab demonstrators,only able to ask 5 min in a 2 hr session due to overcrowding.Expects student to be free during other lab timings.9 labs available,able to make it to 2,means only 10 min of asking. Project:Questionnaire too long winded,not clear of outcome.Stuck at debugging(hard to progress),not enough time to clarify with demonstrator. Unit:Electrical Engineer recommended to take unit,see no link to engineering.Feels like level 3 unit.
    If you're seriously disliking any unit, you should speak up or drop out - don't leave it until the end of semester to express your concerns about things that could be addressed or better explained.

Department of Computer Science and Software Engineering

This Page

Written by: Chris.McDonald@uwa.edu.au