How can I create notes for each session of a course I'll teach next semester?

I am in the course planning phase for next semester, and I was wondering whether I could automate the creation of notes for each session of a course I’ll be teaching next semester - that would be very practical.
If I have a note that has three attributes (the start date of the term, the end date of the term, and the day and hour on which the course is being held - it’s a weekly course), how might I go about with a stamp or a rule to create these notes as children of that note?
I started thinking about using a while loop (while $coursedate < $EndDate) but got stuck on how to do the rest - the creation of the notes and the naming of them.
So if anyone has an idea, I’d be most grateful and receptive!

@bcrane (Brian Crane) has good, perhaps relevant advice here.

UPDATE see post for video links, below

1 Like

Coming up with a list of course meetings is the first and most annoying part of planning each of my semesters, but over time, I’ve tended to move away from completely automating that process. So what I can offer may not be what you are looking for, but here goes.

To do what you are asking about, I’d rely on explode. I’d create a single note and manually type the course meetings in the note $Text:

August 30
Sept 1
Sept 6
Sept 8
...etc.

I’d put the meeting time—“at 8:00” or “at 13:00”—at the end of each line using find/replace or just pasting it.* (Doing this manually can seem like a waste but it doesn’t take long, and I need a list of course dates for all kinds of things over the course of the term, so typing it once here means I’ve got it for the rest of term when I need it.)

For the explode, if I only had the meeting dates and time, I’d use the defaults and put this action code in the code box (with “two hours” replaced by the duration of your courses):

$StartDate=$Name;$EndDate=$StartDate+"2 hours";

You’ll wind up with one note per course with the start and end dates set the way you want them.

Personally, I always only explode this list after I’ve added some basic info about the individual course meetings under the date because I find it easier to enter the info when it’s in a single note than after it’s exploded. When I do this, I quickly paste a delimiter—I use %%%%%—at the front of each date line, then explode using the delimiter. So my starting text looks like:

%%%%%August 30 at 8:30
Some text
%%%%%Sept 1 at 8:00
Some text
%%%%%Sept 6 at 8:30
Some text
%%%%%
Sept 8 at 8:00
Some text
...etc.

Anyway, not sure that’s at all useful, but it’s my “auto-manual” approach to creating course notes. It eliminates enough of the donkey work to be useful, but without creating a machine that’s so “auto” that I lose touch with my materials at the early stages where I’m still finding my way.


*—If your courses always start at the same time you could modify the action to include the time and just type it once: i.e. $StartDate=$Name+“at 13:00”.

It seems that the link above is broken.

1 Like

My site is a rolling disaster of the sort only an amateur could create. I broke old links and they are gone gone gone. I’ll see if I can get this one working again. Or maybe I can post an alternative here. Alas no promises. (cf.: “amateur” above)

1 Like

Thanks to everyone who replied - especially @PaulWalters and @bcrane!
Brian, thanks for the links to the videos! Indeed, a couple of days ago I looked for them, remembering that I had watched them probably a year or two ago, but I could not find them. So this is very helpful.
Also, thanks for your practical advice against automating the setup. It may be wise (and I may eventually return to it), but at the moment it is just a little intellectual challenge to myself whether I could do it.
Automating the setup of dated notes may also come in handy if I need it in other contexts, so I’ll definitely try my hand at it - and will be grateful for any other ideas that others may have in this field.
I will come back and report! Let’s see whether we’ll manage to jointly come up with some interesting ideas.

1 Like

just an idea I used for a similar structure: you could add a prototype “course” and this prototype could get some attributes like a name, the startdate, enddate… and you could add child-notes to the prototype like “ideas”, “content”, “students”… and if a new course starts you assign your prototype to a new note and will get the same structure without any action code.

1 Like

This.

Prototypes are, IMO, the fastest way to create notes that are compliant with a standard layout and initial content. And, you can use an On Add action in a container to apply a specific prototype to the notes added to that container. Finally, remember that prototypes can inherit other prototypes.

1 Like

In context, see Prototypes 'Bequeathing' Child Notes.

1 Like

Many thanks again to @mwra, @PaulWalters and @webline for all the suggestions! However, my main point was about automatically creating a set of notes for the course sessions in a semester from a given start date (of the semester), an end date, and a course date (say every Tuesday at 2pm).
I have now managed to get that working with the help of a stamp that operates on a note that has said start and end dates as attributes ($StartDate and $EndDate) and the course date ($Sitzungsdatum). $Sitzungsdatum is set to the first course session.
The stamp first creates a list ($DateList) and then creates the notes from that list.

Here is the code:

// Make List from Dates

