CITS2002 Systems Programming  

Unit home

Lecture & Workshop
recordings on LMS



C textbooks

OS textbooks

Information resources

Extra reading

Past projects

Recent feedback

Working effectively

CITS2002 Systems Programming - Project 1 Feedback (2022)

Q12: Any comments or suggestions about the nature of the project?

  • Interesting project with a more grounded basis, very enjoyable to do and didn't make me feel like "what's the point of the this?"

  • I thought it was fairly easygoing and helped me solidify a lot of my understanding of the syntax and standard C functions which I found quite helpful.

  • I liked how it had relevance to a more abstract program, the cron process, while we just completed a normal programming task.

  • I found the project quite interesting and fun to work on, but a few more hints and maybe examples of edge cases to spur some thinking would not have gone to waste...

  • There were quite a few words in the task sheet. Less in the future would be nice
    In contrast, a number of other comments suggest the project was under-specified, suggesting more words. But, I feel that a shorter description would have omitted important detail, just requiring more students to seek more clarification.

  • I found the project was challenging but I did enjoy it in the end. Having never done C before, I found I learnt far more doing the project than I did in the lectures.

  • I did feel a bit unsupported in the labs, as the lab demonstrator repeated my question back to me instead of discussing with me or giving a little nudge in the right direction. I also found that sometimes they spoke above my level of understanding of C which was pretty rough when I'm right at the start of my C journey. So maybe lab demonstrators need to ask a question about your level of C understanding so they can adjust their answer to best support you?

  • sample solution WAS OF GREAT USE, would love to see it in every project.
    We aim to have different projects every year - - so we need different web-based sample solutions for each.

  • Solid project, no complaints here, the sample solution to test against was super useful

  • The project fit reasonably well in terms of the content covered so far. Whilst personally I found the project difficult and did not complete in the allocated time, I believe I learnt a lot from the project.

  • Some clarifications about the project had to be made mid-way through, which I did not notice until the final week of the project. Making sure students are aware of any updates or clarifications made about the projects would be helpful.
    Clarifications are designed to be made mid-way through a project, usually when more than one student raises the same issue on the help forum. The onus is on you to check them occassionally, rather than be reminded.

  • The content of the project was not too challenging but I struggled understanding it before going to a lab. I think there were too many possible exceptions that a majority of the project was trying to find and produce these exceptions rather than actually producing the main program.
    The general approach is to identify valid input, which was well defined for this project. Everything else is invalid. Have a look through the sample solution. Checking for errors in an important activity for any (systems) program or utility, and it was easy to synthesise invalid input with a line of random characters.

  • I feel that the project was to let student get used to c# coding and its lack of certain features.
    A confusing comment. ??

  • I think it was a very good 1st project as it was mostly just a coding exercise and if you spent the time you could easily have completed it.

  • I understand the whole wanting the students to do there own research but hardly any of it had to do with the lectures except for the reading of files.
    I'm a bit confused by this comment; there's no expectation that projects only 'cover' lecture material, or that all lecture material is (can be) required for projects.

  • I found that a lot of the project was not C specific. Rather I found myself using a lot of my Java knowledge from previous units to complete the project. I understand that object oriented languages are very similar, but I would've liked to explore memory allocation more in the project.
    There will be plenty of dynamic memory allocation in the 2nd project. Confused by the reference to object oriented languages, though.

  • I had not attended any workshops before this point (I could list reasons for that choice, but it's probably not super relevant), and I had a lot of trouble understanding how to write in C, and had a difficult time writing a good program. Most of this is easily attributed to my my absence from the workshops, not having written anything in C before made trying to learn C while completing this project a massive challenge.

  • All my submitted project actually accomplished was checking the file formats and assigning the file's contents to variables. I couldn't see any way to accomplish this without having if statements and a lot of flags for each possible case I could find. I understand this to not be a very good way to program, and I reckon there's some space to encourage some better programming etiquette.
    Please have a look through the sample solution, and ask any questions you have about its design decisions.

  • I was not too familiar or comfortable with many of the functions offered by the C standard library, and often resorted, repetitively, to writing my own to brute force simple operations. I have had no prior C experience. My most comfortable programming-language is Javascript, after taking CITS3403 as a 2nd-year, and completing some small web jobs.
    The majority of students in this unit have no prior C programming experience, just one or two other units, that have used other languages.

  • For an idea of completion time: Due to unfortunate circumstances, I started properly coding on the 12-Sep, allowing 5 or so days to complete the work. This of course forced me to work alone. Overall, I clocked around 100H of coding; including planning, debugging, and learning how C worked and how to accomplish what I desired.
    So, I think you did learn something from the project :-) There's enormous value in reading project descriptions early, just thinking and discussing them, before any coding is commenced.

  • I was able to produce two of the three final outputs, implement some error-checking, and document the code. Given my personal circumstances, I am satisfied with the outcome.

  • seemed largely a string handling task, something I wouldn't select C for in similar future tasks. It was useful for learning the syntax in a practical way

  • Good project testing programming skills in C. Only negative is the stressful nature of catching errors from reading files. Can be really disappointing when you coded well but lost marks due to an edge case you didnt think of.
    Marks are not 'lost', there is no negative marking. There was no need to identify edge-cases, there were no edge-cases, just to identify and work with correct inputs.

  • Was a good project to solidify programming in C.

  • perhaps a skeleton code with all the todos listed on the page.
    That approach is necessary for 1st year programming units but in 2nd year, and moreso 3rd year, projects require you to work from a project description, to design, and implement your solution. We move from 'filling in the blanks' to 'problem identification and solving'.

  • I thoroughly enjoyed the project, as it was my first dive into a bigger C project aside from the labs and really got me comfortable with using many of the language's features. The only thing that tipped my survey's response from "very interesting" down to "partially interesting" was that at times I felt as if I was just building a generic scheduler as opposed to something an OS would use and had trouble relating it back to Systems Programming concepts, though perhaps that is just something I personally should reflect on instead of blaming the project (which again, I thought was very well done anyways).

  • Thank you for the learning experience.

  • The task given was fairly boring. It would have been more interesting if Chris got us to actually write a full version of the cron program.
    I agree it would have been more interesting, and challenging, but it would have left the majority of students behind after just four weeks.

  • The project was too large in size to be contained on one file. scrolling through to find the desired part was unnecessarily frustrating. custom header files would have been nice.

  • Better wording, otherwise very satisfied

  • Only a minor thing, but sometimes I found the language used in the spec, labs and the help forum mildly confusing/contradictory, mostly in relation to what was guaranteed in the sample and what we had to check for.

  • Instead of further developing my problem-solving skills and learning new ways to approach it, I found myself most of the time trying to fix memory issues and segmentation faults. I feel as though the difficulty curve would of been much lower if it was a different language that had strings instead of char arrays.
    This project was designed to only require arrays and structures, with well-defined limits on the maximum number required. It's almost certain that any memory issues and segmentation faults in this project were caused by exceeding array bounds.

  • I thought the project was a good difficulty and I enjoyed it. Parsing and argument handling was a great systems exercise but I think writing a date/time simulator in C is a bit tedious and irrelevant, I spent more time thinking about time then systems. Also maybe consider providing a basic vector library, I know C is 'barebones' but there are probably no std'ers looking down on you for not implementing your own printf.

  • A suggestion would be to actually give help when the student has done a considerable amount of effort in order to solve a problem, but has then been unable. The constant lack of help was very depressing throughout the project even when we had tried every imaginable way to execute a function and still failed, I feel that we were met with a lack of understanding from the coordinators and while I understand the nature of computer science degrees requires an extensive self-driven approach and a DIY attitude to a lot of problems, this was way too detached to even call it mentoring from the tutors end.
    If you've been having such serious concerns in any unit, you should discuss specific problems with the Unit Coordinator, by email or in their office, as soon as possible. Don't wait for an end-of-assessment anonymous survey to raise concerns; that won't assist you or even other students.

