From db89d01ec46df7588cb1714a7083727e406ac691 Mon Sep 17 00:00:00 2001 From: Simon Rozsival Date: Sat, 4 Feb 2017 10:18:43 +0100 Subject: [PATCH] fixing english in the introduction --- Rewritten-docs.md | 108 ++++++++++++++++++++++++---------------------- 1 file changed, 56 insertions(+), 52 deletions(-) diff --git a/Rewritten-docs.md b/Rewritten-docs.md index 9022a3e..6cd62e9 100644 --- a/Rewritten-docs.md +++ b/Rewritten-docs.md @@ -1,10 +1,10 @@ # Introduction -Generally, there are many different ways and opinions on how to teach people +In general there are many different ways and opinions on how to teach people something new. However, most people agree that a hands-on experience is one of the best ways to make the human brain remember a new skill. Learning must be -entertaining and interactive, with fast and frequent feedback. Some kinds of -knowledge are more suitable for this practical type of learning than others, and +entertaining and interactive, with fast and frequent feedback. Some areas +are more suitable for this practical way of learning than others, and fortunately, programming is one of them. University education system is one of the areas where this knowledge can be @@ -12,58 +12,62 @@ applied. In computer programming, there are several requirements a program should satisfy, such as the code being syntactically correct, efficient and easy to read, maintain and extend. -Checking programs written by students takes time and requires a lot of -mechanical, repetitive work -- reviewing source codes, compiling them and -running them through testing scenarios. It is therefore desirable to automate as -much of this work as possible. The first idea of an automatic evaluation system +Checking programs written by students by hand takes time and requires a lot of +repetitive work -- reviewing source codes, compiling them and +running them through test scenarios. It is therefore desirable to automate as +much of this process as possible. + +The first idea of an automatic evaluation system comes from Stanford University professors in 1965. They implemented a system which evaluated code in Algol submitted on punch cards. In following years, many similar products were written. -In the world of today, properties like correctness and efficiency can be tested -automatically to a large extent. This fact should be exploited to help teachers -save time for tasks such as examining bad design, bad coding habits and logical +Nowadays properties like correctness and efficiency can be tested +to a large extent automatically. This fact should be exploited to help teachers +save time for tasks such as examining bad design, bad coding habits, or logical mistakes, which are difficult to perform automatically. -There are two basic ways of automatically evaluating code -- statically -(checking the source code without running it; safe, but not very precise) or -dynamically (running the code on test inputs and checking the correctness of -outputs ones; provides good real world experience, but requires extensive -security measures). +There are two basic ways of automatically evaluating code: + +- **statically** -- by checking the source code without running it. + This is safe, but not very precical. +- **dynamically** -- by running the code on test inputs and checking the correctness of + outputs ones. This provides good real world experience, but requires extensive + security measures). This project focuses on the machine-controlled part of source code evaluation. -First, general concepts of grading systems are observed and problems of the -software previously used at Charles University in Prague are briefly discussed. -Then new requirements are specified and projects with similar functionality are -examined. With acquired knowledge from such projects in production, we set up +First we observed the general concepts of grading systems and discussed the problems of the +software previously used at the Charles University in Prague. +Then the new requirements were specified and we examined projects with similar functionality. +With the acquired knowledge from these projects, we set up goals for the new evaluation system, designed the architecture and implemented a fully operational solution based on dynamic evaluation. The system is now ready for production testing at the university. ## Assignment -The major goal of this project is to create a grading application that will be +The major goal of this project is to create a grading application which will be used for programming classes at the Faculty of Mathematics and Physics of the Charles University in Prague. However, the application should be designed in a modular fashion to be easily extended or even modified to make other ways of usage possible. -The system should be capable of dynamic analysis of submitted source codes. This -consists of following basic steps: +The system should be capable of doing a dynamic analysis of the submitted source +codes. This consists of the following basic steps: 1. compile the code and check for compilation errors -2. run compiled binary in a sandbox with predefined inputs -3. check constraints on used amount of memory and time -4. compare program outputs with predefined values -5. award the code with a numeric score - -The whole system is intended to help both teachers (supervisors) and students. -To achieve this, it is crucial to keep in mind the typical usage scenarios of -the system and to try to make these tasks as simple as possible. To fulfil this +2. run the compiled program in a sandbox with predefined inputs +3. check the constraints of the amount of used memory and time +4. compare the outputs of the program with the defined expected outputs +5. award the solution with a numeric score + +The whole system is intended to help both the teachers (supervisors) and the students. +To achieve this, it is crucial for us to keep in mind the typical usage scenarios of +the system and to try to make these tasks as simple as possible. To fulfill this task, the project has a great starting point -- there is an old grading system currently used at the university (CodEx), so its flaws and weaknesses can be addressed. Furthermore, many teachers desire to use and test the new system and -they are willing to consult ideas or problems during development with us. +they are willing to consult our ideas or problems during the development with us. ## Current System @@ -71,8 +75,8 @@ The grading solution currently used at the Faculty of Mathematics and Physics of the Charles University in Prague was implemented in 2006 by a group of students. It is called [CodEx -- The Code Examiner](http://codex.ms.mff.cuni.cz/project/) and it has been used with some improvements since then. The original plan was to -use the system only for basic programming courses, but there was a demand for -adapting it for many different subjects. +use the system only for the basic programming courses, but there was a demand for +adapting it for several different courses. CodEx is based on dynamic analysis. It features a web-based interface, where supervisors can assign exercises to their students and the students have a time @@ -86,8 +90,8 @@ corresponds to his/her privileges. There are user groups reflecting the structure of lectured courses. A database of exercises (algorithmic problems) is another part of the project. -Each exercise consists of a text describing the problem, an evaluation -configuration (machine-readable instructions on how to evaluate solutions to the +Each exercise consists of a text describing the problem, a configuration of the +evaluation (machine-readable instructions on how to evaluate solutions to the exercise), time and memory limits for all supported runtimes (e.g. programming languages), a configuration for calculating the final score and a set of inputs and reference outputs. Exercises are created by instructed privileged users. @@ -96,30 +100,30 @@ and specifying additional properties: a deadline (optionally a second deadline), a maximum amount of points, a maximum number of submissions and a list of supported runtime environments. -Typical use cases for supported user roles are following: +The typical use cases for the user roles are the following: - **student** - - create new user account via registration form - - join a group - - get assignments in group - - submit solution to assignment -- upload one source file and trigger + - create a new user account via a registration form + - join groups (e.g., the courses he attends) + - get assignments in the groups + - submit a solution to an assignment -- upload one source file and start the evaluation process - - view solution results -- which parts succeeded and failed, total number of - acquired points, bonus points -- **supervisor** (similar to CodEx **operator**) - - create exercise -- create description text and evaluation configuration + - view the results of the solution -- which parts succeeded and failed, the total + number of the acquired points, bonus points +- **supervisor** (similar to CodEx *operator*) + - create a new exercise -- create description text and evaluation configuration (for each programming environment), upload testing inputs and outputs - - assign exercise to group -- choose exercise and set deadlines, number of - allowed submissions, weights of all testing cases and amount of points for - correct solutions - - modify assignment - - view all results in group - - check automatic solution grading -- view submitted source and optionally - set bonus points + - assign an exercise to a group -- choose an exercise and set the deadlines, + the number of allowed submissions, the weights of all test cases and the amount + of points for the correct solutions + - modify an assignment + - view all of the results of the students in a group + - review the automatic solution evaluation -- view the submitted source files + and optionally set bonus points (including negative points) - **administrator** - create groups - alter user privileges -- make supervisor accounts - - check system logs, upgrades and other management + - check system logs ### Exercise Evaluation Chain