ÐÂÏã¸ÛÁùºÏ²Ê¿ª½±½á¹û

XClose

ÐÂÏã¸ÛÁùºÏ²Ê¿ª½±½á¹ûModule Catalogue

Home
Menu

Research Software Engineering with Python (COMP0233)

Key information

Faculty
Faculty of Engineering Sciences
Teaching department
Computer Science
Credit value
15
Restrictions
Module delivery for PGT (FHEQ Level 7) is not restricted (i.e., can be selected on any programme for which it is permitted.)
Timetable

Alternative credit options

There are no alternative credit options available for this module.

Description

Aims:

In this module, you will move beyond programming, to learn how to construct reliable, readable, efficient research software in a collaborative environment. The emphasis is on practical techniques, tips, and technologies to effectively build and maintain complex code. We will use the Python programming language to deliver this content, and you will learn Python programming in this course, developing from simple scripts for analysing research data to efficient numerical computation.

Intended learning outcomes:

On successful completion of the module, a student will be able to:

  1. Apply the workflow of software version control using git when working solo or collaboratively and describe the advantages of using to find when bugs were first introduced to a code base.
  2. Manage various aspects of the software development process using project management tools (e.g., GitHub) – such as creating software issues, provide code reviews, set up continuous integration tasks, assign collaborators to tasks.
  3. Implement functions, classes, scripts, and libraries to load, analyse and visualise research data.
  4. Explain and design different types of test cases and implement these tests using a test framework (e.g., pytest).
  5. Design and implement an installable software package based on a set of requirements and following best practices.
  6. Understand and communicate the value of documentation and use appropriate tools to create documentation.
  7. Organise, plan and conduct the steps needed to refactor code systematically, employing object-oriented design principles.
  8. Critically evaluate the pros and cons of different software design and development methodologies (e.g., agile versus waterfall).
  9. Evaluate and understand performance measurements of programs.

Indicative content:

The following are indicative of the topics the module will typically cover:

  • Version control tools and collaborative workflow.
  • Research data in Python.
  • Software testing (unit-tests, negative tests, mocking) and debugging.
  • Management and development of software projects (licensing, style, documentation, development methodologies and organisation).
  • Construction, design and refactoring of software following object-oriented principles.
  • Software optimisation and profiling.

Requisites:

To select the module as an optional or elective, a student must: (1) be registered on a programme on which it is formally available; (2) be familiar with common programming concepts in any language (e.g., be able to create variables, distinguish between different data types, implement control flows blocks, etc); and (3) understand running programs from the command line.

Module deliveries for 2024/25 academic year

Intended teaching term: Term 1 ÌýÌýÌý Postgraduate (FHEQ Level 7)

Teaching and assessment

Mode of study
In person
Methods of assessment
50% Other form of assessment
50% Coursework
Mark scheme
Numeric Marks

Other information

Number of students on module in previous year
54
Module leader
Dr David Perez-suarez
Who to contact for more information
cs.pgt-students@ucl.ac.uk

Intended teaching term: Term 1 ÌýÌýÌý Undergraduate (FHEQ Level 7)

Teaching and assessment

Mode of study
In person
Methods of assessment
50% Other form of assessment
50% Coursework
Mark scheme
Numeric Marks

Other information

Number of students on module in previous year
19
Module leader
Dr David Perez-suarez
Who to contact for more information
cs.pgt-students@ucl.ac.uk

Last updated

This module description was last updated on 8th April 2024.

Ìý