COMP211P - Introduction to Programming

This database contains the 2017-18 versions of syllabuses. Syllabuses from the 2016-17 session are available here.

Note: Whilst every effort is made to keep the syllabus and assessment records correct, the precise details must be checked with the lecturer(s).

Please note that there are no longer any available places remaining on this module.

Taught ByRae Harbird (100%)

This module is available to any 2nd or 3rd year undergraduate student at UCL.

The primary objective of the course is for students to engage in problem solving activities using programming as the tool; a process known as computational thinking. The programming language used in the course is Java and the primary learning outcomes are that students understand that programming can be used to create solutions to the problems they encounter and become adept at using computational thinking to solve them.

Coding is very practical in nature and, whilst students will read textbooks and study lecture material, it can only be learned by doing (practising). For this reason students will gain experience with coding via hands-on engagement on a weekly basis. Each week, or stage, serves as a checkpoint that progress is being made and the stages get more difficult as the term progresses.

Learning Outcomes

On successful completion of this module students will be able to:

  • Design, write, debug and test programs written in Java.
  • Create Java applications composed of about 3-5 classes. Examples of such applications might include quizzes, games or programs used to analyse and manipulate datasets.
  • Apply the principles of object-oriented program design in the development of their programs.
  • Use programming tools such as an integrated development environment (IDE), debugger, and code repository.


Topics covered in lectures or via online material:

  • First tasks including setting up and using an Integrated Development Environment, learning how to write, run and debug a program.
  • Objects, data types and variables.
  • Elementary programming constructs: sequence, conditions, loops.
  • Writing object-oriented code using classes and methods.
  • Data structures: arrays, lists and other containers.
  • Inheritance, polymorphism and abstract classes.
  • Exception handling.
  • File input and output.
  • Recursion and searching.
  • Creating a Graphical User Interface with JavaFX.

Method of Instruction

There will be a strong emphasis on the tutorials / labs. There will be a two-hour lab session for each student every week, these sessions will be staffed by TAs and each week there will be a specific problem set that must be achieved. Students will write code in pairs, with most pairs remaining the same throughout the course. (This is known as pair-programming). A problem set will be introduced with a set of notes explaining what is expected and providing sufficient information to attempt the task. Lecture slides and lab notes will be available via Moodle in advance, and the students should have reviewed them before attending the labs and, ideally, to have started to solve the problems.  


The course has the following assessment components:

  • Coursework and two in-class tests (100%).

To pass this course, students must:

  • Obtain an overall pass mark of 40% for all components combined.

The assessment consists of 3 parts:

  • First in-class test - worth 15%;
  • Second in-class test – worth 20%;
  • Project - worth 65%.

The project involves designing and developing an app which is large enough to be challenging. Students will demonstrate that they can apply what they have learned in the course. Support with app development will be provided in labs so that at no point will this activity be too open-ended for the student.


Reading list available via the UCL Library catalogue.