-
Notifications
You must be signed in to change notification settings - Fork 22k
Core Software Engineering draft (WIP)
Engineering is defined as a field where constructing the product requires the application of a rigorous (and formally accredited) education in mathematics, physics, chemistry, etc., as appropriate. On top of the specific scientific expertise, best practices emerge over a long time (centuries, in some cases), and then get codified into standard practices. Professional licensing boards then develop criteria and an exam for obtaining an engineering license; regulations ensure that only those who obtain this license can legally call themselves professional engineers (PE).
You can still be "practising engineering" even if you aren't yet licensed; software engineering is being practised all over the world, every day to produce software with extremely high safety, reliability, and performance requirements, such as in aviation, medical devices, spacecraft, etc. In contrast to pure computer science, which you can think of as the "scientific domain knowledge" part of software engineering, software engineering is a very young field that hasn't yet reached the same level of standardization that exists in other engineering fields like chemical, mechanical, etc.
Software engineering (SWE) as a formal academic subject is too vast to nest within a computer science curriculum; if the material were available, it would warrant its own separate curriculum. Until SWE is more widely recognized as an independent subject, educational material is limited and most entry-level software engineering roles expect a background in computer science (the ad hoc "engineering" part is learned on the job). Therefore, the goal of the Software Engineering sections of the curriculum is not to teach SWE as a whole, but rather to teach a few small components of it that can be relevant to both CS and SWE.
Notes to self
- http://sites.computer.org/ccse/SE2004Volume.pdf
- NCEES PE SWE exam that is being discontinued
- https://www.sei.cmu.edu/education-outreach/credentials/index.cfm
- https://en.wikipedia.org/wiki/Software_Engineering_Body_of_Knowledge
- https://pdfs.semanticscholar.org/80e9/d3e5ea831c270ff07a55d7e27a3256c3c1de.pdf
- Core Theory
- 500 Lines or Less
- https://www.amazon.com/Software-Architecture-Practice-3rd-Engineering/dp/0321815734
- UMUC Software Testing Fundamentals
- UMUC Software Testing Management
- UMUC Formal Software Verification
- Advanced Software Engineering