" .... the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software." - from Software Engineering - Wikipedia.
- A very recent short course from MIT OpenCourseWare (US) by Evan Jones, Olivier Koch and Philippe Cudre-Mauroux. It covers concepts useful to a later MIT course: Elements of Software Construction. (Unfortunately, some parts of this latter course are not open but there are lecture PDFs and quizzes.) There are PDF lecture notes, assignments and related resources. A Thai version of this course is available.
"The focus is on developing high quality, working software that solves real problems."
- 22 lectures with PDF notes from MIT OpenCourseWare (US) by Srinivas Devadas and Daniel Jackson introducing concepts and techniques relevant to production of large software systems. There are also assignments and projects. Chinese, Spanish and Portuguese versions of this course are available.
Topics are: Introduction; Object Semantics; Subclassing; Specifications; Testing; Object Model Notations; Code Summary; Introduction to ADTs; Representation Invariants; Abstraction Functions; Dependencies and Decoupling; Exceptions; Equality; Polymorphism; Subtypes and Subclasses; Classes and Interfaces; Usability 1 & 2; Design Patterns; Design Project Experiences 1 & 2; Lecture on Final Project; Guest Lecture.
Topics include: Introduction to Software Engineering; Problem Definition; Solution Design; Object-Oriented Design; Solution Implementation; Software Configuration Management and Build Automation; Solution Validation; Solution Deployment and Software Evolution; Software Development Process Paradigns and Continuous Process Improvement; CASE Tools.
- An open textbook of 17 Chapters by Eve Andersson, Philip Greenspun, and Andrew Grumet intended for juniors and seniors in computer science and others such as software developers building online communities or other multi-user Internet applications.
"We assume that they know how to write a computer program and debug it. We do not assume knowledge of any particular programming languages, standards, or protocols. The most concise statement of the course goal is that 'The student finishes knowing how to build amazon.com by him or herself.'"
- A foundation course by Kevin Amaratunga at graduate level from MIT OpenCourseWare (US) on modern software development techniques for engineering and IT. There are lecture notes, recitations, assignments, projects and exams with solutions.
"The design and development of component-based software (using C# and .NET) is covered; data structures and algorithms for modeling, analysis, and visualization; basic problem-solving techniques; web services; and the management and maintenance of software. Includes a treatment of topics such as sorting and searching algorithms; and numerical simulation techniques."
".... a reading and discussion subject on issues in the engineering of software systems and software development project design. It includes the present state of software engineering, what has been tried in the past, what worked, what did not, and why."
PDFs cover the following topics: Introducing The Problem; Process and Life Cycle Models; Requirements and Specification; Design; COTS and Reuse; Metrics and Reliability Assessment; Building Confidence (Testing, Analysis, QA, Reviews); Selecting a Programming Language; Team Organization and People Management; Software and System Safety; Putting It All Together.