NAME
Ucam::Term - return information about the start and end dates of terms
(and a few related events) at the University of Cambridge, UK.
SYNOPSIS
use Ucam::Term;
my $term = Ucam::Term->new('m',2010);
print $term->name, " term ", $term->year, " starts ";
print $term->dates->start, "\n";
my $term = Ucam::Term->new('e',2015);
print "General Admission ", $term->year, " starts ";
print $term->general_admission->start, "\n";
DESCRIPTION
The academic year at the University of Cambridge, UK, is divided into
three *Terms* - *Michaelmas* (autumn), *Lent* (spring) and *Easter*
(summer). The half-way point of each term is called the *Division of
Term*. Three quarters of each Term is designated *Full Term*, during
which lectures are given and when undergraduate students are normally
required to be in residence. Near the end of the Easter Term there are
three or four days of *General Admission*, during which degrees are
conferred on those who have just successfully completed courses,
followed by the *Long Vacation period of residence* during which some
additional courses of instruction are given.
The dates of some of these events and periods are fixed, but others
depend on dates that appear in the University's published 'Ordnances'
(see "SEE ALSO" below for references) which are updated from time to
time. This version of the module contains data covering the period from
the Michaelmas Term 2007 to the Easter Term 2030.
This module returns DateTime or DateTime::Span objects corresponding to
these events and periods. Note that the DateTime::Span objects run from
00:00 (inclusive) on the day the period starts to 00:00 (exclusive) on
the day after the period ends (see DateTime::Span->end_is_open). This
means that union/intersection/complement/intersects/contains operations
will all work correctly, but that it is normally necessary to subtract
one day from the end date of the span in order to find the date of the
last day of the period.
METHODS
* Ucam::Term->new()
Create a new Ucam::Term object
my $term = Ucam::Term->new('michaelmas',2010);
Requires two arguments: term and year. Term can be 'm', 'mich',
'michaelmas', 'l', 'lent', 'e', 'easter' in any mixture of case.
Year should be the full 4-digit year number. Croaks if given an
unrecognised term. Otherwise returns a new Ucam::Term object.
* Ucam::Term->available_years()
List years with useful information
my @years = Ucam::Term->available_years
Returns a sorted list of years for which at least some term date
information is available. Some years returned will not have dates
for all terms available (typically the first year will have only
Michaelemas defined, the last only Lent and Easter). Convenient for
iterating over all information available.
* $term->name()
Extract term name
my $name = $term->name
Return the full, human-readable name of the term represented by the
object ('Michaelmas', 'Lent', or 'Easter')
* $term->year()
Extract term year
my $year = $term->year
Return the year of the term represented by the object.
* $term->dates()
Return the term start/end dates for the object
my $span = $term->dates
Return a DateTime::Span representing the corresponding term. This
runs from 00:00 on the first day of term (inclusive) to 00:00 on the
day after term ends (exclusive). Returns undef unless the module has
data for this term (even though this is really only needed for
Easter terms)
* $term->fullterm_dates()
Return the full term start/end dates for the object
my $span = $term->fullterm_dates
Return a DateTime::Span representing the corresponding full term.
This runs from 00:00 on the first day of full term (inclusive) to
00:00 on the day after full term ends (exclusive). Returns undef
unless the module has data for this term.
* $term->division()
Returns the date of the division of term
$division = $term->division
Returns a DateTime object representing 00:00 on the day
corresponding to the division of term.
* $term->general_admission()
Return the start/end dates for General Admission based on the table
that appears in Ordinances, Chapter II, Section 10 'Dates of Term
and Full Term' (see general_admission_alg() for what should be the
same data derived from the algorythm in Ordinances, Chapter II,
Section 12 'Admission to Degrees')
my $span = $term->general_admission
Return a DateTime::Span representing the period of General Admission
following an Easter term. The span runs from 00:00 on the first day
of General Admission (inclusive) to 00:00 on the day after the final
day (exclusive). Returns undef unless the module has data for this
term. Croaks if called on an object that doesn't represent an Easter
term.
* $term->general_admission_alg()
Return the start/end dates for General Admission based on the
algorythm that appears in Ordinances, Chapter II, Section 12
'Admission to Degrees' (see general_admission() for what should be
the same data derived from the algorythm in Ordinances, Chapter II,
Section 10 'Dates of Trem and Full Term' )
my $span = $term->general_admission_alg
Return a DateTime::Span representing the period of General Admission
following an Easter term. The span runs from 00:00 on the first day
of General Admission (inclusive) to 00:00 on the day after the final
day (exclusive). Returns undef unless the module has data for this
term. Croaks if called on an object that doesn't represent an Easter
term.
* $term->long_vac()
Return the start/end dates for the 'Long Vacation period of
residence'
my $span = $term->long_vac
Return a DateTime::Span representing the period of the 'Long
Vacation period of residence' that follows an Easter term. The span
runs from 00:00 on the first day (inclusive) to 00:00 on the day
after the final day (exclusive). Returns undef unless the module has
data for this term. Croaks if called on an object that doesn't
represent an Easter term.
AUTHOR
Jon Warbrick, jw35@cam.ac.uk.
SEE ALSO
University of Cambridge Statutes and Ordnances, Chapter II
("Matriculation, Residence, Admission to Degrees")
() contains most of the rules
implemented by this module:
"Section 10: DATES OF TERM AND FULL TERM"
"1. The Michaelmas Term shall begin on 1 October and shall consist
of eighty days, ending on 19 December. The Lent Term shall begin on
5 January and shall consist of eighty days, ending on 25 March or in
any leap year on 24 March. The Easter Term shall begin on 10 April
and shall consist of seventy days ending on 18 June, provided that
in any year in which Full Easter Term begins on or after 22 April
the Easter Term shall begin on 17 April and end on 25 June.
"2. Full Term shall consist of three-fourths of the whole term
reckoned from the first day of Full Term as hereinafter determined.
"3. The dates on which Full Terms begin and end shall be as shown in
the table appended to these regulations.
"...
"8. A course of instruction given during the Long Vacation shall not
occupy more than four weeks. Except with the approval of the Council
on the recommendation of the General Board, no such course given
within the Precincts of the University shall begin earlier than the
second Monday after General Admission or end later than the sixth
Saturday after the Saturday of General Admission."
"Section 12: ADMISSION TO DEGREES"
[Prior to 2013]:
"13. In every year the Thursday, Friday, and Saturday after the
third Sunday in June shall be days of General Admission to Degrees,
save that, in accordance with Regulation 3 for Terms and Long
Vacation, in any year in which Full Easter Term begins on or after
22 April the days of General Admission shall be the Thursday,
Friday, and Saturday after the fourth Sunday in June. On each day of
General Admission there shall be one or more Congregations for
General Admission to Degrees at such hours as the Vice-Chancellor
shall appoint."
[As ammended by Grace 1 of 13 February 2013
(http://www.admin.cam.ac.uk/reporter/2012-13/weekly/6297/section6.sh
tml) with effect from 1 October 2013]:
"13. Every year the Wednesday, Thursday, Friday, and Saturday after
the third Sunday in June shall be days of General Admission to
Degrees, save that, in accordance to Regulation 3 for Terms and Long
Vacation, in any year in which Full Easter Term begins on or after
22 April the days of General Admission shall be the Wednesday,
Thursday, Friday, and Saturday after the fourth Sunday in June. On
each day of General Admission there shall be one or more
Congregations for General Admission to Degrees at such hours as the
Vice-Chancellor shall appoint."
[As ammended by Grace 2 of 5 February 2014
(http://www.admin.cam.ac.uk/reporter/2013-14/weekly/6336/section8.sh
tml)]
"14. Every year the Wednesday, Thursday, Friday, and Saturday in the
week next but one following the last week of Full Easter Term shall
be days of General Admission to Degrees."
[In practice, the dates of General Admission as given in the table
in Section 10: 'Dates of Term and Full Term' appear to be cannonical
- between 2010 and 2014 the dates in the table and the ordnance
diagreed and it was the ordanance that was updated]
Division of Term is best described in
:
"Division of Term is half-way through Term (not Full Term). The
dates are the same for every year except for Easter term: 9
November, 13 February, and 14 May or 21 May depending on whether
Easter Term starts on 10 April or 17 April."
See also DateTime, DateTime::Span
COPYRIGHT and LICENSE
Copyright (c) 2010, 2013, 2017 University of Cambridge Information
Services. This program is free software; you can distribute it and/or
modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included
with this module.