This was a really well taught subject that could be both challenging and genuinely enjoyable. As many other reviews both here and elsewhere will say, Alistair is a very passionate and engaging lecturer, which really contributes to the subject experience. The key to doing well is to code throughout the whole semester, and also practice hand-writing your code as well. If you're like me and don't live on or very close to campus, download the (free) software (Jedit, MinGW) needed to do the lab work at home.
The only prerequisites for this subject are some form of first year linear algebra and calculus, so you don't really need programming experience to enroll in this subject. That being said, ENGR10003/ESD2 is listed as the recommended background knowledge. I took this subject the summer before, and found that it helped with the first few weeks (since it gave me the basis gist of the programming skills/concepts used), as well as with some of the theory behind number storage, which wasn't really directly taught in Eng Comp such as binary and hexadecimal number conversions. It wouldn't be impossible to pick this stuff up without ESD2, but would definitely required more effort and research.
The subject will mainly teach tools used for programming - Numbers in and out, branching/selection, loops, functions, arrays, pointers and structs. After being introduced to this, you start to look at the theory behind how numbers are stored (E.g. Types of binary, floating point representation ect), and types of problems that utilize the skills taught such as root finding, numerical integration, computation involving matrices and simulation.
Lectures:
Involved Alistair talking through a bit of the theory, but primarily showing programs and how they work, as well as other illustrations of the concepts (E.g. By writing on paper, getting the audience involved). Although attendance was strongly encouraged, I usually only attended around 1 a week due to timetabling and found that the lecture capture was sufficient. However, they are definitely worth a least watching, as you pick many important tips and tricks, as well as code you might not see elsewhere.
Workshops:
Was split into two distinct phases; the first hour would involve your tutor explaining/reviewing the concepts, and group discussion of questions. The second hour involved you working individually on prescribed book questions, while the tutor/s would assist if needed. You could probably get away with not attending if you have experience with programming and are clear on the expectations, but as someone new to programming I found them to be very helpful, especially for assignments. On a slightly related note, the tutors were also all very dedicated, offering help and answering questions promptly on the subject discussion forum on the LMS throughout the whole semester.
Assignments:
Both assignments were very time consuming and challenging, but could also be enjoyable and easy to get stuck into. A rubric, as well as samples from past assignments were provided, so expectations were very clear, but applied strictly so be careful to check thoroughly. You are assessed on the presentation of your program, structure/approach and output. Submission must be done through dimefox, which involves a few steps, and possibly downloads if you want to do it from home. It took me a while to figure out, but became easy once I got the hang of it - Definitely take him seriously when he says to submit as you go, or at least submit a practice before due date is close (you can submit as early and often as you want). The results distribution for both assignments was (and usually is) very top heavy, so although it requires a lot of thinking, if you start early and put in the effort, great grades are very doable in this aspect of assessment.
Mid-semester test:
Although it only tested basic concepts (selection, loops and functions), it was a tough test (From the test page, "mean=4.6; median=4.0"!) and many felt pressed for time. Make sure you review the practice tests, as well as book questions and problems from workshops, but don't be too discouraged if you're not happy with your mark as it's a stressful test with very limited time!
Final Exam:
Was surprisingly a bit easier than expected (Probably due to the lower than usual test scores in this semester/year), but don't expect this in the future, especially if Alistair is your lecturer. The structure of the exam is outlined pretty clearly in the exam prep lecture slides so you pretty much know the types of questions to expect. In general, there will always be enough "basics" so that anyone who made some effort and knows the basic tools of C can pass, a 90/95er separator which is very difficult but worth a small number of marks and questions at the levels in between, testing the slightly more complicated C tools, and the theory based questions on topics such as number representation, and practical computation problems such as integration. I'd highly recommend going into the final exam being able to quickly code simple mathematical functions (Specifically exponential and factorial), insertion sort or some other sorting algorithm, swaps with pointers, exit failures, and whatever else seems to be frequently needed. In fact, I'd also recommend this for the test, but only involving functions using the skills taught thus far.
From the exam page, the final mark distribution was "min=5.0; max=92.0; mean=64.2; median=67.0; sd=16.1; 14.8% below 50"