The University of Western Australia
School of Computer Science and Software Engineering

School of Computer Science and Software Engineering

CITS4406 Problem Solving and Programming

Practical work is an essential component of this unit, with overall success strongly correlated to regular practice and completion of lab tasks. Weekly labsheets reinforce the core concepts introduced in lectures, testing students' understanding and ability to implement concise programs to simple problems. Labsheets will rely heavily on the knowledge learned from earlier labsheets, and the programming projects will assume you have completed these tasks, so be sure to complete the labsheets in a timely manner. Recall, you are expected to work outside your allocated lab time in order to successfully complete the labsheets.

Lab sessions are not run as regimented, formal sessions. Instead, lab sessions simply provide times at which we guarantee that there will be a lab demonstrator there to answer questions. Further, while it is expected each student will attend one lab session per week:

  • you are free to attend any lab in which there is space (if there is insufficient space in a lab, those not registered through OLCR will be asked to leave first),

  • you do not have to attend each lab,

  • you do not have to attend any lab if you are progressing unaided,

  • you do not have to attend the same lab each week, and

  • lab work is not (directly) assessed.

Sessions will be held at various times throughout the week, as listed on the UWA Timetable website. Each lab session is listed to last three hours. However, a lab demonstrator will be available to assist you with questions only for the first two hours of each session. Note also that there are fewer available "seats" in our lab sessions than there are students in the unit. This is because we anticipate that many students will choose not to work in the nominated lab times, will choose to work in the labs at other times, and undertake much of their work at home or on their laptop computers.


Labsheets include questions designed for students from all experience levels. Determine your level based on your current level of experience, and how well you understand and can complete questions. More advanced tasks, identified by one or more chillis, are set for students who have previously programmed in another programming language. Beginner programmers should not be concerned if they can not complete these advanced tasks. That is, beginners should deem themselves to be keeping up with the requirements of the unit if they complete all of the introductory (non-chilli) tasks each week. More advanced students should aim to complete all introductory and all advanced tasks each week, even if they think a question is trivial - there may well be some important subtlety being raised by the question.