"Client-side и Server-side" и "Frontend и Backend" - это абсолютно разные и никак не связанные понятия
Клиент - это приложение, которое делегирует часть своего функционала другому приложению - серверу
Сервер - это приложение, которое обслуживает множество клиентов, предоставляя им свой функционал
Frontend - это часть приложения, отвечающая за интерфейс (GUI, CLI, etc.), то есть то, что непосредственно видит пользователь, с чем пользователь взаимодействует
Backend - это часть приложения, отвечающая за бизнес логику, за фоновые задачи, за то что скрыто от пользователя
Практически любое приложение содержит backend часть, не зависимо от того клиент оно, сервер или вообще работает без клиент-серверного взаимодействия
frontend часть может содержать как клиент, так и сервер, хотя сервера содержат ее не часто
Яркий пример - X.org (сервер GUI в Linux и некоторых других *nix системах) содержит frontend часть - рисует на экране, получает пользовательский ввод (клавиатура, мышь, джойстик, etc.), а простейшие WindowManager (например awesome), являющиеся клиентами по отношению к X.org, frontend части не содержат
Конкретно в web это идет с тех времен, когда вся логика была на сервере, а на клиенте были статичные html страницы, а js использовался только для красотулечек-финтифлюшечек
P.S. Еще про web, а конкретно про его клиентскую часть, то есть браузер:
Когда пишем html, css - это frontend (пусть "чистые" верстальщики порадуются)
Когда пишем js код взаимодействующий с DOM, CSSOM, рисующий на Canvas - это frontend
Когда в js обрабатываем пользовательские события (keyup, click, focus, touchstart, etc.) - это frontend
Когда на js производим расчеты, проверки ввода, вешаем таймеры, работаем с локальными хранилищами, отправляем ajax запросы - это backend
Когда обрабатываем такие события как load, message, DOMContentLoaded - это backend
Код работающий в WebWorker'е - это backend
Продолжать можно долго, суть думаю ясна