This page is transitioning from the previous semester and some details haven't been updated yet or are still in flux. You can expect the course website to be in a more definitive state by the start of the semester.

Looking for the course site from 2026-S1? See its archived website.

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 the week 3 workshops, 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 (when in doubt, however, the class summary is the document that counts).

While being an introductory course, this course assumes that you already have some basic programming experience. This assumption is new this year following the creation of the new course COMP7710 for Masters students without prior programming experience. If you do not have any such experience, this course may be very hard for you; please consider talking to your program convener about your options.

In Semester 2, this course runs under three cobadged course codes:

  • COMP1110 (Structured Programming); it’s assumed you have either completed COMP1100, COMP1130, or COMP1730, or have equivalent experience
  • COMP6710 (Structured Programming); it’s assumed you have a prior cognate degree and some programming experience
  • COMP1140 (Structured Programming (Advanced)); it’s assumed you have completed COMP1130 or have equivalent experience

Of those, COMP1110 and COMP6710 run largely in the same way, while COMP1140 includes some extra content, taught in workshops and through a project that replaces the later homeworks. Where not otherwise stated, the below parts of the course apply regardless of the course code you are enroled in, though assessment values may vary between COMP1110/6710 and COMP1140. You can consult the Assessments page for details.

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 I don’t expect that recordings will offer the same quality of 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.

There is an assessment component related to lectures, called Class Engagement, which amounts to 5% of the course grade.

I will use slides sparingly in the 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.

There will be no lectures in week 9.

Workshops#

You’ll see on your timetable that the Tuesday lectures are immediately followed by a one-hour workshop. If you are enroled in COMP1110 or COMP6710, the only time you actually need to come to the workshop is in week 3. From week 4 on, the workshop is for COMP1140-related content and activities. Everyone is welcome to attend, but the things discussed there will not be part of any assessments for COMP1110 or COMP6710.

Workshops will be a highly interactive activity, and will not be recorded. For COMP1140, they form the basis of the project (see below), whose details we will develop together in the workshops. Again for COMP1140, there is a Workshop Engagement assessment, based on both your engagement in each individual workshop as well as your contributions to the project overall.

The will be no workshop in week 9.

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 getting unstuck. Your Lab Engagement mark will be based on your engagement in the labs between week 3 and 12 (you are still encouraged to attend the week 2 labs, and you will get feedback for them).

If you don’t finish your lab exercises within the two hours of a lab session, you have until 23:59 on the Friday of the same week to update your code on GitLab.

NOTE: MyTimetable shows all lab instances for which I have room reservations, based on estimates of the maximum number of students. Some of these labs are locked and may not run, I will only open those when the number of enroled students meets certain thresholds. This is to avoid having to close down labs and disrupt your schedules later in the semester.

Drop-Ins#

We will offer drop-in sessions throughout the semester, starting in week one, where the labs that will be running starting week two are mirred by drop-in sessions at the same time. You can go to any and all drop-in sessions if you need help with anything related to the course, and the tutors there will help you.

The drop-ins in week 1 are mostly meant to help you get set up for the rest of the course; if you have already set up the recommended software and are able to run the basic exercises suggested for week 1, you can skip them.

You will also see some drop-ins (DroB) on the timetable. These reflect room reservations I have to run drop-ins; not all of those will run throughout the semester. For all drop-ins, please consult the Weekly Schedule pages for up-to-date information on when any are running.

Midterm Tests#

To prepare you for the final exam and assess your current learning, there will be two tests during the semester - in weeks 5 and 10. In each of those weeks, the test for COMP1140 starts on Monday at 5pm, and the test for COMP1110/6710 starts on Tuesday at 10am. You need to enrol in the test appropriate for your course code - they will be different tests.

Each runs for 10 minutes reading time and 80 minutes writing/coding time and is worth 10% of your course marks. Both are reedemable in the final exam, so if you are unable to attend or have a bad day for one or both of the tests, you can make this up later. Generally, however, it seems to me that students prefer to not increase the value of the final exam.

For yet another test run, there will be a lab test simulation in week 4. Please be on time for the start of those labs in order to participate in the simulation.

Homeworks#

In Weeks 1, 5, and 9, special homework exercises will be released, due in weeks 4, 8, and 12, respectively. 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.

You may ask tutors in labs for help with homework, but only if you have finished the lab exercise for the week first.

For students in COMP1140, homeworks 2 and 3 (released in weeks 5 and 9) do not apply, and homework 1 (released in week 1) is a formative assessment only.

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).

Project and Practice Project#

This section only applies to COMP1140. Part of this course is that you will build a working Chat Server and Client that communicate over a network; exploring a kind of application that Java is typically used for. In the workshops, we will together design the specification for how this system works, and while each student must produce their own version of each component, one should be able to swap any of your components with the same component of any other student in the course. I will cover some advanced topics that we will make use of to build this project in the workshops.

Most of the development of the chat system will happen in the second half of the semester. It has traditionally been possible to switch from COMP1140 to COMP1110. To simplify the logistics of the project (and mirroring the requirements of PhB ASEs, which this version of COMP1140 effectively represents), you should ideally do this before the start of the second half of the semester (better yet: before the census date).

You will be given a small practice project around weeks 5 and 6 so you can test your basic understanding of the relevant concepts and decide whether this project is for you.

The Project happens in several stages, the last one (the complete code artifact) due at the end of the semester. In addition, you will be scheduled for an interview with me during the finals period, where I will assess your understanding of your code and your overall participation in the project.

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 not have internet access, but you will be given access to certain standardized documentation.

Assessment Release Dates#

Homeworks and Project parts have associated release dates. These are meant to be dates by which I intend to release the instructions for the relevant assessment. I may release them sooner, sometimes by a few days.

bars magnifying-glass caret-down plus minus arrow-right xmark