Home Admissions Students Careers Research Business People Help
Text size A A A A A

| STUDENTS > Principles of Programming |

Principles of Programming

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


Code: 1007
Year:1
Prerequisites:None.
Term: 1
Taught By: Graham Roberts (50%)
Keith Clark (50%)
Aims:This course introduces several different programming styles, including imperative and functional, or logic-based, programming. Its primary intention is to develop key programming and problem solving skills but it has a secondary aim, which is to build 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, this is an intense and practical course that relies on dedicated and active engagement of the student both within and outside lectures. To provide support for this self-learning, the course has accompanying problem classes that are compulsory.
Learning Outcomes: To be able to: (a) Design, implement, debug and test small programs using at least two different programming paradigms, given simple specifications; (b) Develop simple algorithms to solve a wide range of common programming problems; (c) Use compilers, editors and debuggers; (d) Compare and contrast the different paradigms, understanding the relative advantages and disadvantages of each.

Content:

Introduction to ProgrammingWhat is programming? Programs and algorithms.
Different programming paradigms, their uses, and their differences.
Compilers and interpreters.
Debugging programs.
Introduction to Logic ProgrammingCore logic programming ideas.
Programming with relations.
Recursive data structures, such as lists.
Inference rules.
Unification and resolution.
Negation as failure.
Searching.
Introduction to Imperative ProgrammingCore imperative programming ideas: sequence, selection, iteration, recursion, assignment and variables.
Methods, parameters, scope and lifetime.
Arrays and files.
Program design in the smallDeveloping small programs using methods and functions.
Designing and implementing simple algorithms and data structures.
Good programming practice and defensive programming.

Method of Instruction:

Lecture presentations, problem classes, programming lab classes, exercises and questions.

Assessment:

The course has the following assessment components:

  • Written Examination (2.5 hours, 90%)
  • Coursework Section (1 piece, 10%)
To pass this course, students must:
  • Pass the coursework section
  • Obtain an overall pass mark of 40% for all sections combined
The examination rubric is:
Answer BOTH questions from SECTION A, ONE question from SECTION B, and ONE question from SECTION C (FOUR questions in total). All questions carry equal marks. Note that the coursework is composed of several items.

Resources:

(Essential reading) Developing Java Software, 3rd Edition, by Russel Winder and Graham Roberts, published by John Wiley and Sons, 2006. ISBN: 0-470-09025-1

Two courses can be found on Moodle, one for Groovy, one for Prolog

This page last modified: 26 May, 2010 by Nicola Alexander

Computer Science Department - University College London - Gower Street - London - WC1E 6BT - Telephone: +44 (0)20 7679 7214 - Copyright © 1999-2007 UCL


Search by Google
Link to UCL home page