Skip to content Search
Search our website:

Principles of Programming I

Short name: POP1
SITS code: BUCI063H7
Credits: 15 credits
Level: 7
Module leader: Vladislav Ryzhikov
Online material:

Module outline

This module introduces programming concepts and techniques, as well as elementary software development principles. Both for absolute beginners and for those with prior programming experience, the module introduces the fundamentals of programming, including: variables and assignment, primitive and complex types, methods, control structures, collections, iteration, recursion, as well as classes and objects in object-oriented programming. The module also introduces basic software development issues such as design, testing, debugging.


To provide the student with a comprehensive grounding in programming.

Learning Outcomes

On successful completion of this module a student will be expected to be able to:

  • Demonstrate knowledge of fundamental imperative programming concepts such as variables and assignment, conditional statements, loops and methods.
  • Code an application in a suitable programming language, from a detailed software specification.
  • Evidence knowledge of basic concepts and principles of object-orientation such as objects and classes, encapsulation, object state, coupling, cohesion and modularity.
  • Show awareness of basic principles of software design and development including appropriate naming of variables and classes, code layout, testing, debugging, and code version control.


  • Core imperative programming ideas: sequence, selection, iteration, assignment, and variables
  • Data types
  • Arrays, List, Sets, Dictionaries
  • Functions
  • Version Control
  • Automated testing and test driven development (TDD)
  • Object-oriented programming: Encapsulation, Inheritance, Polymorphism, Message passing
  • Functional programming features of Python
  • Dynamic data structures: Linked lists, Queues, and Stacks
  • Recursion and recursive data structures
  • Exception handling
  • Program design in the small and the large


A pass in the relevant admissions test.


All dates and timetables are listed in the programme handbooks of individual programmes.


The module requires the student to successfully complete a programming assignment and graded exercises.


By unseen examination (80%) and programming coursework (20%).

The unseen examination is comprised of two components:

  • 50% practical interactive online, and
  • 50% written paper.

Recommended reading

A set of course notes will be provided but the following text covers similar topics:

  • Python for Everyone, Interactive Edition, 2nd Edition, by Cay S. Horstmann, Rance D. Necaise. Wiley. 2016. ISBN: 978-1-119-18665-6