Skip to content Search
Search our website:

Principles of Programming I

Short name: POP1
SITS code: BUCI063H7
Credits: 15
Level: 7
Module leader: Vladislav Ryzhikov
Lecturer(s): 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, iteration, assignment, and variables
  • Data types
  • Collection Data Structures: Arrays, List, Sets, Dictionaries
  • Functions
  • Version Control
  • Automated testing and test-driven development (TDD)
  • Object-oriented programming: Encapsulation, Inheritance, Polymorphism
  • Functional programming features of Python
  • Dynamic data structures: Linked lists, Queues, and Stacks
  • Recursion
  • Exception handling


A pass in the relevant admissions test.


Indicative timetables can be found in the handbooks available on programme pages. Personalised teaching timetables for students are available via My Birkbeck.


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