Back to the faculty page for James Tam | Return to the course web page | Return to the A3 assignment description |
CPSC 233: JT's tips and remarks regarding more challenging assignments such as A3 |
That is perfectly normal for the average student. It doesn't necessarily mean that this course is not for you nor does it mean that the assignment is unreasonably hard (I've actually used this assignment a few years ago during a fall semester when there was a higher proportion of students who were non-majors. The average grade was significantly above a passing mark). That means that most students are eventually up to the challenge.
From the years that I've taught the first year courses most students will find at least some of the assignments challenging. Furthermore I can recall from my own days as an undergraduate student that this was also for my classmates and even for myself. Some (or many) assignments looked intimidating at first but with persistence and hard work most of us got through it. (For one rough assignment we had only 5 days to implement 4 programs. For the first two days I remember being completely stumped, I couldn't write a line of code. On day three a major break through occurred and after that I seldom left my computer until the assignment was due. In the end I almost completed everything, I think ended up with about 95 out of 100 marks because I just ran out of time before the deadline).
Facing ever increasing challenges is needed from course-to-course or even from the start to end of a semester for the same course. This is the only way you can develop and improve your skills. (It's analogous to doing more repetitions and progressively adding more weights when you are trying to build muscle mass). That's how students can in the computer science program can go from writing simple branching and looping programs in the early part of CPSC 231 to writing real time multitasking operating systems (CPSC 359,455) or working on large software development projects (sometimes required in courses such as SENG 301, CPSC 333, SENG 401 and CPSC 451). In some higher level optional courses I've seen student projects that included a networked real time first person 'shooter' (CPSC 441). This helps prepare graduating students for the complex real world challenges they may face in industry.
This of course doesn't guarantee that any individual student will get through the course. It's just indicating that if you follow all the tips that I've been giving you (especially at the start of the term) you have a better chance of getting through it.
A tip from my teacher in grade 6: Mr. Haggerty: Approach it like a hamburger! (No offense intended vegetarians or vegans intended but I wanted to accurately paraphrase his words). One doesn't try to eat a hamburger all in one gulp. One must take it using smaller manageable bites. If you tried to eat all at once you would likely choke. (If the typical student tried to complete the assignment all at once then that person may also choke so don't try this at home or anyplace else for that matter!)
Whenever possible I try to create custom assignments rather than using someone else's description so I can design the assignment such that it consists of parts that can be implemented on their own one at a time. Sometimes parts are interdependent but I never design assignments that require an all or nothing approach (i.e.,you either are able to figure it all out or you won't get any parts working, that's how the aforementioned 'tough' assignment was written up for us and one reason I lost two days at the start).
The coding for some parts of the assignment may just involve basic concepts from CPSC 231 (output, getting user input, loops). Get those easy parts done and build your confidence. You may find some of the other parts not nearly so intimidating if you work on them one at a time. And you don't have to work on the features of the assignment in the order that they are listed or even the order in which they will execute when your program runs. Some students may find that the features to determine the conditions for ending the simulation (e.g. orcs or elves win, draw) are not as hard to implement as the other parts. Likely most students will find movement and attacking enemy opponents the hardest features to get working so you might wait until the end before attempting them.
Finally it's highly recommended that you backup your work periodically by making a new version. You should also submit your incremental work often into D2L as well so you have an additional backup and something that you can get partial credit should things go wrong.