Software engineering is a branch of engineering involving building software. Along with hardware engineering, these two make up computer engineering.
Nowadays many applications are data-intensive instead of compute-intensive.
Resources
- Designing Data-Intensive Applications, by Martin Kleppmann
- The Pitt CS Wiki, from students at the University of Pittsburgh
- Habits of Great Software Engineers, an essay by Vadim Kravcenko
- The Missing Semester of Your CS Education, from the folks at MIT’s CSAIL
- Glossary of computer science, at the English Wikipedia
Blogs and newsletters:
Key concepts
- Software systems
- Team programming
- Data (storage, manipulation)
- Algorithm
- Programming language (paradigms)
- Tech stack
- Program testing
- Parallel computing
- Software optimisation
Sub-fields
- Machine learning
- Full-stack development
- Mobile computing
- Edge computing
- Systems software
- Database
- Distributed system
- Cloud computing
- DevOps
Principles
- Correctness
- Portability
- Scalability
- Maintainability
- Accessibility
- Robustness
- Adaptability
- Performance
Tools
- Shell
- Integrated development environment
- Version control (Git)
- Compiler and interpreter
- Debugger
- Library
- API
- Framework
- Linter
Courses
- APS105 — Computer Fundamentals, an introduction to C
- ECE244 — Programming Fundamentals, an introduction to C++ and object-oriented design
- ECE297 — Software Design and Communication, an introduction to software design
See also
Some related fields include:
Some broadly related aspects of engineering: