Hot answers tagged

6

Buffy is provably correct (no risk needed!) that it is impossible to do it with automated code analysis, as this is an attempt to figure out when a program will finish (i.e. the halting problem.) You can get a very good guess, however, by using a few (very) differently sized input data sets, run the program on each one multiple times, and observe the ...


5

This is what I have for my Java assignments. Notice that this is not a programming course, but an algorithms course. Compiling and running (8 points) 1.a 0 points if the program doesn't compile. No points for the rest. Grading complete. 1.b If the code compiles and runs: a Full points if it succeeds in all test cases. b 0.5 deducted for each failing ...


4

Since the nature of your question implies sharing personal experience rather than providing some guidelines grounded on hard evidence, I'll take the liberty to share mine. In the past I tried to develop a fine-grained scheme for my courses, but now I think it was a mistake. Such schemes cause more troubles than they do good: they are difficult to follow for ...


4

Have you thought about having a solution that you create and test the students test cases against your solution? Then you have a stable platform for running the student defined tests. Also run test cases which you prepare against the student's code. Now you have graded the two parts independently of one another. Just out of curiosity, what did you use for ...


4

I'll accept a bit of risk here, but claim that this isn't possible in general unless the student writes very naive code. But in the courses for which you want to use it, that doesn't seem likely. Imagine a linear algorithm implemented as two nested loops. The outer loop depends on the "n" that you are interested in, say the length of an array. The inner ...


3

I will attempt to break down your query as best I can: MOOC open source that I could install on my servers to provision education: Canvas, Sakai or Moodle, BUT the downside of having these on your own servers are that you have to complete the updates yourself and many institutions do a "fresh install" each Summer during break. It is worth considering a ...


3

If you run all implementations against all tests, then you can see anomalies. If you put results into a grid, then any failures should show up as a line: horizontal for implementations, vertical for tests. Any odd failures will still need investigating, but there should be few.


3

When students are learning to program they should be focused on more than getting the "right" answer. If a pro is writing quick-n-dirty code that will be discarded, the answer is important. But in all other cases, a program will have a lifetime and this needs to be considered. Therefore it also needs to be taught - and learned. Focusing too much on details ...


2

That seem an important question. Here is my input. 'm using repl.it for a month, created ~60 assignments in 10 classrooms (java,c#). (Both basics, and also recursion, lined-lists and Queues. ) The idea of web-based-ide & auto-checking & status-report-to-teacher is fantastic ! It gets students very fast to code, and see results, also teacher ...


2

What I'm doing is: I give points for each relevant idea / concept in the program. E.g. if you have to loop through a data structure and you have to do something with the content, I would give point for the loop construction and points for the content. The graders can now check whether the loop is correct and if the inner content is correct and give points ...


2

The 'external view' is important as it ensures the submission is correct. These tests should be similar to Acceptance Testing since you are checking whether the submission meets the 'business' requirements i.e. the requirements laid out in your question. I highly recommend automating this process with unit tests or console based tests (check output matches ...


2

I have seen universities use linters and test suites to automatically check the correct state of the assignment so it can be submitted. Here is an example in Python or the student assignment helper programs in C, used for the book CS:App as another example of possible small programs you could include with assignments to make this easier to review submissions....


2

Very interesting strategy. You are essentially putting the 10% test case-writers in the role of a sophisticated recruiting agent who is "interviewing" the rest of the 90% of the class for a job. It is probably not really fair, since the 10% are probably not sufficiently mature to identify the key concepts to be tested, but the class discussion (or perhaps ...


1

Totally 100% Moodle. It is (relatively) easy to set up, free, has an enormous user community and is popular with learners. There are binary Moodle packages to install onto linux servers. There are add ons for automated grading of CS work but this will require some extra work. Moodle does support tex/Latex maths markup though which often makes life easier. ...


1

My company has a training program for software engineering interns. A computer science problem is given to them that they have to code. Every individual intern is going to create a PR to one of our company's repository. Without merging the PR, an instructor can do a code review and add comments, just like Udacity's. IMO, GitHub is better for code review than ...


1

These are some popular tools that the community should look into for a reasonable grading setup: AutoGradr.com (Disclaimer: I'm one of the authors of this free tool) HackerRank.com domjudge.org mooshak.dcc.fc.up.pt


Only top voted, non community-wiki answers of a minimum length are eligible