COMP0002 Principles of Programming
This database contains the 2018-19 versions of syllabuses.
Note: Whilst every effort is made to keep the syllabus and assessment records correct, the precise details must be checked with the lecturer(s).
Principles of Programming
This module provides an introduction to computer programming using two different programming styles, imperative and functional programming. Its primary aim is to develop key design, programming, and problem solving skills, with a secondary aim of building students' confidence in their ability to take on and learn new programming languages within a short space of time. In order to achieve these aims the module has a substantial practical element in the form of compulsory lab classes where students work through sets of programming exercises to apply the programming concepts introduced during the module lectures.
On successful completion of the module, a student will be able to:
- Design, implement, debug and test small programs using two different programming paradigms, given straightforward specifications.
- Develop algorithms to solve a range of common programming problems.
- Compare and contrast the different paradigms, understanding the relative advantages and disadvantages of each
- Use common programming tools such as compilers, editors and debuggers
- Understand core computer architecture, memory and memory management, and the binary representation of data values
Availability and prerequisites
This module delivery is available for selection on the programmes listed below. The relevant programme structure will specify whether the module is core, optional, or elective.
In order to be eligible to select this module as optional or elective, where available, students must meet all prerequisite conditions to the satisfaction of the module leader. Places for students taking the module as optional or elective are limited and will be allocated according to the department’s module selection policy.
Programmes on which available:
There are no formal prerequsities.
Core Programming Concepts
- What is programming?
- Programming languages
- Programs and algorithms
- Compilers and tools
- Testing and debugging programs
Introduction to Imperative Programming
- Core imperative programming ideas: sequence, selection, iteration, recursion, assignment and variables
- Types and type checking
- Functions, parameters, scope and lifetime
- Arrays and files
- Pointers and memory management
Introduction to Functional Programming
- Core functional programming ideas
- Recursion and recursive data structures such as lists
- Lazy evaluation
- Role of types
- Higher order functions
- List comprehension
- Recursive functions
Program design in the small
- Designing and implementing small programs
- Implementing and using core algorithms and data structures
- Good programming practice and defensive programming
An indicative reading list is available via http://readinglists.ucl.ac.uk/departments/comps_eng.html.
The module is delivered through a combination of lectures and lab classes, supported by programming exercises and coursework.
This module delivery is assessed as below:
Written examination (2hrs 30mins)
In order to pass this module delivery, students must:
- achieve an overall weighted module mark of at least 40%; and
- achieve a mark of at least 30% in any components of assessment weighed ≥ 30% of the module.
Where a component comprises multiple assessments, the minimum mark applies to the overall component.