Lecture 36 : The End
Programming Details
This is what you’ll likely remember most. It also accounts for only 5% of your graede.
Get to know your tools.
Parsing JSON.
Stream parsing is different from batch parsing.
Creating a simple drawing GUI.
Connecting via TCP.
Dealing with exceptions.
Dealing with timed pre-emption or threads.
You know more about your language.
You know more about its libraries.
Good. But now keep in mind that you will probably not program in this language alone and for all that long. So here is the real lesson:
Get to know your language tools as well as possible and as fast as possible.
Software Design
This material should have been (mostly) a review of what you could have learned from Fundamentals I through III.
It’s worth 25-30% of your grade.
“oh, I didn’t have time to write tests before the deadline. There was too much coding and debugging to do”
“no, you didn’t meet the coding deadline and you had to debug so much because you didn’t write tests.”
It’s not always a dictionary. Develop data representations properly. Think about its purpose and uses.
If you use classes, dedicate a class to one form of information.
A data definition needs interpretations.
Either choose highly descriptive field names, say, int bodyWeightInGrams. Or, add an interpretation close by, say, int bodyWeight; // in grams.
Keep methods small. Name them well xor add a one-line purpose statement.
A basic method is dedicated to one testable task.
A compound method composes several well-named methods. Period.
Comments are a mechanism. Interpretations and purpose statements are expressed as comments. Almost all other comments are useless (or worse).
Communicatinng, Technically
Technical communication—
That’s also why we let you vote on this issue. In your mind, there should be two votes. The first is about the grade you want to show to your parents and employers. The second is the one you really deserved. Deep down you know that the grades you voted for aren’t even close to what they mean. Now work on the issues you have discovered during this course.
We allocate 65-70% of your final grade to technical communication, because this is what software development is really all about.
Start with an overview so your listeners know what you’re talking about and where you’re going with the presentation.
Spend time on problematic pieces of code. Avoid obvious code.
Repeat questions and criticisms. Then respond with rational code-oriented explanations:
“No, the code actually works properly. Take a look at ...”
“Yes, I see what’s wrong. This part breaks the invariant that ...”
Slow down the presenters and even ask them to be quiet for a moment.
Understand what data representations mean from the code, not oral explanations.
Question every function/method that exceeds 10 lines.
Ask for tests when it isn’t clear from the name/purpose what the method does. This should provide sample calls and results.