SoK: Development of secure smart contracts - Lessons from a graduate course