This course is an introductory programming course, using Java as the programming language. It is not a course in professional Java Software Development, but a course about the fundamentals of programming that happens to use Java. This eventually entails learning about the fundamentals of object-oriented programming, but in this course, we will start out with procedural programming in Java.
The course content does not consist of independent modules - they build heavily on each other. As such, it is important that you attend the lectures and keep up with the course content, as later course content requires that you understand what has come before.
The following is a description of how the various parts of the course work and interact. You can see this description as essentially a more readable version of the relevant parts of the class summary.
Assessment#
| Assessment | Value | Notes |
|---|---|---|
| Homework mark | 10 | See below. |
| Lab mark | 5 | See below. |
| Week 4 Test | 15 | Redeemable by the Final Exam |
| Week 8 Test | 20 | Redeemable by the Final Exam |
| Final Exam | 50 |
Lectures#
Lectures are the primary way that you will be introduced to new concepts. Lectures will contain conceptual explanations as well as coding demonstrations. I will make lecture recordings available, but my style of lecturing is very conversational and I don’t expect that recordings will offer the same high quality experience that can be gained from in-person attendance. Use them only as a last resort, when unforeseen circumstances prevent your attendance at a lecture, or for revision purposes.
I tend not to use slides in my lectures, and instead will deliver lectures based on a pre-planned lecture outline. These outlines are then turned into detailed notes which can be used for revision, however this happens after I deliver the lecture. Please be patient and allow some hours (in the worst case, days) for the production of these notes.
Labs and Homework#
Labs#
Weekly lab exercises are made available on our GitLab instance. It is expected that you work on these exercises during the 2-hour lab sessions, one of which you should enrol yourself into. A tutor will be present to answer any questions you may have, or to help you when getting unstuck. Out of the 12 lab exercises, the best 10 labs will be used to determine your lab mark. For each lab, two points are available for a total of 20:
- Part A: Awarded for interaction with your tutor, answering questions about your solution, within the tutorial.
- Part B: Awarded for submitting a reasonable attempt at the problem (it doesn’t have to be completely correct, just a reasonable attempt).
Homework#
In Weeks 1, 4, and 8, special homework exercises will be released. These are intended to be more involved programming tasks that should prepare you well for the midterm tests and final exam (see below). Upon submitting a homework solution, GitLab CI will automatically assess your homework, and inform you of your provisional mark. You can of course submit again to try to improve your results. Note that, as these are automatically graded, there are no marks awarded for style, however style is a concern for exams, so be mindful of style when writing your code.
You may ask tutors in labs for help with homework, but only if you have finished the lab exercise for the week first.
To allow students some flexibility, and avoid increased stress, the formal deadline for all homeworks is not until the end of Week 12 – that is when the marks are finally added to the gradebook. Until then, you may continue to improve your solutions. However, it is expected that you would attempt all questions of Homework 1 before the release of Homework 2, and likewise for Homework 3. It is an extremely bad idea to leave all Homework until Week 12. We may send gentle reminder emails if we do not see submissions for homeworks.
Extensions#
See the Policies page for information about late assessment of labs and homework.
Submission#
Your work files (Java source code, statement of originality, etc.) are submitted via Git code repositories hosted in Teaching GitLab (see the Git quickstart page for more details).
You should be extremely careful to ensure that the latest commit pushed to the remote repository hosted in GitLab before the deadline is actually the one that you want us to mark. Otherwise, we could end up marking a version of your work for which you may obtain significant less marks. Due to logistic reasons, we are not able to make exceptions here. As a general recommendation, do not leave the submission of the final bits of your work to the last minute, so that you have enough time to double check that the latest commit pushed to the remote repository is actually the one that you want us to mark, and amend your submission if necessary (typically by pushing an additional final commit with the fixes required).
Mid-Term Tests and Final Exam#
Mid-Term Tests#
There are two invigilated, mid-term exams in computer labs, consisting of 80 minutes writing/coding time plus 10 minutes reading time. The first is in Week 4 on Monday, 16th of March. The second is in Week 5 on Friday, 1st May. They are worth 15 and 20 percent of the overall course grade respectively.
You will be permitted to bring a single a4 page, double-sided, of notes to the exam.
If you do not perform well in the mid-term exam, or are unable to attend a mid-term exam, the mark for either or both of these mid-terms can be redeemed by the final exam. That is, if your final exam mark (as a percentage) is higher than your mid-term exam mark (as a percentage), the final exam mark will be used as your mid-term exam mark.
Final Exam#
The Final Exam is an invigilated exam in computer labs, consisting of 15 minutes of reading time and 3 hours of writing time.
You will be permitted to bring a single a4 page, double-sided, of notes to the exam.