|
|
---
|
|
|
Author: Thomas J Kennedy
|
|
|
Email: tkennedy@cs.odu.edu
|
|
|
---
|
|
|
|
|
|
> 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**
|
|
|
- [S.O.L.I.D](https://www.cs.odu.edu/~tkennedy/cs330/f20/Public/reviewSOLID/)
|
|
|
- [Iterators](https://www.cs.odu.edu/~tkennedy/cs330/f20/Public/designDiscussionIterators/)
|
|
|
- **CS 350 - Introduction to Software Engineering**
|
|
|
- **CS 411W - Professional Workforce Development II**
|
|
|
- [Git Review](https://www.cs.odu.edu/~tkennedy/cs411/f20/Public/gitIntro/)
|
|
|
- **CS 417 - Computational Methods & Software**
|
|
|
- [Python non-linear solver discussion](https://www.cs.odu.edu/~tkennedy/cs417/f20/Public/solverDiscussion/)
|
|
|
|
|
|
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
|
|
|
- [Jenkins](https://jenkins.io/)
|
|
|
- [Gitlab CI](https://about.gitlab.com/product/continuous-integration/)
|
|
|
- [Travis CI](https://travis-ci.org/)
|
|
|
- [Azure Pipelines](https://azure.microsoft.com/en-us/services/devops/pipelines/)
|
|
|
- [AWS CodePipeline](https://aws.amazon.com/codepipeline/)
|
|
|
- Documentation
|
|
|
- Javadoc
|
|
|
- Pydoc
|
|
|
- Doxygen
|
|
|
- Rustdoc
|
|
|
- Code Style
|
|
|
- Static Code Analysis
|
|
|
- Code Linters
|
|
|
- Style Checkers
|
|
|
|
|
|
|
|
|
## Testing & Development
|
|
|
|
|
|
- Test Driven Development
|
|
|
- [Unit Testing & Integration Testing](https://doc.rust-lang.org/book/ch11-03-test-organization.html)
|
|
|
- [Hamcrest Matchers](http://hamcrest.org/)
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|