Skip to main content
Department of Information Technology

Readings / Literature

This course does not follow any book in particular. The are several reasons for this: there is no book that covers the material we are interested in in a way that's feasible to use for such short a course, and I don't believe in forcing you to buy a book that you will only read bits and pieces off. Also, most books give a bad reading experience when large chunks are skipped.

You should read the articles listed under Fundamentals below.

There is a good selection of partial books at Google Books. If you want to split a book in a single team, I recommend the following books available from a number of sources (e.g., Adlibris, Akademibokhandeln, Amazon, etc.):

Text books

  • Booch, Grady, Robert A Maksimchuk, Michael W Engel, Bobbi J Young, and Jim Conallen (2007) Object Oriented Analysis & Design with Applications 3rd Edition. Addison-Wesley. ISBN 978-0-20-189551-3.
    Very comprehensive. Covers a lot and goes through actual scenarios for about 300 pages. Way too much for detail for this course though.
  • Bruegge, Bernd, and Allen H. Dutoit (2010) Object-Oriented Software Engineering Using UML, Patterns, and Java. Pearson Education, Inc. ISBN 978-0-13-815221-5.
    Covers way too much for this course, but puts it all into perspective. Goes beyond the analysis and design perspective to cover the entire software engineering process, including managerial aspects.

UML reference

You do not need to buy a book to pass the course. Personally, I think that splitting an electronic copy of UML 2.0 Pocket Reference (USD 7.99) in every project team is a good idea, to collect all UML syntax information in a single place. Do note though that this book only teaches UML syntax, not analysis and design in itself.

Articles

Note that some of the links below only work from within an Uppsala University IP. If you need to access one from home, you can always use SSH or equivalent to access one of the department's machines and download the article. Or simply Google it to see if there is a public copy somewhere.

Fundamentals

These articles are all pretty short. You should read all of them.

Week 1

  • Guerraoui, Rachid (1996) "Strategic Directions in Object-Oriented Programming." ACM Computing Surveys 28(4):691-700.
    Useful descriptions of what object-orientation is about, a very brief historical perspective, and outlooks to the future, which are 14 years old and therefore interesting to think about what became off them. An easy and good read early in the course. Probably old hat to most students with a more extensive programming background. (10 pages with big typeface.)
  • Beck, Kent, and Ward Cunningham (1989) "A Laboratory For Teaching Object-Oriented Thinking." ACM SIGPLAN Notices - Special issue: Proceedings of the 1989 ACM OOPSLA conference on object-oriented programming 24(10).
    Introduces CRC cards for the first time. (Short)

Week 2

  • Wirfs-Brock, R., and B. Wilkerson (1989) "Object-oriented design: a responsibility-driven approach." ACM SIGPLAN Notices - Special issue: Proceedings of the 1989 ACM OOPSLA conference on object-oriented programming 24(10):71-75.
    A simple introduction to thinking about object-oriented design. A tad dated, but still worth a read. Simple and accessible. (5 pages)

Week 3

  • Wikipedia's entry on Design Patterns.
    Orient yourself in the categories of patterns. No need to memorise them - it is more useful to develop a feeling for what could be solved by a standard pattern and then looking it up when needed.

Week 4

  • Gorman, Jason (2005) UML for Java Developers--Model Constraints & The Object Constraint Language.
    These slides provide a good introduction to modelling with the Object Constratint Language (OCL). An alternative set of slides can be found here.
    This may be a bit heavy going if your programming and/or logic background is on the light side. Try to at least skim this one early on and let your TA know if we need to schedule a session to go through it.

Week 5

Supplementals

These are not obligatory, but more on the order of tips on further reading.

  • Ramsin, Raman, and Paige, Richard F. (2008) "Process-Centered Review of Object Oriented Software Development Methodologies." ACM Computing Surveys 40(1): Article 3.
    A quite dense review of different methodologies for developing software with object-oriented techniques. If you want to gain a deeper understanding of how different ways of developing software (e.g., Agile techniques like Scrum or more heavy-weight processes like RUP) supports OO differently, this article is an interesting and insightful read. (89 pages)
  • Formica, Anna, and Michele Missikoff (2004) "Inheritance Processing and Conflicts in Structural Hierarchies." ACM Computing Surveys (CSUR) Surveys 36(3): 263-290.
    An attempt at describing the concept of generalisation in both object-oriented programming (with inheritance, etc.), AI and databases. Students with some knowledge in the last two areas might gain additional insight by this comparison. Students that do not can focus simply on the programming language parts of the article. Some formal notation and use of predicate logic. (27 pages)

Other useful links

Updated  2012-08-23 13:19:22 by Kent Saxin Hammarström.