BCB743: Quantitative Ecology
“We have become, by the power of a glorious evolutionary accident called intelligence, the stewards of life’s continuity on earth. We did not ask for this role, but we cannot abjure it. We may not be suited to it, but here we are.”
Stephen Jay Gould
Welcome to BCB743 Quantitative Ecology. This page is the entry point to the module syllabus, lecture material, workflows, and data.
Honours Coordinator
For queries about the Honours programme in general, please consult Dr. Patrick O’Farrell (Room 4.111).
Module Coordinator
The module coordinator and lecturer is Prof AJ Smit (Room 4.103), and the teaching assistant for the module is Mr. Isma-eel Jattiem (4035085@myuwc.ac.za).
Module Description
Quantitative ecology uses statistics and computation to study ecological structure. In practice, that means working with multivariate data, testing ecological hypotheses, building models, and deciding which patterns are biologically meaningful rather than merely visually appealing.
In this module, you will cover the following topics:
Ecological Structure: You will explore the main principles underlying the environmental structuring of ecosystems (ecosystem structure).
Ecological Data Analysis: In this section, you will examine approaches to analyse ecological data, including hypothesis testing, regression analysis, and multivariate analysis.
Multivariate Analyses: Here, you will learn how to use multivariate statistics to make sense of complex systems, predict ecological outcomes, and understand the underlying mechanisms that drive ecological processes.
Spatial Ecology: You will acquire knowledge on how to analyse and model spatial patterns in ecological data, including the distribution of species and habitats across landscapes.
Community Ecology: The theory covered in this section will prepare you to analyse and model the interactions between species within ecological communities, such as competition, predation, and mutualism.
Ecosystem Ecology: You will learn how to model and analyse the flow of energy and nutrients through ecosystems, including the roles of producers, consumers, and decomposers in ecological processes.
The centre of gravity in BCB743 is multivariate analysis. Ecological datasets usually contain many species, many sites, and many environmental variables at once. Ordination, dissimilarity-based methods, regression, and constrained analyses help us reduce that complexity without pretending it is simple.
You will work with methods such as PCA, CA, PCoA, NMDS, multiple regression, and db-RDA not as isolated techniques, but as tools for answering ecological questions about gradients, community structure, species turnover, and assembly processes.
Module Content and Framework
These links point to online resources such as datasets and R scripts in support of the video and PDF lecture material. It is essential that you work through these examples and workflows. The 2026 syllabus is below:
Lectures run on Mondays and Thursdays, with Tuesdays used in the busier weeks to fit the additional regression chapters. Rows marked self-study are not lectured in class; work through them on your own alongside that week’s material. Chapter numbers match the sidebar and the chapter titles.
The Notes column links to the chapter page, Slides to the lecture deck, an author–year to the reading, Biostats Ch. N to the matching chapter in the BCB744 Biostatistics book, and Task to the exercise. The three assessed assignments are set on Day 1; their deadlines are shown at the top.
Core theoretical framework Ecological hypotheses about how species assemble across space and time, including niche-based mechanisms, neutral processes, and historical contingencies; the major distributional patterns of organisms at local, regional, and global scales; and sampling designs that allow those processes to be tested quantitatively.
Competence Data collection and preparation for quantitative testing of ecological hypotheses; reproducible analysis in R; multivariate methods such as NMDS, PCA, RDA, and cluster analysis; and graphical summaries that support defensible interpretation.
Outcomes of BCB743
By the end of this module, students will be able to:
- Understand the concepts of \(\alpha\)-, \(\beta\)- and \(\gamma\)-diversity
- Know and understand the current hypotheses that explain species assembly processes in space and time (e.g. neutral and niche mechanisms)
- Collect ecological data at the appropriate scale, which would lend themselves to a quantitative analysis of points 1 and 2, above
- Use the R software and associated packages to undertake the analyses required in point 3, above
- Interpret the outcomes of the above analyses and use it to quantitatively characterise points 1 and 2, above
- Communicate the findings by written and oral means
Assessment Policy
There are various tasks in this module. Only the three assignments listed below are formally assessed:
- Assessment 1: Integrative Assignment: a group research-project assignment in which you extend the analysis and interpretation of an ecological dataset beyond the parent publication.
- Assessment 2: Chapter Contribution: a group chapter-writing assignment in which you prepare a new BCB743-style teaching chapter. Within this assignment, the written chapter contributes 80% of the task mark and the presentation contributes 20%.
-
Assessment 3: spesim Package Review: a group professional review of the
spesimpackage as ecological teaching software for BCB743.
You must work in a fixed group of three students for all three assessed assignments. The same three students must submit Task A1, Task A2, and Task A3 together. Each submission must include an author-contribution statement that identifies what each group member contributed.
You may decide how these three assessed tasks are weighted in your final module mark. Your chosen weights must meet three rules:
- the three weights must add to 100%
- each task must carry at least 20%
- no task may carry more than 40%
This means that an equal weighting is allowed, for example 33.3%, 33.3%, and 33.4%. So are uneven weightings such as 40%, 40%, and 20%, or 40%, 30%, and 30%. The weighting declaration changes only how the three task marks are combined; it does not change the marking criteria for any task.
Each student must submit their weighting declaration by 17 July, one week before the final submission date. The declaration is individual, so members of the same group may choose different weightings. If you do not submit a valid declaration by the deadline, the default weighting will be equal weighting across the three tasks.
For all assessed assignments, claims must be properly cited or tied to direct evidence, and the Quarto source files must be made available. For literature-based claims, every cited paper must be kept as a local PDF with the relevant supporting passages highlighted. Work must be proofread carefully before submission; marks may be lost for weak structure, unclear language, unsupported claims, poor formatting, incomplete referencing, or code that does not render.
The remaining lettered practice Tasks (A–N), including the practice file named Task_A.qmd, are for self-practice and will not be formally assessed. The three assessed assignments are the separate Assessment 1–3 pages linked above. We can discuss your solutions in class if necessary, should you require additional help.
Graduate Attributes
The graduate attributes resulting from completion of this module align with the expectations of the workplace across diverse organisations and institutions where graduates typically find employment.
Data and Reading in Support of the Syllabus
The table above includes the core papers for each week. You need to read them.
Many other references are cited in each Chapter. These serve several functions in that they:
- Add additional theory relevant to some ecological concepts
- Provide background to some of the datasets used in my examples
- Discuss derivations of some equations used to calculate diversity concepts
- Provide example walkthroughs of some of the computational aspects of the methods covered in the Labs
- Collectively supplement the discussion about these concepts covered in the lectures
Students who read actively and connect the papers to the analyses usually perform far better than students who only skim the slides.
Reading
You are expected to read additional material in support of the content covered in class and on this website.
A compulsory reference is ‘Numerical Ecology with R’ by Daniel Borcard, François Gillet, and Pierre Legendre (Borcard et al. 2011). Much of the class’ content and many of the examples (and code) that I use have been adapted from this source. There is also the excellent book by Legendre and Legendre (2012) called ‘Numerical Ecology’ which provides everything the former book has, but in greater detail and with less focus on R. Both should be considered a ‘gold standard’ reference for Quantitative Ecology.
A third highly recommended text is the book Tree Diversity Analysis by Roeland Kindt and Richard Coe.
I can also recommend these amazing websites with excellent content:
- David Zelený’s Analysis of Community Ecology Data in R
- Guide to Statistical Analysis in Microbial Ecology (GUSTA ME)
Note that the URLs with links to additional reading that appear with the worked-through example code should not be seen as optional. They are there for a reason and should be consulted even though I might not necessarily refer to each of them in class. Use these materials liberally.
Should you want to download the source code for the BCB743, you may find it on GitHub.
Datasets used in this module
Please see the Datasets Chapter for the data we will use in this module.
Prerequisites
You should have moderate numerical literacy and prior programming experience. Such experience will have been obtained in the BCB744 module, which is a module about doing statistics in R. If you have reasonable experience in coding and statistical analysis, you should find yourself well prepared. You should also thoroughly revise BDC334 by the end of the first week of this module.
Method of Instruction
You are provided with reading material (lecture slides, code, and website content) that you are expected to consume prior to the class. Classes will involve brief introductions to new concepts and will be followed by working on exercises in class that cover those concepts. The workshop is designed to be as interactive as possible, so while you are working on exercises, the tutor and I will circulate among you and engage with you to help you understand any material or associated code you are uncomfortable with. Often this will result in discussions of new applications and alternative approaches to the data analysis challenges you are required to solve. More challenging concepts might emerge during the assignments (typically these will be submitted the following day), and any such challenges will be dealt with in class prior to learning new concepts.
Although the module is theory-heavy, a large part of it is also about coding. It is up to you to take your coding skills to the next level and move beyond what I teach in class. Coding is a bit like learning a language, and as such, programming is a skill that is best learned by doing.
Learning Collaboratively
Please refer to my advice about how to learn.
Discuss the BCB743 workshop activities with your peers as you work on them. Also use the WhatsApp group set up for the module for discussion purposes (I might assist via this medium if necessary, provided your questions/comments have relevance to the whole class). A better option is to use GitHub Issues. You will learn more in this module if you work with your friends than if you do not. Ask questions, answer questions, and share ideas liberally. The three assessed assignments must be completed in the same fixed group of three students, and each submission must identify all group members by name.
Cooperative learning is not a licence for plagiarism. Plagiarism is a serious offence and will be dealt with decisively. Consequences of cheating are severe; they range from 0% for the assignment or exam to dismissal from the module for a second offence.
Reusing Code Found Elsewhere
A huge volume of code is available on the web and it can be adapted to solve your own problems. You may use online resources, e.g. from StackOverflow, a widely used source of discussion about R code, but you MUST clearly indicate (cite) that your solution relies on found code, regardless of how much you have modified it for your own needs. Reused code that is discovered via a web search and which is not explicitly cited is plagiarism and it will be treated as such. On assignments you may not directly share code with your peers in this workshop.
Software
In this module we will rely entirely on R running within the RStudio IDE. The use of R was covered extensively in the BCB744 module where the installation process was discussed. We will primarily use the vegan package, but some useful functions are also provided by the package BiodiversityR (and here and here). Various other R packages offer overlapping and additional methods, but vegan should accommodate >90% of your Quantitative Ecology needs.
Computers
You are encouraged to provide your own laptops and to install the necessary software before the module starts. Limited support can be provided if required. There are also computers with R and RStudio (and the necessary add-on libraries) available in the 5th floor lab in the BCB Department.
Attendance
This workshop-based, hands-on module can only deliver acceptable outcomes if you attend all classes. The schedule is set and cannot be changed. Sometimes an occasional absence cannot be avoided. Please be courteous and notify me or the tutor in advance of any absence. If you work with a partner in class, notify them too. Keep up with the reading assignments while you are away and we will all work with you to get you back up to speed on what you miss. If you do miss a class, however, the assignments must still be submitted on time (also see Late submission of CA).
Since you may decide to work with a peer on tasks and assignments, please keep this person informed in case an emergency makes you unavailable for a period of time. Someone might depend on your input and contributions; do not leave someone unable to complete a task in your absence.
Support
Some tricky aspects of the module will take time to master, and the best way to master difficult material is to practise, practise some more, and then ask questions. Trying for 10 minutes and then giving up is not enough. I will be more sympathetic if you can show that you tried for a full day before asking me. When you ask questions about a challenge, explain your attempts to solve the problem and how those attempts failed. I will not help you if you have not tried to help yourself first (perhaps with advice from friends). There will be time in class to do this, typically before we start a new topic. You are also encouraged to bring up related questions that arise in your own B.Sc. (Hons.) research project.
Should you require more time with me, find out when I am ‘free’ and set an appointment by sending me a calendar invitation. I am happy to have a personal meeting with you via Zoom, but I prefer face-to-face in my office.
Help via BCB744 and BCB743 issues on GitHub
All discussion for the BCB744 and BCB743 workshops will be held in the Issues of this repository. Please post all content-related questions there, and use email only for personal matters. This is a public repository, so be professional in your writing here (grammar, etc.).
To start a new thread, create a New issue. Tag your peers using their handle, e.g. @ajsmit, to get their attention.
Once a question has been answered, the issue will be closed, so useful answers might end up in closed issues. Look there when searching for answers; you can use the Search feature on this repository to find answers to the same or similar problems.
Guidelines for Posting Questions:
- First search existing issues (open or closed) for answers. If the question has already been answered, you are done! If there is an open issue, feel free to contribute to it. Or feel free to open a closed issue if you believe the answer is not satisfactory.
- Give your issue an informative title.
- Good: “Error: could not find function”ggplot””
- Bad: “My code does not work!” Note that you can edit an issue’s title after it is been posted.
- Format your questions nicely using markdown and code formatting. Preview your issue prior to posting.
- As I explained above, your peers and I will more sympathetic to your cause if you can show all the things you have tried as you, yourself, tried to fix the issue first.
- Include code and example data so the person trying to help you have something to work with (and which results in the error, perhaps)
- Where appropriate, provide links to specific files, or even lines within them, in the body of your issue. This will help your peers understand your question. Note that only the teaching team will have access to private repos.
- (Optional) Tag someone or some group of people. Start by typing their GitHub username prefixed with the @ symbol. of course this supposes that each of you have a GitHub account and username.
- Hit Submit new issue when you are ready to post.
References
Reuse
Citation
@online{smit2026,
author = {Smit, A. J.},
title = {BCB743: {Quantitative} {Ecology}},
date = {2026-06-18},
url = {https://tangledbank.netlify.app/BCB743/BCB743_index.html},
langid = {en}
}
