This site corresponds to the Fall 2020 course offering and is no longer maintained.
Articles
- Avizienis et al. 2004
- Avizienis et al., “Basic Concepts and Taxonomy of Dependable and Secure Computing,” IEEE Transactions on Dependable and Secure Computing, Vol. 1, No. 1, pp. 11–33, 2004
- Bentley 1985
- Bentley, “Programmimg Pearls: Bumper-Sticker Computer Science,” Communications of the ACM, Vol. 28, No. 9, pp. 896–901, September 1985
- Bessey et al. 2010
- Bessey, Block, Chelf, Chou, Fulton, Hallem, Henri-Gros, Kamsky, McPeak, and Engler, “A Few Billion Lines of Code Later: Using Static Analysis to Find Bugs in the Real World,” Communications of the ACM, Vol. 53, No. 2, pp. 66–75, February 2010 (online)
- Boehm 1996
- Boehm, “Anchoring the Software Process,” IEEE Software, Vol. 13, No. 4, pp. 73–82, July 1996
- Brooks 1987
- Brooks, “No Silver Bullet Essence and Accidents of Software Engineering,” Computer, Vol. 20, No. 4, pp. 10–19, April 1987
- Constantine 1993
- Constantine, “Work Organization: Paradigms for Project Management and Organization,” Communications of the ACM, Vol. 36, No. 10, pp. 35–43, October 1993
- Dijkstra 1975
- Dijkstra, “How do we tell truths that might hurt?,” EWD 498, 1975 (republished in Selected Writings on Computing: A Personal Perspective)
- Dijkstra 1988
- Dijkstra, “On the Cruelty of Really Teaching Computer Science,” EWD 1036, 1988
- Distefano et al. 2019
- Distefano, Fähndrich, Logozzo, and O’Hearn, “Scaling Static Analyses at Facebook,” Communications of the ACM, Vol. 62, No. 8, pp. 62–70, August 2019 (online)
- Fagan 1976
- Fagan, “Design and code inspections to reduce errors in program development,” IBM Systems Journal, Vol. 15, No. 3, pp. 182–211, 1976
- Fairley and Wilshire 2003
- Fairley and Wilshire, “Why the Vasa Sank: 10 Problems and Some Antidotes for Software Projects,” IEEE Software, Vol. 20, No 2., pp. 18–25, 2003 (copy)
- Fishman 1996
- Fishman, “They Write the Right Stuff,” Fast Company, 31 December 1996
- Garman 1981
- Garman, “The "BUG" Heard 'round the World: Discussion of the Software Problem Which Delayed the First Shuttle Orbital Flight,” SIGSOFT Software Engineering Notes, Vol. 6, No. 5, pp. 3–10, October 1981
- Gibbs 1994
- Gibbs, “Software’s Chronic Crisis,” Scientific American, Vol. 271, No. 3, pp. 86–95, September 1994 (copy)
- Gotterbarn et al. 1997
- Gotterbarn, Miller, and Rogerson, “Software Engineering Code of Ethics,” Communications of the ACM, Vol. 40, No. 11, pp. 110–118, November 1997 (online)
- Gray 1985
- Gray, “Why Do Computers Stop and What Can Be Done About It?,” Technical Report 85.7, Tandem Computers, June 1985
- Hovemeyer and Pugh 2004
- Hovemeyer and Pugh, “Finding Bugs is Easy,” Proceedings of the 19th ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA '04), pp. 132–136, October 2004 (slides)
- IEEE 1990
- IEEE, “IEEE Standard Glossary of Software Engineering Terminology,” IEEE Std 610.12-1990, December 1990
- Jones 1996
- Jones, “Software defect-removal efficiency”, Computer, Vol. 29, No. 4, pp. 94–95, April 1996
- Leveson and Turner 1993
- Leveson and Turner, “An Investigation of the Therac-25 Accidents,” Computer, Vol. 26, No. 7, pp. 18–41, July 1993
- Nelson 1990
- Nelson, “Fault-Tolerant Computing: Fundamental Concepts,” Computer, Vol. 23, No. 7, pp. 19– 25, July 1990
- O’Sullivan 2009
- Bryan O’Sullivan, “Making Sense of Revision-Control Systems,” Communications of the ACM, Vol. 52, No. 9, pp. 56-62, September 2009
- Rani and Kumar 2015
- Rani and Kumar, “A Seniment Analysis System to Improve Teaching and Learning,” Computer, Vol. 50, No. 5, pp. 36–43, May 2017
- Reason 1990
- Reason, “The contribution of latent human failures to the breakdown of complex systems,” Philosophical Transactions of the Royal Society B, Vol. 327, No. 1241, Royal Society, pp. 475–484, April 1990
- Rogers 2009
- Rogers, “Software Fault Tolerance,” Ada User Journal, Vol. 30, No. 2, June 2009
- Sadowski et al. 2018
- Sadowski, Aftandilian, Eagle, Miller-Cushon, and Jaspan, “Lessons from Building Static Analysis Tools at Google,” Communications of the ACM, Vol. 61, No. 4, pp. 58–66, April 2018 (online)
- Somers 2017
- Somers, “The Coming Software Apocalypse,” The Atlantic, 26 September 2017
- Tossell et al. 2015
- Chad C. Tossell, Philip Kortum, Clayton Shepard, Ahmad Rahmati, and Lin Zhong, “You Can Lead a Horse to Water But You Cannot Make Him Learn: Smartphone Use in Higher Education,” British Journal of Educational Technology, Vol. 46, No. 4, pp. 713–724, July 2015 (press release)
- Yeh 1996
- Yeh, “Triple-Triple Redundant 777 Primary Flight Computer,” Proceedings of the 1996 IEEE Aerospace Applications Conference, Vol. 1, pages 293–307, February 1996
- Zeller 1999
- Zeller, “Yesterday, My Program Worked. Today, It Does Not. Why?,” Proceedings of the 7th European Software Engineering Conference, Springer, pp. 253–267, September 1999
Blogs
- Bird 2014
- Jim Bird, “Don’t waste time on Code Reviews,” Building Real Software (blog), 20 August 2014
- Bugayenko 2020a
- Bugayenko, “Talented Programmers Don’t Tolerate Chaos,” BLOG@CACM, 11 February 2020
- Bugayenko 2020b
- Bugayenko, “Clean Code Isn’t Enough; It Must Be Crystal Clear, Too,” BLOG@CACM, 12 March 2020
- Cohn 2016
- Mike Cohn, “A Simple Way to Run a Sprint Retrospective,” Mountain Goat Software (blog), 26 January 2016
- Lambert 2015
- John Lambert, “The Inside Story Behind MS08-067,” Microsoft TechNet (blog), 26 September 2015
- Meyer 2019
- Meyer, “The Shortest Possible Schedule Theorem: Yes, You Can Throw Money at Software Deadlines,” BLOG@CACM, October 2019
- Spolsky 2000
- Spolsky, “The Joel Test: 12 Steps to Better Code,” Joel on Software (blog), 9 August 2000
Books
- Bauer 1972
- Bauer, Software Engineering, Information Processing, North Holland Publishing Co., 1972
- Boehm 1981
- Boehm, Software Engineering Economics, Prentice Hall, 1981
- Chacon and Straub 2014
- Chacon and Straub, Pro Git, 2nd edition, Apress, 2014
- Cockburn 2001
- Cockburn, Writing Effective Use Cases, Addison-Wesley, 2001
- Cohen et al. 2013
- Cohen, Teleki, and Brown, “Code Review at Cisco Systems,” in Best Kept Secrets of Peer Code Review, pp. 65–89, 2013
- Dijkstra 1982
- Dijkstra, Selected Writings on Computing: A Personal Perspective, Springer, 1982
- Erl et al. 2013
- Erl, Mahmood, and Puttini, Cloud Computing: Concepts, Technology & Architecture, Pearson, 2013 (O’Reilly Learning)
- Fowler 2004
- Fowler, UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3rd edition, Addison-Wesley Professional, 2004 (O’Reilly Learning)
- Gamma et al. 1995
- Gamma, Helm, Johnson, and Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995 (O’Reilly Learning)
- Hartz et al. 1996
- Hartz, Walker, and Mahar, Introduction to Software Reliability: A State of the Art Review, Reliability Analysis Center, 1996
- Jackson 1975
- Jackson, Principles of Program Design, Academic Press, 1975
- Kernighan and Plauger 1978
- Kernighan and Plauger, The Elements of Programming Style, McGraw-Hill, 1978
- Kossiakoff and Sweet 2011
- Kossiakoff and Sweet, Systems Engineering: Principles and Practice, 2nd edition, John Wiley & Sons, Inc., 2011
- Leveson 1995
- Leveson, Safeware: System Safety and Computers, Addison-Wesley Professional, 1995
- Pfleeger and Atlee 2006
- Pfleeger and Atlee, Software Engineering: Theory and Practice, 3rd edition, Pearson Prentice Hall, 2006
- Rogers et al. 2011
- Rogers, Preece, and Sharp, Interaction Design: Beyond Human-Computer Interaction, 3rd edition, John Wiley & Sons, Ltd., 2011 (O’Reilly Learning)
- Sommerville 2016
- Sommerville, Software Engineering, 10th edition, Pearson, 2016
- Spolsky 2001
- Spolsky, User Interface Design For Programmers, 2001
- Whittaker 2009
- Whittaker, Exploratory Software Testing, Addison-Wesley, 2009
Standards
- IEEE 1044-2009
- IEEE, “IEEE Standard Classification for Software Anomalies,” IEEE Std 1044-2009, pp. 1–23, January 2010