This is a course that focuses both on manually scanning the code vulnerabilities, and bugs through focusing on a large set of (around 40) vulnerabilities for smart contracts and also on automatic vulnerability analysis tools. It also includes several lectures which demonstrate and use security-related libraries which are specifically created to improve the security of smart contracts. The selected development language is Solidity. We have a "Solidity and Remix in a Nutshell Lecture" for students who have a background in other development languages but lack smart contract development experience. This would help them to understand the content and to be able to run provided code parts along with various explanations throughout the course dealing with language/platform-specific issues.
The security weaknesses addressed in this course include some popular weaknesses such as Reentrancy but also many others. We visit numerous terms as we explain these problems and related solutions. Whenever we encounter a pattern to solve a problem we explicitly mark this on our slides. We will be looking at code samples which will be provided from the course web site when we discuss the problems and solutions.
Finally, the tools and libraries which used in the course either to introduce new tools/libraries or as helper tools are Remix, Docker, VeriSol, DotNetTool, Oyente, Open Zeppelin Access Control, Open Zeppelin Tokens, Open Zeppelin, Manticore, and Slither.