WASP Software Engineering course (part)
This repo contains course materials, resources/links, and student assignments for the Software Engineering (SE) part of the WASP "SE and Cloud Computing" course.
Papers on SE for AI/ML
Tools (with background reading)
Cheat Sheets
Version control
- Understanding Version-Control Systems by Eric Raymond
- Atomic Commits by Nathan Rambeck
- Semantic Versioning specification
- Introduction to Semantic Versioning
IDEs
Code autocomplete
- TabNine - code autocomplete for many languages (including Python, Java, Javascript, and more)
- Code Autocomplete is a VS code extension that access TabNine for code autocomplete
ML-QA Toolkit
- QA-Mapping-for-ML - results of a recent Master thesis at Chalmers
- ML Testing Paper Mapping Tool - online filtering tool for the ML testing papers
Data Validation
Design By Contract
Unit Testing
- Effective Python Testing With Pytest
- Unit Testing Your Code with the unittest Module by Corey Schafer
Property-based testing (PBT)
- Hypothesis PBT in Python
- Property based testing — A practical approach in Python with Hypothesis and Pandas
Coding standards and Code Reviews
- Style Guide for Python Code
- Coding Standards and Best Practices for Python Code Quality
- How To Review Someone Else’s Code: Tips and Best Practices
QA/Static analysis
- pylint - static code analysis for Python
- Using pylint to write clean Python code
- pylama code audit tool for Python
- lintR static code analysis for R
- StaticLint.jl - static code analysis for Julia
- WALA static code analysis for Java bytecode and related languages
Static analysis for ML
- mllint - Linter for Machine Learning projects
- pynblint - linter for Python Notebooks, this is the one you will try in assignment 1 in the course
- nblyzer notebook static analysis tool/paper from Microsoft
- MLSmellHound - paper describing adaptation of pylint for ML projects
- Ariadne / WALA extension to WALA (above) for Python and Tensorflow