Q13 - Do you have suggestions/comments to assist the planning of the 1st CITS2002 project for next year?

  • I can see how some people would have experience a very steep learning curve going from the week 4 material to starting the project (and definitely by the end of it), but I think that it was very achievable in the timeframe, as long as you put a decent amount of effort and time into researching (slightly beyond) lecture material. The hardest part for me was developing enough different test cases to test my code against, which is something that cant really be taught I suppose. That said, some help developing edge case tests would have been handy, maybe towards the latter stages of the projects timeline.

  • Less words

  • I think it would be helpful to provide small assessments along the way to make sure students were ready to for this task. I feel like I wasn't able to gauge myself and determine whether I was ready for the project or not until three days before the deadline.
    The challenge with small assessments along the way is getting them marked/evaluated in time to provide feedback. We're providing sample solutions for the weekly laboratory tasks and, if you're unable to assess your attempts against those (or cannot understand why a task was set), please ask on the help forum or in labs.

  • Maybe some sort of extension/bonus task (worth no marks or extra marks) would have made the project more interesting.
    I feel that it's important that all students have the opportunity to attain 100% in the first project, if they've been working and progressing consistently. The obvious extension to this project would be actually executing requested commands, and measuring their actual execution time.

  • I found the project to be far too easy. It would be cool to have increasingly difficult extensions to the project which can grant extra marks.

  • Please note what the edge cases are and how the program is meant to react to them.
    One important role of the sample solution was to do just this. Please read the other discussions on the (absence of) edge-cases.

  • More clearly define the task in the task sheet or explain the task early on so people don't start and realise they have been doing the wrong thing
    The 4 days from the project's release to the (poorly attended) project workshop were timed to give students opportunity to think about the project. Starting projects early is certainly encouraged, but it doesn't (shouldn't) imply coding immediately. Others also asked questions on our help forum during those 4 days.

  • Obviously, it's quite subjective, and not every student would follow through but I'd recommend really encouraging students to start the project in the first week, just getting an understanding of their idea of how to do the project by reading the info sheet, setting up the basic main function and opening and reading files if necessary to then transition into the depths of the project after the workshop. It was a project that ended up taking a lot of time for me personally so if I didn't start as early as that I would have been stressing!
    I strongly support your advice, and lament that many more students appear unaware of this by the fourth semester into their degrees.

  • I really appreciated having the sample solution present to check the validity my project. I think this tool will remain useful for next year's students, and I would love to see this tool again for project 2!
    Thanks. We require different sample solutions for each project, and try to provide a sample solution if it can 'work' over the web.

  • Having the sample solution to test against like this year's project would also likely be very useful to future students

  • I reckon they'll always be students like me who underestimate the value of the workshops and actually using C before the project, but I don't reckon its a bad idea to continue stressing its importance.

  • The Workshop 5 (2 & 4 to some extent), the sample solution and Help2002, were all immensely helpful. I was not in Perth for these workshops, but benefitted from the attending students asking the questions.
    Thanks; it's been a very disruptive past two years, but we really need many more students back on campus for university teaching and learning to be effective again.

  • It was extremely helpful for me to have a partner for this project as it helped me stay motivated to complete the project sufficiently

  • Only thing I can think of is limit the amount of errors able to be found but I understand its a tough ask when working data read from files.

  • Would have preferred a first project with which I could make use of new operating system knowledge. I think the unit should have spent 1 week on C programming and then immediately followed by dynamic memory allocation with C so that we could have used new concepts in the first project. Felt like the project was just rehashing previous unit content but in C.
    An interesting comment, thanks. (Of course) I wish all students were fully up-to-speed by week-2, but these surveys and project submissions clearly indicate that we'd leave far too many students behind if we assumed that.

  • The clarifications and advice given in the workshop and other sources like the help forum were excellent and cleared up many problems I could've had. I thought the spec was detailed as well, giving great specifications/limits to certain parts of the project, just keep it up to the same quality as this year and I think it'll be go smoothly.

  • Please go through structures and their applications in more detail, as the entire concept was left to two slides after arrays and Chris did not end up covering it as we ran out of time in class.

  • Teach people how to use git effectively. It makes working with a partner achievable, which makes the project easier and less time intensive.

  • If it were possible to allow student pairs to agree on contribution percentages and have their mark affected by it, that would be great

  • I think a fun project idea would be a making a toy interpreter with ASM like 3 character math functions that act on registers. Each line of the file would be something like "add a, 76; mul b, 23; sub a, b; print a". I think this would teach C and how cpu's actually work simultaneously. Writing a lower level project like this would probably make using C feel less like torture and more like necessary evil.
    I agree with your thinking, and hope to have something like this in future years. But there's a danger of requiring too much knowledge of programming language implementation, and not enough focus on systems programming. We tried something similar last year - - which was appreciated by stronger students, but overwhelmed some others.

  • Please work with a language or writing assistant while writing the requirements and specifications for the future projects. There were way too many times that we had misinterpreted the project just because of its wording and had to constantly go back to our coordinator to clarify details, to which he personally admitted that he didn't really know how to word it either. This is quite unprofessional and easily resolved. All material and units and textbooks are very well put together in the unit webpage, it would be wonderful if the projects and its extensions would do the same. This way, time wasted on resolving lexical issues could actually be spent on working on the actual project and perhaps more people could submit on time.
    I find your comment and sentiment overblown.

    I've recently re-read all help2002 posts requesting clarification, as I encourage you to do. Yes, some things needed clarification, as no project description is perfectly written, or ever going to be perfectly understood by all students simply requiring something to be paraphrased. You'll see many repeated forum questions that had already been answered, questions that could be answered by running the sample solution, questions whose solution had been provided in an earlier Friday Workshop, questions asking if "at least 6" means other than 6, questions asking if "3-letter lowercase abbreviations" permit uppercase abbreviations. You have too much faith in the powers of a writing coach. I appreciate that things will always require further explanation. And that's why we quickly clarify things.

The University of Western Australia

Computer Science and Software Engineering

CRICOS Code: 00126G
Presented by [email protected]