while($Sitzungsdatum < $EndDate){
$DateList+=$Sitzungsdatum;
$Sitzungsdatum = $Sitzungsdatum + "7 days";
}

// Make Notes from List, set event prototype, start and end date, and set name after day
$DateList.each(x){ 
create(x); 
$Prototype(x)="Event"; 
$StartDate(x)=$Name(x);
 $EndDate(x)=$StartDate(x) + "90minutes";
 $Name(x)=$Name(x).extract("^.{10}"); 
};

As you can see, the stamp sets start and end dates of each session from the duration of the course (90 minutes). I would like to do that from an attribute (say $Duration, which gives the duration in minutes) in the note to which the stamp is applied. However, I have not managed to do that. How do I refer in the stamp to that note?
Any suggestions welcome!

1 Like

90 minutes can be stored as an interval, e.g.:

01:30:00

^^^ means 1 hour, 30 minutes and zero seconds. If you show an Interval attribute as a Displayed Attribute, the default is 00:00, i.e. zero minutes and zero seconds. To set 90 minutes you can either enter “01:30:00” or “90:00”. In the last case when you de-/re-focus the note it will reformat to “01:30:00”.

An Interval-type can be added to/subtracted from a Date-type. So if i make an new Date-type attribute ‘MyDate2’ , use a $MyInterval of “01:30:00” and set $MyDate to 09:00:00 today, then this code:

$MyDate2 = $MyDate + $MyInterval;

set $MyDate2 to 10:30:00 today, as shown here:

So that is the ‘how’. Where you store your duration is up to you. Those who use a configuration note ‘config’ could use that. Basically store it in one place in a note with a $Name you will not use for other purposes. Or, in a more complex setting perhaps you could store a duration per course in an attribute in the course’s container: i.e. the same attribute in each course but each course could have a different duration. When planning a course the code would then look at that course’s duration setting rather than a global value.

I hope that helps. :slight_smile:


I believe aTbRef’s articles cover this in general. But if you thing there is place where some of the above should better cross reference I’m open to suggestions. Note that an article like this post would be out of scope as aTbRef is not a problem-specific how to. But, perhaps a (better) note on using Intervals with Dates might help.

For instance, the note on Interval-type attributes has a section “Use in Date arithmetic” that I think covers this. But perhaps the article on Date-type needs a better cross link (rather than explain the same thing in two places).

In fact, I have now just updated the article on Date data-type attributes to try and address this.

Many thanks, Mark, for that helpful suggestion! It works and I adopted it in my stamp. I had not thought of using interval, but it is obvious now that this is what it exists for…
Thanks again!

1 Like

Some great tips here - I wouldn’t overlook the use of a simple spreadsheet with attributes ( including Prototype ) laid out in a row with data like start dates, course/lecture names,

Excel provides straightforward ways to auto-populate a repeating weekly date, as in the second column here

Copy and paste into a container note in TB. ( Note the prototpye ‘Lecture’ is automatically created if it doesn’t exist or assigned if it does )

I accept that you wanted the intellectual challenge of developing a stamp but I expect our collective Excel skills are such that it provides a good way of seeding a tbx file where some structure is known in advance

4 Likes

@abusch Great post! BTW, if you want to schedule a call with me, I’d be happy you show you my course management process (not just creating the sessions, but managing videos, announcements, lecture notes, presentations, students and group projects, producing syllaubs and that be published and LMS, etc.).

2 Likes

@satikusala Thanks for the kind words, and even more thanks for that very kind offer! As I am learning to better work with Tinderbox, I am indeed switching more and more of the admin of my university work to it. This is more difficult for stuff that has grown organically (and somewhat chaotically) literally over decades (I bought my first Mac 20 years ago when I got my first full position at Oxford with own money and could make my own IT decisions).
This is all evolving in bits and pieces, but really improving. About a week ago I spontaneously dedicated half a day to setting up a system that should help me with my duties as Dean of my faculty (this is a temporary position here, different from the US) which have done since last October and have do for another 14 months. (Now I feel I understand enough to set up a system that works!)
So I’d be really interested in comparing notes, and even more in learning from you. Which time zone are you in, and what would be a good time / day for you? Probably something that is morning for you and evening for me (like the TBX meetups). I’ll be at a conference this Friday to Sunday, but let’s try to find something next week - or next weekend (8-10 Sept) when I’ll be quite flexible.
Thanks again for the kind offer, I look forward to a nerdy chat about course management best practices :wink:

1 Like

Salve decanus!

1 Like

Salve, machinorum magister! :wink:

Sure, once we have a one-on-one, we can bring our learning back to the community. I’ll DM your.

1 Like