4 Developer Overview
Application Organization: The CSTutor application, from a student level, is organized around the Explorer-Roadmap-Page system. From a development standpoint, the application will be bettered by making the transition between these elements smooth and simple, whereby the Explorer may be used to prompt the Roadmap, which may be used to get Pages.
Another important consideration is the storage of the shared Course, Class, Lesson, and Page data. These pieces of data must be stored in a globally accessible area, with controlled writes by administrators and instructors. Though there shouldn't be a case of multiple people trying to write to the same data section, the consistency of the database is important to the application. Additionally, user data must be available to all users of the application for authentication purposes; care must be taken to ensure the safety of user data as well, both in the form of transmitted passwords and quiz grades.
Also important to the implementation is the importation of html data, and the expansion of the custom CSTutor tags embedded within. These tags may be read and replaced when the page is displayed, or the window which displays the html data can be made to handle the data by itself. In either case, the application must allow instructors to edit their lessons in external tools and import the pages into CSTutor. Likewise, the application must permit instructors to edit their pages from within CSTutor, and make the process of adding quizzes and code blocks easy.
For Code Block functionality, the CSTutor application is expected to escape to an interpreted shell, which may have a body of code pre-loaded to edit. The recommended source for this shell is the BeanShell of Java, due to its easy integration. This interpreted environment allows the application to forego compiling real code, and may allow the code block to make use of the already running environment. Care should be taken, however, to ensure that a user may not use the Code Block functionality to subvert the running environment in such a way as to gain access to other user's confidential data.