home profile publications research teaching service awards

Advanced Computer Science II (Software Engineering)

[ News | Course material | Tutorials | Links ]
"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:

Course material

The lecture is based on Software Engineering Vol. 7, available from Pearson

Course slides:

Exams

For Process Models, make sure you have read Kal Thot's article about choosing the right process model (local copy)!

Concerning ethics, the short story pragma SUPPRESS is required reading; make sure you have read it for your final exam preparation.

Sample exams: [ midterm | final ]

Tutorials

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.

List of tutorials:

Links

general
RFC 1925 containing some wisdoms applicable not only to networking. Check it out!

cyberethics
First and foremost, let me point you to the lecture Engineering Professionalism and Ethics (Course Number: 400252) taught every spring.
Richard Spinello: Readings in CyberEthics, 2nd Edition. Jones and Bartlett Publishers, 2004
Richard A. Spinello: Case Studies in Information Technology Ethics (2nd Edition). Prentice Hall, 2002
Sara Baase: A Gift of Fire: Social, Legal, and Ethical Issues for Computers and the Internet (2nd Edition). Prentice Hall, 2002

UML
For the Unified Modeling Language (UML) there is many good tutorials available on the Web, for example Borland's tutorial, Sparx Systems' tutorial with a particular part on Database Modeling in UML. There is a list of UML tutorials maintained by uml.org itself.
Meantime there is also a host of UML tools available - such as Rational Rose and Enterprise Architect (EA) by Sparx Systems, or Omondo's free UML extension to Eclipse - collected in lists like this one.

Programming
How to write unmaintainable code
Software Calculus - The Missing Abstraction.

Make and svn

Beautifiers

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.
  • links:
  • Unit Test Tools
      [ AdaTEST | AQtest | Aunit | C++Test | Cantata | Check | COMPUTE | CppUnit | csUnit | CTA++ | CTB | cUnit | CUT | dotunit | EasyMock | GrandTestAuto | HarnessIt | HtmlUnit | HttpUnit | JavaScript | JsUnit | JsUnit | JTestCase | JUnit | JUnitEE | JUnitX | LingoUnit | MinUnit | Mock Creator | Mock Objects | MockMaker | Mockry | NUnit | ObjcUnit | OCUnit | OTF - An | PalmUnit | PBUnit | PerlUnit | phpAsserUnit | PhpUnit | PyUnit | QtUnit | Ruby/Mock | SUnit | TagUnit | TBGEN | TBrun | Test Mentor - Java Edition | unit++ | vbUnit3 Basic | vbUnit3 Basic | VectorCAST | XMLUnit | XSLTunit ]
  • Coverage Analysis Tools
      [ gcov | Bullseye Coverage | Cantata++ | CodeTEST | LOGISCOPE | Panorama C/C++ | Rational PureCoverage | TCAT C/C++ | GCT ]
  • Memory Leaks Detection
      [ Valgrind | Purify ]

Project Management
  • An XP team room
  • 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.
Copyright © 2004-2009 Peter Baumann -- -- tel. +49-173-583 7882 -- Disclaimer