Faits : A. A.a. A._, née en 1976, a requis une indemnité de chômage à partir du 3 mai 2010. La Caisse cantonale de chômage du canton de Vaud (ci-après: la caisse) a ouvert un délai-cadre d'indemnisation du 3 mai 2010 au 2 mai 2012. Au cours d'entretiens de conseil qui ont eu lieu les 15 mars, 20 avril et 4 mai 2011, l'assurée a informé son conseiller de l'Office régional de placement (ORP) qu'elle allait être engagée à partir du 1 er juillet 2011 par la société B._ SA, devenue depuis lors C._ AG (ci-après: C._). Par courrier du 5 juillet 2011, C._ a donné suite à la demande de l'intéressée de "poursuivre" le contrat d'agence en qualité d'agente exerçant une activité à titre principal à compter du 1 er juillet 2011. Dans une attestation d'employeur remplie le 13 avril 2012, C._ a indiqué qu'en sa qualité de conseillère financière à temps partiel (du 28 février au 30 juin 2011), puis à plein temps (du 1 er juillet 2011 au 29 février 2012), l'assurée avait réalisé des salaires de 16'944 fr. 60 du 28 février au 31 décembre 2011 et de 2'452 fr. 40 du 1 er janvier au 29 février 2012. La caisse a requis un extrait du compte individuel de l'intéressée auprès de la Caisse de compensation du canton de Zoug, ainsi qu'une copie du contrat de travail et des décomptes mensuels de salaire pour l'année 2011. Après avoir donné à l'assurée la possibilité de se déterminer sur une éventuelle violation de son obligation de renseigner, elle a rendu une décision le 14 août 2013, par laquelle elle a réclamé à l'intéressée la restitution d'un montant de 8'929 fr. 75, somme correspondant aux indemnités de chômage allouées durant la période du mois de février au 30 juin 2011. Saisie d'une opposition, la caisse l'a déclarée irrecevable en raison de sa tardiveté (décision du 14 janvier 2013 [recte: 2014]). A.b. Par jugement du 13 juin 2014, la Cour des assurances sociales du Tribunal cantonal du canton de Vaud a rejeté le recours formé par l'assurée et a confirmé la décision sur opposition du 14 janvier 2014. Elle a considéré, en résumé, que l'opposition à la décision de restitution du 14 août 2013 était recevable mais que celle-ci était matériellement bien fondée en ce qui concerne la demande de restitution des indemnités de chômage indûment perçues. A.c. Par arrêt du 1 er septembre 2015 (cause 8C_679/2014), le Tribunal fédéral a annulé le jugement attaqué et a renvoyé la cause à la cour cantonale pour qu'elle statue à nouveau en respectant le droit d'être entendue de l'assurée. B. Après avoir invité les parties à se déterminer, la cour cantonale a rejeté le recours de l'assurée et a confirmé la décision sur opposition de la caisse du 14 janvier 2014 (jugement du 16 février 2018). C. A._ forme un recours en matière de droit public en concluant à l'annulation du jugement attaqué et au renvoi de la cause à la cour cantonale pour nouvelle décision dans le sens des considérants. Subsidiairement elle demande que le jugement soit réformé en ce sens que le recours est admis et la cause renvoyée à la caisse pour nouvelle décision, plus subsidiairement encore que la décision sur opposition du 14 janvier 2014 soit réformée en ce sens que le montant à restituer s'élève à 3'436 fr. 35, le tout sous suite de dépens pour les trois instances. Elle requiert en outre le bénéfice de l'assistance judiciaire. La caisse intimée conclut au rejet du recours. La cour cantonale et le Secrétariat d'Etat à l'économie (SECO) ont renoncé à se déterminer.