33
Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering” Ivanjica, Serbia , 5 September – 12 September 2010 Humboldt-Universität zu Berlin Department of Computer Science Software Engineering

Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Embed Size (px)

Citation preview

Page 1: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Assignments in 1st semester course „OOP with Java“ as

small projects

Michael Ritzschke

10th Workshop “Software Engineering Education and Reverse Engineering” Ivanjica, Serbia , 5 September – 12 September 2010

Humboldt-Universität zu Berlin Department of Computer Science

Software Engineering

Page 2: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Programming lab “OOP with Java” (Overview) Assignment details: Structure, Requirements Example: Sudoku checker Shell scripts allows partially automatical

evaluation Statistic WS2009/2010 and summary

Contents

2Ivanjica, Serbia , 5 September – 12 September 2010

Page 3: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Programming lab “OOP with Java” in WS 0910 (Overview)

3

Bachelor students (94 registrations) 12 assignments, handling time 2 weeks Submission of the solutions: special

management system “goya”, upload packed file

Success: 50 % of the reachable points

Page 4: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Programming lab website

4

Page 5: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Java assignments (overview WS0910)

5

Decide the weekday for any date (formula from Zeller)

Prime factorization

Big numbers in arrays, different mathematical operations

How many combinations of coints can realize a given value

Well known game

Model of a supermarket

Test correctness of two Sudoku kinds: with diagonal line or without

Solves 9 x 9 Sudokus, if possible

Page 6: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Other interesting little java projects

6

Management for a calendar of birthdays

The game of Life

Computation of special primes, e.g. weakly primes, gaps of primes, twin primes ...

Some calculations for credits, e.g. interest rates, duration ...

Peg Solitaire

Management of foods in a fridge

Page 7: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Programming lab “OOP with Java” (Overview) Assignment details: Structure, Requirements Example: Sudoku checker Shell scripts allows partially automatical

evaluation Statistic WS2009/2010 and summary

Contents

7Ivanjica, Serbia , 5 September – 12 September 2010

Page 8: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Summary

Job description

The assignment structure

8

Page 9: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

The basically requirements (relevant to all solutions)

9

Page 10: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Different kinds of assignments

10

Only the expected result is given Additionally students get a frame with the

declarations of classes and methods Students get a description like javadoc result

Page 11: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Programming lab “OOP with Java” (Overview) Assignment details: Structure, Requirements Example: Sudoku checker Shell scripts allows partially automatical

evaluation Statistic WS2009/2010 and summary

Contents

11Ivanjica, Serbia , 5 September – 12 September 2010

Page 12: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Example: Sudoku checker

12

Job description: Frames of 3 classes, input, expected output TODO: Constructors (data structure); functions read, write, check

Page 13: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Ideal Solution: Internal data structure, super comments

13

Page 14: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Solution: Function read()

14

Page 15: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Solution: Function write()

15

Page 16: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Function check(): Calls checkLines and other parts ...

16

Checks all lines, rows, 3x3 blocks and diagonal lines

Page 17: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

The (hopefully successful) test of the written program with some given different input files

17

Page 18: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Next assignment: Sudoku solver

18

Possible solution algorithm: Backtracking Variable fields and constant fields Fill step by step all variable fields by

increasing numbers and check after increasing if the sudoku is still correct

If correct, do the same for the next field, if not, clear the field and go back to the last correct field and continue with the last correct field

Page 19: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Backtracking needs time …

19

easy anddifficult Sudoku

Page 20: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Results of a competition

20

Page 21: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Programming lab “OOP with Java” (Overview)

Details: Structure, Requirements Example: Sudoku checker Shell scripts allows partially automatical

evaluation Statistic WS2009/2010 and summary

Contents

21Ivanjica, Serbia , 5 September – 12 September 2010

Page 22: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Shell script revise …

22

Reads the file with all uploaded programs Generates directories with the extracted solutions Copies the testing program and the expected

pattern solution Compiles the files and starts the testing program

Page 23: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Shell script comparisionResults …

23

Compares the produced result Exxxx with the expected exemplary output

Uses the command diff (or a tool, for instance kDiff3, look http://kdiff3.sourceforge.net/)

Page 24: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Shell script plagiarismSearch …

24

compares all java sources - also with the command diff

Page 25: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

5 examples of student solutions (assignment “Quader.java”)

25

Number contents05842 filename incorrect

18456 o.k.

28506 1 calculation incorrect

30785 1 method without body

40881 o.k., but plagiarism

Download from goya: result_assignments5.zip

Page 26: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Revise:Build the resultFiles Exxxx…

26

Page 27: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

…for i in `< numbers`do diff results/E$i ../inputs/$assignment/solution.outdone

27

line with difference(surface too small)

without result all 95 lines are different

ComparisionResults:

Page 28: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

PlagiarismSearch:$ diff -i -e -b -w $file1 $file2 |wc -l

28

no difference:potentially plagiat

Page 29: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Summary evaluation

29

Revise: Prepares excellent the solutions for evaluation; furthermore it shows invalid classes and methods

ComparisionResults: Helps to find methods with different results

PlagiarismSearch: Gives an indication for plagiarism Finally the inspector has always to look into the

source files for evaluation the layout and the annotation of classes and methods

Students get: points and email with critical comments

Page 30: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Programming lab “OOP with Java” (Overview)

Details: Structure, Requirements Example: Sudoku checker Shell scripts allows partially automatical

evaluation Statistic WS2009/2010 and summary

Contents

30Ivanjica, Serbia , 5 September – 12 September 2010

Page 31: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Statistics WS0910

31

assignment 1 2 3 4 5 6 7 8 9 10 11

solutions(goya) 94 83 78 63 63 58 51 52 35 40 22points 75-100% 77 48 69 37 38 31 30 37 27 17 11points 50-75% 5 13 2 17 10 7 10 5 3 9 4points 25-50% 0 9 0 2 0 3 2 1 1 4 1points 0-25% 0 2 2 6 12 17 8 9 4 10 6average 9,3 16,2 9,5 7,5 7,1 12,4 14,9 15,5 15,7 19,1 20,0max. points 10 20 10 10 10 20 20 20 20 30 30average % 93,0 80,8 94,8 75,0 70,8 61,8 74,7 77,3 78,7 63,6 66,7

non-valued 11 11 5 1 3   1        

48 students passed the programming lab with success

Page 32: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Summary

32

Some students have experience in Java programming

In addition to the lessons students get many executable program examples

So the programming lab contains little projects with interesting backgrounds (games)

There are mentored times in the computer rooms to clear up questions and to understand the solutions (students don’t get sample solutions)

Comments from students: Programming lab contains motivating homework tasks

Page 33: Assignments in 1st semester course „OOP with Java“ as small projects Michael Ritzschke 10th Workshop “Software Engineering Education and Reverse Engineering”

Summary

33

Thank you for your attention!