Skip to content

UNCode is an online platform for frequent practice and automatic evaluation of computer programming, Jupyter Notebooks and hardware description language (VHDL/Verilog) assignments. Also provides a pluggable interface with your existing LMS.

License

JuezUN/INGInious

 
 

Repository files navigation

UNCode

License Contributors GitHub issues Codacy Badge Build Status CLA assistant Gitter

This is the main repository of UNCode.

UNCode is an online platform built on top of INGInious (v0.5) for frequent practice and automatic evaluation of computer programming, Jupyter Notebooks and hardware description language (VHDL/Verilog) assignments. Also provides a pluggable interface with your existing LMS.

UNCode is currently used at the Universidad Nacional De Colombia, Campus Bogotá. UNCode supports automatic evaluation in languages like: C/C++, Java 7/8, Python 3, Verilog, VHDL and Jupyter Notebooks. Additionally, has been employed in courses like: Basic Computer Programming, Data Structures, Machine Learning, Artificial Intelligence, Quantum Programming, Programming Languages, among others. See the complete list of courses.

UNCode provides a backend which manages interaction with Docker and grading code, and a frontend which allows students to submit their code in a simple and beautiful interface. The frontend also includes a simple administration interface that allows teachers to check the progression of their students and to modify exercises in a simple way.

The backend is independent of the frontend and was made to be used as a library.

UNCode can be used as an external grader for Learning Managment Systems (LMS) such as Moodle or OpenEDX.

Built with

Getting started

Install locally

Depending on the operating system you use, follow the given instructions here: Installation

Deploy it for your courses

To deploy UNCode in a server and start using it in your courses, please refer to the Deployment repository. Here you will be able to deploy it following some few steps.

Documentation

For additional documentation, please refer to the Wiki.

Notes on security

Docker containers can be used securely with SELinux enabled. Please do not run untrusted code without activating SELinux.

Roadmap

See the UNCode GitHub Project for a list of proposed features, known issues and how they are being tackled.

Contributing

Go to CONTRIBUTING to see the guidelines and how to start contributing to UNCode.

License

Distributed under the AGPL-3.0 License. See LICENSE for more information.

Contact

In case of technical questions, please use the gitter communication channel.

In case you want to host your course on our deployment, email us on: [email protected]

UNCode: https://uncode.unal.edu.co

Project page: https://juezun.github.io/

Publications

    @InProceedings{Restrepo-Calle2018,
        author = {Restrepo-Calle, F. and Ram{\'{i}}rez-Echeverry, J.J. and Gonzalez, F.A.},
        title = {{UNCode: Interactive System for Learning and Automatic Evaluation of Computer Programming Skills}},
        series = {10th International Conference on Education and New Learning Technologies},
        booktitle = {EDULEARN18 Proceedings},
        isbn = {978-84-09-02709-5},
        issn = {2340-1117},
        doi = {10.21125/edulearn.2018.1632},
        url = {http://dx.doi.org/10.21125/edulearn.2018.1632},
        publisher = {IATED},
        location = {Palma, Spain},
        month = {2-4 July, 2018},
        year = {2018},
        pages = {6888-6898}
    }
    @article{Restrepo-Calle2020,
        author = {Restrepo-Calle, Felipe and Ram{\'{i}}rez-Echeverry, Jhon Jairo and Gonz{\'{a}}lez, Fabio A},
        journal = {Global Journal of Engineering Education},
        keywords = {automatic assessment,computer programming,computer science education,formative evaluation,summative evaluation},
        number = {3},
        pages = {174--185},
        title = {{Using an Interactive Software Tool for the Formative and Summative Evaluation in a Computer Programming Course: an Experience Report}},
        volume = {22},
        year = {2020}
    }
    @Article{Gonzalez2021AutomaticCourses,
        AUTHOR = {González-Carrillo, Cristian D. and Restrepo-Calle, Felipe and Ramírez-Echeverry, Jhon J. and González, Fabio A.},
        TITLE = {Automatic Grading Tool for Jupyter Notebooks in Artificial Intelligence Courses},
        JOURNAL = {Sustainability},
        VOLUME = {13},
        YEAR = {2021},
        NUMBER = {21},
        ARTICLE-NUMBER = {12050},
        URL = {https://www.mdpi.com/2071-1050/13/21/12050},
        ISSN = {2071-1050},
        DOI = {10.3390/su132112050}
    }
    @InProceedings{Chaparro2021,
        author = {Chaparro, Edna and Restrepo-Calle, Felipe and Ram{\'{i}}rez-Echeverry, Jhon Jairo},
        title = {{Learning analytics in computer programming courses}},
        series = {CEUR Workshop Proceedings},
        booktitle = {Proceedings of the LALA'21: IV Latin American Conference on Learning Analytics},
        issn = {1613-0073},
        url = {https://ceur-ws.org/Vol-3059/paper8.pdf},
        publisher = {CEUR-WS},
        location = {Arequipa, Perú},
        month = {October 19–21},
        year = {2021},
        pages = {78-87}
    }
    @article{Ramirez-Echaverry2022,
        author = {Ram{\'{i}}rez-Echeverry, Jhon Jairo and Restrepo-Calle, Felipe and Gonz{\'{a}}lez, Fabio A},
        journal = {Global Journal of Engineering Education},
        keywords = {Computer programming, technology-enhanced learning, computer science education},
        number = {1},
        pages = {65--71},
        title = {{A case study in technology-enhanced learning in an introductory computer programming course}},
        volume = {24},
        url = {http://www.wiete.com.au/journals/GJEE/Publish/vol24no1/10-Restrepo-Calle-F.pdf},
        year = {2022}
    }
    @article{Chaparro2023,
        author = {Chaparro Amaya, Edna Johanna and Restrepo-Calle, Felipe and Ram{\'{i}}rez-Echeverry, Jhon Jairo},
        journal = {Journal of Information Technology Education: Research},
        keywords = {learning analytics, mixed methods, computer programming, correlation analysis, content analysis},
        pages = {339--372},
        title = {{Discovering Insights in Learning Analytics Through a Mixed-Methods Framework: Application to Computer Programming Education}},
        volume = {22},
        doi = {https://doi.org/10.28945/5182},
        month={Aug.},
        year = {2023}
    }
    @article{Corso2024,
        author = {Corso Pinzón, Andrés Francisco and Ramírez-Echeverry, Jhon J. and Restrepo-Calle, Felipe},
        journal = {Research and Practice in Technology Enhanced Learning},
        pages = {015},
        title = {{Automated grading software tool with feedback process to support learning of hardware description languages}},
        volume = {19},
        url={https://rptel.apsce.net/index.php/RPTEL/article/view/2024-19015},
        doi = {https://doi.org/10.58459/rptel.2024.19015},
        month={Jan.},
        year = {2024}
    }

About

UNCode is an online platform for frequent practice and automatic evaluation of computer programming, Jupyter Notebooks and hardware description language (VHDL/Verilog) assignments. Also provides a pluggable interface with your existing LMS.

Topics

Resources

License

Stars

Watchers

Forks

Languages

  • Python 51.7%
  • HTML 23.1%
  • JavaScript 17.4%
  • CSS 4.2%
  • Less 2.0%
  • SCSS 1.5%
  • Other 0.1%