Mario, realizó sus estudios de pregrado y de maestría en Ingeniería de Sistemas y Computación en la Universidad de los Andes. Tiene un Ph. D en Ciencias de la Vrije Universiteit Brussel (Bélgica) y un Ph.D en Ingeniería de la Universidad de los Andes.
En 2011 se vinculó como profesor asistente del Departamento de Ingeniería de Sistemas y Computación y desde entonces ha estado asociado al departamento y ha participado como docente tanto en el programa de pregrado como en los programas de Maestría en Arquitecturas de TI, Maestría en Tecnologías de Información para el Negocio y Maestría en Ingeniería de Sistemas, así como en el Doctorado en Gestión de la Innovación de las facultades de Ingeniería, Arquitectura y Diseño y Administración.
Entre 2004 y 2006 fue investigador en el proyecto pedagógico y tecnológico Cupi2, para apoyar procesos de enseñanza de programación a estudiantes de pregrado de Ingeniería y a partir del 2018 participó en el nuevo proyecto de reforma de los cursos de programación que dio origen al curso de Introducción a la Programación, que está siendo adoptado por varias facultades de la Universidad, y a la plataforma Senecode.
Su trabajo como investigador se ha centrado en el área de la arquitectura y en la aplicación de técnicas de arquitectura y modelado en dominios específicos, especialmente en el campo del modelado y la automatización de procesos de negocio. Recientemente, Mario también ha estudiado problemáticas relacionadas con la enseñanza de la programación y la construcción de ayudas para apoyar la práctica deliberada y el desarrollo de habilidades. Desde el 2014 ha sido el líder del grupo de investigación TICSw: Tecnologías de Información y Construcción de Software, catalogado en la categoría A1 de Colciencias.