Here's a list of topics I think would benefit some CompSci or Software Engineering undergraduate degrees. Which of these are already covered really well by some universities? Comments welcome here or on this Mastodon thread.
- Version control
- Theory
- Branching and merging
- Centralised and distributed VCS
- Collaboration models
- Commit logs
- Debugging
- git
- Mercurial
- Pijul
- Working in a team
- Code comprehension
- Coding standards, clean code, compiler warnings
- Anti-patterns
- Project tracking, issues and status
- Project metrics, KLOCs, function points, velocity, complexity
- Interfaces
- Layering and modularity
- Large team structures
- Time management, yak shaving, and automation
- Documentation
- Technical writing
- User documentation
- Design documentation and agile methods
- Project documentation
- Commit logs
- Issues
- Open source
- Types of license
- Collaboration models
- Project health
- Project templates
- Governance models and foundations
- Asking smart questions
- Contributing
- Concurrency
- Traces
- FDR
- Memory models
- Data races
- Coding standards
- Language support
- Model checking
- Locking
- Lock free data structures
- Diagnostics
- First failure data capture
- Logging, tracing, messages and IDs
- Core dumps
- Stack traces
- Symptoms
- Exceptions, panicking, and recovery
- Dependency management
- Dependency graphs, fan-in, fan-out
- Granularity
- Tooling, lock files
- Cyclic dependencies
- Version management, upgrade, downgrade
- Compatibility and semver
- Security and CVEs
- Upgrade policies and dependency bots
- Code comprehension case studies
- Lexical Scanning in Go: https://www.youtube.com/watch?v=HxaD_trXwRE
- Cloud Foundry Java Client: https://github.com/cloudfoundry/cf-java-client
- Bindgen: https://github.com/rust-lang/rust-bindgen
- Other suggestions welcome...