I am going to go for a Raymond Hettinger style presentation, https://www.cs.odu.edu/~tkennedy/cs330/f20/Public/languageResources/#python-programming-videos.
These materials are web-centric (i.e., do not need to be printed and are available at https://www.cs.odu.edu/~tkennedy/python-workshop).
Who am I?
I have taught various courses, including:
- CS 300T - Computers in Society
- CS 333 - Programming and Problem Solving
- CS 330 - Object Oriented Programming and Design
- CS 350 - Introduction to Software Engineering
- CS 410 - Professional Workforce Development I
- CS 411W - Professional Workforce Development II
- CS 417 - Computational Methods & Software
Most of my free time is spent writing Python 3 and Rust code, tweaking my Vim configuration, or learning a new (programming) language. My current language of interest is Rust (at the time of writing).
Referenced Courses & Materials
I am going to pull from CS 330, CS 350, CS 411W, and CS 417 lecture notes
- CS 330 - Object Oriented Programming & Design
- CS 350 - Introduction to Software Engineering
- CS 411W - Professional Workforce Development II
- CS 417 - Computational Methods & Software
I will also pull a couple examples from my previous Git workshop, https://www.cs.odu.edu/~tkennedy/git-workshop.
The Broad Strokes
T.B.W
Best Practices
- Design Paradigms
- S.O.L.I.D
- Iterators - (CS 330)
- Modern Language Constructs
Tools of the Trade
- Vim (the only editor anyone ever needs)
- Configuration Management
- External Libraries
- Cross-compilation
- Continuous Integration & Deployment
- Documentation
- Javadoc
- Pydoc
- Doxygen
- Rustdoc
- Code Style
- Static Code Analysis
- Code Linters
- Style Checkers
Testing & Development
- Test Driven Development
- Unit Testing & Integration Testing
- Hamcrest Matchers