Bulding a system for teaching, tracking students, lessons and plans


Any advice on where I can find information on building a system to track my lessons and students as a teacher. Or if you have any advice yourself?

I want to use it track things like if the student attended a certain lesson. the ability to write a comment on what the individual student accomplished or did not accomplish.
There a tons of more things to this. but lets start there. I excpect to be using dataview quite a lot.

However for example I am confused about what to put in the properties and what to create inline fields for and what to embed through headers.

for example student attending I might be able to solve through checklists?

For example if I have one note for a student and one note for a particular lesson. I want to be in the lesson note and note down which students were there. but it needs to me sent to the student note so that I can use dataview to get a list of all the students each one on one row and then see if they attendend a certain lesson.

At the very basic level with standard Obsidian, there is already something you can achieve:

If you mention students that are present through a link to the student’s note, then, in the backlinks of that student’s note, you will see any class where the student was linked.

If, in the lecture’s note, you register remarks for the students under a heading that contains the link, then these remarks also can be viewed in the backlinks - hit the “Show more content” button to see the notes you made about the student during that class. Alternatively, hovering the backlink while pressing the Ctrl key will show the class note in a pop-up window.

Backlinks can be seen in the “Backlinks” panel. Alternatively, backlinks can be shown at the bottom of the note if you enable that with the command “Backlinks: Toggle backlinks in document”. (the core plugin “Backlinks” must be enabled for all this to work).

1 Like

I’d also start with plain Obsidian. No plugins, no themes. Just connected notes.

Example for a student file S1345:

- J. Doe
- "[[2024-05 Sunshine 101]]"
- "[[2024-07 Rain 302]]"

# J. Doe

Learning goals:

- …

Teaching focus:

- …

Example for a course file 2024-05 Sunshine 101:

- Sunshine 101 Spring 2024

# Sunshine 101 (Spring 2024)

Intended audience:


- …


- …

Example for a lesson file 2024-05 Sunshine 101 Lesson 15:

Course: "[[2024-05 Sunshine 101]]"
LessonNo: 15
Date: 2024-05-17

# Lesson 15

## Topics


## No shows

- [[S3704|A. Smith]]: (Doctor's appointment)

## Accomplishments

- [[S1345|J. Doe]]: Finished Chapter 3. Couldn't start Chapter 4 because… 

Thanks both of you for your thoughts. I assume both solve the comments by reviewing the backlinks. Which is an idea I did not think about. However, will that not be a bit of an extra hassle to get a quick overview. I mean If I can have dataview generate a list to me I will get a glimse of all the attended classes in quick views. However the way I currently try to set this up feels a bit clumsy. I will write my current set up here in the next post

1 Like

This is what I have now.

Example of Lesson Note:

type: lesson
date: 2024-05-21
class: EE23
Lesson_summary: working on essay

  • writing
  • grammar

List of students

[[student 1]]
[[student 2]]


student_1_attending :: true
student_2_attending :: true


student_1_comment :: finished essay
student_2_comment :: worked hard but needs help

First of all I have the list of all students. And this list i a list of the links to the notes. This makes it possible to access this note using dataview with the from [[student 1]] function which gives all the notes that links to this note.

Then I have unique inline properties for each student. one for attending and one for a comment.

Student 1

class: EE23
course: Eng05


Table student_1_attending as Attended, student_1_comment as Comment,lesson_summary as "Lesson Summary", datum
From [[student 1]]

It’s a design decision about Dataview.

One approach is to use Dataview a foundation of your system. You’d be designing a database that happens to be stored in Markdown files. You could use Dataview’s inline fields and other proprietary stuff. This works well for many users.

I prefer an approach, where Dataview is optional. It’s fast to set up. It works with Obsidian’s builtin features, even if you optimize for Dataview queries. You could add properties to the notes that denote different kinds of notes. You could place those notes in folders. You could create separate Dashboard pages that give you quick overviews.

I prefer the second approach, because it’s more flexible and less fragile. It fails safely when Dataview fails. And it even fails safely when Obsidian fails. This fail safe strategy is a main reason why I use local Markdown and Obsidian in the first place. If I wouldn’t mind dependence on a single vendor for a complex software (in this case the one person who maintains Dataview), I wouldn’t use Obsidian, but one of the many online tools for project management or class management with all those bells and whistles.

Then I use a dataview query in each student note to get a list of the lessons that the student was supposed to be at. one field shows if they attended or not. the field where I put the comment about that particular student on that lesson as well as the date for the lesson and the summary of the lesson ( which contains what we did during class)

Thanks. You have a great point.Maybe the way I see it is that all that dataview is doing is giving me quicker access to the data. the data is already there in the original notes.

And this speed is a nice thing to have especially since I am only tracking these things during a course. Then its archived or deleted. This is not insights or knowledge about different subjects. this is just me tracking my students progress.

However I am still curious about what you mean when you write “create separate Dashboard pages that give you quick overviews” How would you set that up? would that be comparable to what dataview will give me currently? Also do you know if this is demonstrated in a youtube tutorial somewhere?

A couple of issues I run into when I consider not using dataview.

During the class I could quite easily click on the student and fill in if I have a comment on them, But it would take some time I believe if I want to make it clear that the comment is related to a specific lesson. Its also not obvious for me how to get an overview of a students overall antending rate. If I write down the info whether a student attended in the lesson note then I can see the stats of the whole class there. But I cant get an overview on a student level. If I write down the info in each student note I think it will take. long time.

I think of a dashboard as a note that shows the current state of affairs. It contains automatic queries and summaries. What’s due today? How is the attendance in my current courses?

But if this is just about tracking a few students in a few classes, I wouldn’t overthink it. It is a classical use case for a relational database. So if you feel comfortable with Dataview, it’s the way to go.

Gotcha, so if I understand you correctly you are saying that you would keep
normal notes for classes and studets without dataview used in these notes, but then have “dashboard notes” where you DO use dataview which gathers the information in various ways for summaries and overview?

Exploring alternatives, because it’s fun. :wink: Would this work for you?

# EE23 - Eng05 - 2024-05-21

- [[student 1]] #attending finished essay
- [[student 2]] #attending worked hard but needs help
- [[student 3]] #noshow
- [[student 4]] #excused

And then simply look at the backlinks of each student?

The idea is to keep administrative writing at a minimum. No queries necessary for the student notes. No custom fields in the lesson notes.

In the lesson notes I’d rather spend time with the content of the class. What did I prepare? What worked? What do I need to follow up next lesson?

Dashboard is an option for more complex data. But in the use case of just tracking a few classes, I’d be to lazy to come up with the perfect Dataview query. :wink:

  • [[student 1]] #attending finished essay

intreresting. And how would you then access this information? through backlinks? and seeing the context?

EDIT: Updated Screenshots.

Thanks for making that so clear with the screenshots.

That is actually quite clear and convienient with the backlinks showing in the document and with the context displayed like that. Thanks a lot. I will reconsider using dataview.
But regarding that. Do you know dataview well enough to know whether this method can work for both views? In other words can dataview collect the relevant information in the way it is presented here?

It works. Here’s a proof of concept, how to extract all the information. Create a new note and add:

		file.link.course AS course, 
		file.link AS lesson, 
		L.outlinks AS students, 
		L.tags AS tags, 
		regexreplace(L.text, "\[\[.+\]\]\s*?\#.*?(\s|$)", "") AS comments
	FLATTEN file.lists AS L
	WHERE (meta(L.section).subpath = "Attendance")

This results in:

I have yet to figure out, how to sort by lesson and filter by student.