Welcome!

Info 3 is the final module of the Info 1-3 series. In Info1, you learned programming, and the basics of object-oriented design of software. Info2 introduced you to advanced programming with data structures and algorithms. Info3 rounds that out by giving you insights into how to actually design and develop software with an eye for the overall picture.

This term, Prof. Weber-Wulff and I will team-teach this class together for the first time. Mostly, DWW will be doing the Thursday lectures and I will be teaching on Fridays including the labs. The details can be found in the Schedule.

Contents

The Modulbeschreibung states the following goals for Info3:

* Die Studierenden haben gelernt, wie man ein komplexes Softwarebasiertes System analysiert, modelliert und eine Lösung entwirft. * Die Studierende können sicher mit Entwurfsmustern umgehen und sie in einer aktuellen Programmiersprachen praktisch umsetzen. * Die Studierenden haben Modellierungs-Notationen wie UML sicher anzuwenden gelernt. * Sie haben verstanden, wie sie die Methoden des Software- Engineerings auf der Entwicklung von Mediensysteme anwenden können. * Sie können Algorithmen der Lokalisierung und Internationalisierung von Software umsetzen.

Thus, Software Engineering, Software System Design, the UML and Software Design Patterns are set as topics. As one example of media system applications, we will look deeper into Web Application Development. Web Application Development has two main characteristics: it is a fast-changing environment, and agile development practices are pivotal. Furthermore, if web applications are successful, they become long-running software, thus the ability to maintain an old codebasis is also important. Therefore, we will also look into best practices to support agile software development (“Best Practices”) as well as designing for ease of change (“Clean Code” and “Advanced Object Oriented Design”).

Have a look at how this breaks down on this (tentative) Schedule.

Meetings and Due Dates

The class consists of 2x2h of lectures and 4h of lab every fortnight (alternating group 1 & group 2). Due dates:

  • Lecture Notes of last week: Wednesday 22:00
  • Lab Reports: Thursday 22:00 before your next lab.

Grades

Your grade in Info3 will be a weighted mixture of the evaluated graded elements of the course (Lecture summaries, optionally tests on lab subjects and exam). The partial grades will be assessed as follows and then graded according to the Grading Scale:

  • Lecture summaries: 10%
  • Exam: 65%
  • Lab Reports: 35% - all (n) have to be submitted to get these points!

Lecture summaries

In the Moodle collaboration room you can find a section called “Lecture summaries”. You are expected to write 5-10 complete sentences summarizing each lecture. If I find plagiarisms of lecture summaries (especially from the Wikipedia), you will not get any credit for any lecture summary at all. Of the 28-30 lectures altogether, I expect you to write summaries for 24 of them to get the entire 10% - they are either done or not done, and not graded on content. They can be in txt, pdf or markdown format.

Lab Reports

As in Info1 and Info2, you need to write Lab Reports which will be graded. More info about the Lab Reports can be found on the Labs page.

Exam

There will be a 2-hour online examination at the end of the semester. The exam will be an on-line exam with two parts, a multiple-choice part and an essay / programming part.

Course Literature

There is no textbook for this class. Here are the main books this class is based upon. You’ll don’t need to buy them for this class - there’s plenty of information online. Some of them can be found in the library. You might want to buy them, though, as these are books that will not be outdated next year. One of them is even the same age as some of you.

Reference Link
Ian Sommerville (2010). Software Engineering [9th edition]. Prentice Hall. Available o Amazon
Sandi Metz: Practical Object Oriented Design in Ruby: An Agile Primer. Addison Wesley, 2012. Book Website
Robert C. Martin: Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall, 2008. Homepage der Clean-Code Initiative (german)
Robert C. Martin and Micah Martin: Agile Principles, Patterns, and Practices in C#. Prentice Hall, 2006 SOLID Principles
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns. Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994. Wikipedia is pretty good for them.
Martin Fowler: Patterns of Enterprise Application Architecture. Addison-Wesley, 2002. EAA Website
Armando Fox, David Patterson: Engineering Software as a Service: An Agile Approach Using Cloud Computing. Available on Amazon