UCL for Code in Research

UCL for Code in Research

By Peter SchmidtTechnology
Download on the App Store

UCL for Code in Research episodes

  • 5/9 Research Software Engineering with Python (COMP0233) - Testing with Python

    Testing your software is part of development. In this episode I talk about different types of testing, automated tests, legacy code etc. My guest is Stef Piatek from UCL who tells us how he approaches testing in his daily work.


    Links

    • https://docs.python.org/3/library/unittest.html
    • https://docs.pytest.org/
      • https://docs.pytest.org/en/stable/how-to/monkeypatch.html PyTest Monkeypatch
    • https://agiledata.org/essays/tdd.html test driven development TDD
    • https://en.wikipedia.org/wiki/Extreme_programming
    • https://joss.readthedocs.io/en/latest/review_criteria.html criteria for open source software reviews, which includes a section on testing
    • https://www.freecodecamp.org/news/a-practical-guide-to-start-opensource-contributions/
    • https://docs.github.com/en/actions GitHub Actions
    • https://martinfowler.com Martin Fowler's great web site. Also look out for his book:
      • Working Effectively With Legacy Code - Michael Feathers, 2004, ISBN: 8601400968741

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK. 
    Producer and Host: Peter Schmidt

    25 min
  • 4/9 Research Software Engineering with Python (COMP0233) - Data Formats

    In this episode I'll be discussing data formats such as CSV, JSON and YAML. My guest is Nick Radcliffe from Stochastic Solutions and the Uni. Edinburgh. Nick's expertise is in data science and he has a lot to share about data, data formats and how to use them.

    Links

    • https://www.linkedin.com/in/njradcliffe/ Nick's LinkedIn profile
    • https://en.wikipedia.org/wiki/Comma-separated_values CSV formats
    • https://www.json.org/json-en.html JSON
      • https://json-ld.org JSON for linked data
      • https://json-schema.org JSON schema
    • https://yaml.org YAML
    • https://parquet.apache.org Parquet by Apache
    • https://hdfgroup.github.io/hdf5/ HDF5

    Libraries

    • https://numpy.org
    • https://scipy.org
    • https://scikit-learn.org/stable/
    • http://www.tdda.info test driven data analysis

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK. 
    Producer and Host: Peter Schmidt

    25 min
  • 3/9 Research Software Engineering with Python (COMP0233) - Introduction to Python

    Python is one of the most widely used programming languages in research and science. How did it come to that. And what makes Python special? It's something I discuss with my guest in this episode, Robin Wilson, who also takes us through some of the less favourable or more complex aspects of the language.

    Links

    • http://www.rtwilson.com Robert Wilson
      • https://blog.rtwilson.com Robert's blog posts
    • https://www.python.org
    • https://anaconda.org Anaconda Python distribution
    • https://jupyter.org all things Jupyter
    • https://ipython.org iPython
    • https://inference-review.com/article/the-origins-of-python
    • https://en.wikipedia.org/wiki/Literate_programming

    Python libraries for science

    • https://numpy.org 
    • https://scipy.org 
    • https://pandas.pydata.org
    • https://scikit-learn.org/stable/

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK. 
    Producer and Host: Peter Schmidt

    26 min
  • 2/9 Research Software Engineering with Python (COMP0233) - Git Part 2

    In this episode we look into more essential Git commands, such as branching and merging. Branching and merging are key concepts that help you develop code or even text documents in a team. They help you maintain different versions of files and work on them independently.

    Another element of collaborative working is provided by GitHub: the pull request. Pull request are a great way to do code reviews, which avoids introducing bugs and also learn from each other.

    In my conversations Sam and Eirini talk about these key features and their experiences with it.

    Links:

    • https://git-scm.com/ Git again
    • https://martinfowler.com/articles/branching-patterns.html Martin Fowler's blog post on branching patterns
    • https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests explains the mechanics of pull requests in more detail
    • https://github-pages.ucl.ac.uk/rsd-engineeringcourse/ Lecture notes

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK. 
    Producer and Host: Peter Schmidt

    27 min
  • 1/9 Research Software Engineering with Python (COMP0233) - Git Part 1

    Peter Schmidt - the host of this podcast - interviews Sam Harrison, an environmental modeller at the UK Centre for ecology and hydrology. Is it version control important for his research? what tool does he use? How he learn it? Links and transcript available in the show notes.

    About Sam

    • https://www.ceh.ac.uk/staff/samuel-harrison
    • https://www.ceh.ac.uk/

    About Git

    • https://git-scm.com/
    • https://github.com/git/git/
      • https://github.com/git/git/tree/v0.99 (almost) first version of Git from 2005
    • https://github-pages.ucl.ac.uk/rsd-engineeringcourse/ Lecture notes

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK. 
    Producer and Host: Peter Schmidt

    22 min
  • 5/10 Classes and Design [2026]

    Here we touch on some ways to build classes in C++ and how class design such as class hierarchies can help to make code more readable, more maintainable and less error prone (amongst other things). Klaus Iglberger and I also touch on design patterns and briefly what other programming paradigms exist apart from object oriented programming (OOP).

    Links

    • https://medium.com/javascript-scene/the-forgotten-history-of-oop-88d71b9b2d9f The forgotten history of OOP
    • https://medium.com/@ryan_forrester_/struct-inheritance-in-c-comprehensive-guide-2027689d10ed structs and classes
    • https://www.enterpriseintegrationpatterns.com/index.html Enterprise Integration Patterns by Gregory Hohpe
    • https://martinfowler.com Martin Fowler author of so many books, including one on enterprise patterns
      • https://martinfowler.com/bliki/GangOfFour.html Martin F's write-up of the Gang of Four book
    • https://en.wikipedia.org/wiki/Design_Patterns Wiki page on the book 'Design Patterns - Elements of Reusable Object Oriented Software' written by E Gamma, R Helm, R Johnson and J Vlissides. 
      • https://openlibrary.org/books/OL7408317M/Design_Patterns
    • https://www.amazon.co.uk/Software-Design-Principles-Patterns-High-Quality/dp/1098113160 book by Klaus Iglberger: "C++ Software Design: Design Principles and Patterns for High-Quality Software"

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    34 min
  • 4/10 On Polymorphism [2026]

    Inheritance, templates, function overloading - they all fall into the category of polymorphism in programming. My guest Klaus Iglberger and I discuss the different aspects of how this could be done with C++. 

    Links

    • https://www.stroustrup.com/glossary.html#Gpolymorphism Glossary provided by Bjarne Stroustrup
    • https://cplusplus.com/doc/tutorial/polymorphism/
    • https://ics.uci.edu/~jajones/INF102-S18/readings/05_stratchey_1967.pdf Christian Strachey's article where he introduces polymorphism
    • https://dl.acm.org/doi/pdf/10.1145/6041.6042 Article by Cardelli and Wegner On Understanding Type, Data Abstraction and Polymorphism
    • https://en.wikipedia.org/wiki/Virtual_method_table virtual tables (vtables)
    • https://pabloariasal.github.io/2017/06/10/understanding-virtual-tables/
    • https://www.geeksforgeeks.org/vtable-and-vptr-in-cpp/
    • https://belaycpp.com/2021/10/01/history-of-c-templates-from-c-style-macros-to-concepts/ A history of templates
    • https://www.stroustrup.com/dne.html Bjarne Stroustrup: the Design and Evolution of C++

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    27 min
  • 3/10 Throw, try, catch...test [2026]

    Exceptions are essentials, as are error codes. Writes Bjarnes Stroustrup. And so on our 3rd stop through C++ I talk about what you could do when things go wrong. And what you can do to prevent errors - with testing. My guest is, again Klaus Iglberger.

    The sounds you're hearing are from the excellent https://sound-effects.bbcrewind.co.uk BBC sound library - free of use for non-commercial purposes. 

    Links:

    • https://en.wikipedia.org/wiki/Exception_handling_(programming)
    • https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1947r0.pdf B Stroustrup's article 'C++ exceptions and alternatives'
    • https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_exceptions.html GNU exception manual
    • https://en.wikipedia.org/wiki/Errno.h the macro
    • https://www.gnu.org/software/libc/manual/html_node/Error-Codes.html
    • https://archive.org/details/working-effectively-with-legacy-code/ Michael Feathers "Working Effectively with Legacy Code"
    • https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0003r0.html#2.0 what went on with C++98 exceptions? 
    • https://devblogs.microsoft.com/oldnewthing/20180928-00/?p=99855 another discussion on the "old" exception handling in C++

    Tools:

    • https://undo.io/products/undo-c-plusplus/ Undo
    • https://github.com/catchorg/Catch2 Catch2
    • https://google.github.io/googletest/ Google tests
    • https://github.com/emil-e/rapidcheck RapidCheck property based testing


    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    32 min
  • 2/10 Data Types and the world of (smart) pointers [2026]

    In the beginnings were...data and data types. Which is where we begin our journey through C++. The language provides for a range of interesting, fundamental, complex and custom types - one of which is a set of pointer types. 
    My guest in this episode is Marc Hartung from Dive in Berlin, Germany.

    Links:

    • https://en.wikipedia.org/wiki/Pointer_(computer_programming) summary of what pointers are
    • https://en.wikipedia.org/wiki/Address_(programming_language) one of the early uses of pointers in the APL language
    • https://en.wikipedia.org/wiki/Memory_management article on memory management
    • https://learn.microsoft.com/en-us/cpp/cpp/type-conversions-and-type-safety-modern-cpp an article on type conversion
    • https://gcc.gnu.org/onlinedocs/gcc/_005f_005fint128.html GCC compiler and support for 128bit integers
    • https://en.wikipedia.org/wiki/C%2B%2B_Standard_Library C++ Standard Library
    • https://dl.acm.org/doi/pdf/10.1145/242604.242613 Ań article on how the C++ Standard Library emerged
    • https://en.wikipedia.org/wiki/Standard_Template_Library the Standard Template Library (not to be confused with the C++ Standard Lib)

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    36 min
  • 1/10 C++ - An Introduction [2026]

    This first episode is about introducing C++, where it started, how it evolved. You will hear from 2 practitioners: Klaus Iglberger (C++ coach/trainer) and Marc Hartung (tech lead at Dive in Berlin).

    Here are a few links for you to follow up on:

    • https://www.stroustrup.com The Home Page of Bjarne Stroustrup who created C++. There are plenty of links for you to follow
    • https://isocpp.org/std/the-standard The C++ standard homepage 
    • https://www.mn.uio.no/tjenester/it/hjelp/programvare/simula/versions/simula-1967/commonbasedefinition1967.pdf the specs of Simula 67, still available online. Simula inspired B Stroustrup for C++
    • https://www.divecae.com Dive the company Marc Hartungs works at who produce simulation software (hydrodynamics)
    • https://github.com/igl42 Klaus Iglberger's GitHub

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    39 min

About UCL for Code in Research

From the publisher's feed

The companion podcast for courses on programming from the Advanced Research Computing Centre of the University College of London, UK.