Summary of whole week¶
In this week, we:
- [ ] practiced designing a project
- [ ] practiced a formal git branching workflow
- [ ] practiced a formal GitHub workflow
- [ ] practiced doing code reviews
- [ ] can describe facets of a good code review
- [ ] practiced pair programming
- [ ] can describe facets of good pair programming
- [ ] practiced TDD
- [ ] can describe a TDD cycle
- [ ] practiced using a formal testing framework
- [ ] responded to CI scripts
- [ ] can describe some facets of good function design
- [ ] can describe some facets of good class design
- [ ] can describe some misconceptions in optimization
- [ ] can describe in general terms with Amdahl's Law is
- [ ] can describe what big-O is
- [ ] can describe what a run-time profile is
Program¶
-
A program shall be or have content/components that is:
- Correct
- Efficient
- Reusable
- Changeable
-
Software development is both series of steps:
- Requirements
- Analysis and design
- Development
- Test
- Development and maintenance
-
... and iteration of these
Did we miss anything on the list?
Tools¶
-
Tools to be covered!
- ☑ Source/version control
- Git
- We have a starting point!
- GitHub as remote backup
- branches
- ☑ Planning
- ☑ Analysis
- ☑ Design
- ☑ Testing
- Different levels
- ☑ Collaboration
- GitHub
- pull requests
- ☑ Sharing
- ☑ open science
- ☑ citation
- ☑ licensing
- ☑ deployment
- ☑ Documentation
- ☑ in-code documentation
- ☑ How-to/ Tutorials
- ☑ Source/version control