"Complexity is easy; simplicity is hard." -- Edmund Kean
This course is an introduction to software engineering and object-oriented software design. At the core of the lecture is the notion of software quality and the methods to achieve and maintain it in environments of "multi-person construction of multi-version software" [Parnas 1987].
Based on their pre-existing knowledge of an object-oriented programming language, students are familiarized with software architectures, design patterns and frameworks, software components and middleware, UML-based modelling, and validation by testing. Further, the course addresses the more organisational topics of project management and version control. Practical work underpins this by looking at suitable tools.
The course is recommended to all students on whose software skills people will depend one day.
Notes:
It is strongly recommended to take this course in parallel with the Adv CS II lab; both are constructed complementary to each other. Should you still want to choose either the course or the lab, then the lab is recommended - it will train vital cornerstones for your future life as an IT professional.
An aspect touched only cursorily in this course is professional ethics; my recommendation for completing your professional education is the Engineering Professionalism and Ethics spring course.
News
In 201, this course is being taught by Dr Xia Wang.
don't forget to subscribe to the course mailing list:
In place of homeworks, we will do tutorials where the TA will introduce you to selected CASE tools. Be aware that this knowledge too may be subject of exams!
You may want to prepare yourself for the sessions: make sure you are familiar with the Linux hints.
VanCBJ (C++, C, Java and Oracle Pro-C; Borland, but not MS VC)
Testing and Debugging
The following list of tools is intended to give a first overview; no tool is particularly endorsed, and missing one doesn't mean any discouragement either.
There is a host of tools; The V-Modell site offers the open-source tool V-Modell-XT-Projektassistent assisting from initial project proposal to final report.