Facial expression recognition has been proposed as a way to give teachers feedback on how students respond to online and blended lessons, but many educational studies evaluate their models with a single run, no held-out test set, and results that are difficult to reproduce. This study re-evaluates a compact eight-layer convolutional neural network (CNN) for recognizing students’ facial expressions and compares it with a ResNet-18 and a Vision Transformer, all trained from scratch under the same protocol on the official training, validation, and test partitions of the FER-2013 dataset. The main task distinguishes happy, sad, and neutral faces (17,010 training and 2,099 test images); the standard seven-class task serves as a benchmark. Each three-class model was trained with three random seeds, and results are reported as accuracy, macro-averaged F1-score, per-class metrics, verified confusion matrices, Grad-CAM attention maps, and CPU inference time. On the held-out test set, the proposed CNN reached 79.4% accuracy and 77.7% macro-F1, compared with 77.8% and 76.2% for ResNet-18 and 58.2% and 54.0% for the Vision Transformer, whose performance was limited by the absence of pretraining. On seven classes, the CNN and ResNet-18 both reached about 64% accuracy. Happy faces were recognized with an F1-score above 90%, while sad and neutral faces were frequently confused with each other. Adam outperformed stochastic gradient descent and Adadelta, and all models classified a face in under 6 ms on a two-core CPU. A compact CNN is therefore a strong and efficient baseline when pretraining is unavailable, although its uneven accuracy across expressions, the limited validity of inferring emotions from faces, and recent legal restrictions argue for using such systems only for aggregate, consent-based feedback.