Software Engineering and Architecture Post Exam Observations Level
Software Engineering and Architecture Post Exam
Observations • Level 1: Actual coding proficiency – This is a programming course. • Level 2 – Parroting as an very bad learning style – Keeping general and specific code apart (variability) – Understanding the exercise properly causes problems – Classic: Read the wrong book CS@AU Henrik Bærbak Christensen 2
Coding Proficiency • Programming is formulating source code that can be executed and thereby give the right behaviour – And it requires quite a lot of ‘know by heart’ – And some ‘uhum, cannot remember, have to look that up’ • I look in old guides and google a lot to remember what to do, but… • You cannot read an English book if you have to look up words like ‘this’, ‘something’, ‘you’, ‘must’, ‘know’ – Ok to have to lookup ‘epistemology’, right • Coding requires minimum proficiency! CS@AU Henrik Bærbak Christensen 3
Non Proficient Examples • Quite a few failed exams are due to things ala – – Calling a method like this ‘dddff(int 007, int 004); ’ Formulating a constructor in an interface Declaring ‘public long database(app. Number)’ Spending 7 minutes to formulate a constructor • Of course it is no ‘failed immediately’ but… – You have to be able to correct it (in less than 7 minutes!) • Remedy – You will have to train! You do not play the piano by reading a book, you do it by playing… CS@AU Henrik Bærbak Christensen 4
Parroting • ‘Parroting’ • Agree, SWEA has a lot of templates just as any other field/course/topic has – Like the Strategy UML diagram – Like the Broker Invoker code – Like a compositional design • [class solution{ Strategy s; (a constructor); s. do. Algoritm(…); }] • You have to understand the template and its parts ! – Remembering and reproducing only, is not a viable path !!! CS@AU Henrik Bærbak Christensen 5
Example • Broker exercises • There is a lot of template code, but there are central aspects that must be correct for it to be valid, and otherwise it becomes nonsense! – Ala • The right use of Operation. Names • Of object. Id • Of the deserialization class CS@AU Henrik Bærbak Christensen 6
Parroting • Parroting may work in some fields I am afraid – ‘reproduce what it says in the book’ • But do not confuse it with remembering the templates CS@AU Henrik Bærbak Christensen 7
General Versus Specific • Many exam exercises resolve around variability – Compositional, Parametric, Variability Management, Frameworks • We solve these in SWEA by comp. design principles – Something is general • The interface that encapsulate variability • The declared object(s) of this interface – And something is specific • The class implementing the interface that hardwire the specific behavior • Which is then injected into the general code CS@AU Henrik Bærbak Christensen 8
General Versus Specific • Some of you mix it up • Exercise ala ‘you must support having phone numbers in both a Maria. DB and Mongo. DB database’ • Then writing something ala – long phone. Number = data. Base. Strategy. Mongo. DB. get. Phone. Number(int phone. Number); CS@AU Henrik Bærbak Christensen 9
Exercise Understanding • You will have to read the exercise and understand at least a bit of it • Read the code fragments – they are the key question! • Examples seen – Write code that does not relate to the exercise – Invent new aspects, unrelated to the exercise • Programmers is paid to provide value to costumers – So, you better solve their problems – “You asked for a chess game, but here is a wonderful app that can keep track of your passwords” CS@AU Henrik Bærbak Christensen 10
Exercise Understanding • You should know ‘where to look’ from the exam topic – Variability management • Look for the ‘things that vary’ – the exercise is there – Test-driven development • Look for the Java method to be implemented • State early to me if you have trouble understanding! CS@AU Henrik Bærbak Christensen 11
And of course the usual • A few fail of the same reason as in other courses – Have we read the same book and coded the same exercises? ? ? CS@AU Henrik Bærbak Christensen 12
Conclusion • As always, the way forward is training – Recode paystation and/or parts of Hot. Civ • Perhaps even in an old-fashioned editor like notepad++, gedit, … – Review Hot. Civ’s broker code, and understand the many logical bindings between the server and client Broker roles – Review your failed swea exam, what went wrong? • Did I fail due to coding? Parroting? . . . • Ask me if in doubt • I suggest – Form rehearsal groups, make a rehearsal plan – Do (parts) of the mandatory again CS@AU Henrik Bærbak Christensen 13
- Slides: 13