A proposition, with some slightly redefined \section command, getting an 2nd optional argument at the end, meant for the category -- the default value for this optional argument is Calculus here.
The ToC is generated as a separated index, which has the advantage of sorting with `makeindex.
Please note that there are no fancy decorations here for the section title etc.
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{xcolor}
\usepackage{xparse}
\usepackage{imakeidx}
\usepackage{hyperref}
\makeindex[name=cat,title={Categories}]
\let\sectionorig\section
\AtBeginDocument{%
\RenewDocumentCommand{\section}{s+o+m+O{Calculus}}{%
\clearpage%
\IfBooleanTF{#1}{%
\sectionorig*{#3}
}{%
\def\sectitle{#3}
\IfValueT{#2}{%
\def\sectitle{#2}
}%
\sectionorig[\sectitle]{#3}%
}%
\index[cat]{{\large\textbf{Category #4}\vskip0.5\baselineskip}!#3}%
}%
}
\begin{document}
\section{Vector algebra, \today}[Linear Algebra]
\section{Calculus, 2017-01-14}
\section{Derivatives, 2017-01-13}
\section{Tangents, 2017-01-5}
\section{Matrices, 2016-12-31}[Linear Algebra]
\printindex[cat]
\end{document}
