About Thesis

  • Student: Matúš Gál
  • Supervisor: Ing. František Gyarfaš, CSc.
  • Department: FMFI.KAI - Department of Applied Informatics

  • Title: Web teaching tool for agile learning new features in C++11, C++14 and C++17

  • Annotation: The aim of the bachelor thesis is to design and implement an interactive web environment for learning selected new language features in C++11, C++14 and C++17 using agile methods like test driven programming and refactoring. Web application will allow to create exercises that will guide students in refactoring existing code written in old C++ into new code with new language features. The application will provide a web programming environment. Generated code along with tests will run in virtual environment on server and the test results will be presented to the user. The part of the system will be a catalogue of agile exercises. The application will include basic system administration tools: users administration, management of exercises and their results, and source code version control. The system will be implemented using technologies/tools: JavaScript (jQuery, Bootstrap), MySQL, HTML5, CSS, C++ compiler, unit testing library, virtual server.

Structure

Placeholder

Timeline

10/2019

Created this web page

11/2019

Collecting resources (books, similar theses, ...), created timeline

12/2019

Writing short part of thesis (cca 10 pages long), start working on user interface

1/2020

Create sandbox on virtual server and first working prototype

2/2020

Working on and finishing the server side of the application

3/2020

Finish user interferace, finish frontend development. Create test tasks for students.

4/2020

Finish writing main part of the thesis

5/2020

Final testing and handing out the thesis

Resources

Publications

Langr, J.,Swaine, M. (2013). Modern C programming with test-driven development: Code better, sleep better. Dallas, TX: The Pragmatic Bookshelf.

Beck, K. (2002). Test Driven Development: By Example. Addison-Wesley Professional.

Fowler, M. (2004). Refactoring Improving the Design of Existing Code.Grada

Robert C. Martin(2008). Clean Code: A Handbook of Agile Software Craftsmanship.

Robinson,T (2017). Building Virtual Machine Labs: A Hands-On Guide

Kusnetzky,D (2014)Virtualization: A Manager's Guide: Big Picture of the Who, What, and Where of Virtualization

Documentations, manuals

Django documentation

Learn C++

Similar theses

Tamara Savkova: Web Teaching Tool for Learning Agile Programming, 2018

Tomáš Bočinec: Webová výuka programovania pomocou metodológie TDD, 2017

Viliam Vakerman: Webová výuka programovania v C++ pomocou jednotkového testovania, 2017

Existing solutions

Treehouse

Codecademy

About

Available for download

Progress

  • Week 1:Basic Web Page Structure
  • Week 2:User Login and Registration
  • Week 3:Extending the Web Page Base Theme
  • Week 4:Backend: Model and Serializer Creation
  • Week 5:Created Rest API Endpoints
  • Week 6:Course and Exercise Creation Pages
  • Week 7:Course and Exercise Edit Pages
  • Week 8:Online Code Editor Environment
  • Week 9:Improved Error Handling
  • Week 10:Backend Code Execution
  • Week 11:Course/Exercise Drag & Drop, Input Validation
  • Week 12:QOL Changes, Minor Fixes

About

About Me

  • Name: Matúš Gál
  • Department: FMFI.KAI - Department of Applied Informatics
  • Email: gal39@uniba.sk