Patterns and anti patterns 2015-2

From Rost Lab Open

Write better code


Participating students will research and prepare presentation about ways to structure computer code in an efficient way that can be shared, re-used and maintained by others. Students will research the literature on some of the most (and less so) known coding patterns and anti-patterns and will present their finding to the class using an existing code base found on github and demonstrate the potential for code optimization. They summarize their findings in a seminar thesis.

In this seminar you will be asked to look at existing javascript code, understand its functionality, identify its weaknesses and refactor the code using one of the design patterns we are covering. Please note that I expect you to search for existing javascript code on GitHub[1] (trying to refactor your own code is not acceptable).

Tips for presentation

Note that each session will include one 30 minutes presentation by each student.

  1. give an overview of the topic you chose to present
  2. give an introduction describing the project you are re-factoring/optimizing
  3. a through code critique should identify the strength and weaknesses of the code.
  4. suggest an improvment using a JS pattern you think is suitable.
  5. be ready to defend your choice, while a JS pattern may seem a good fit there are always some tradeoffs.

NOTE you should only use the patterns that are available to you from the topic you chose. If you chose Functional patterns then Object creation patterns are not relevant to your project. Keep this in mind when searching for a project to refactor on GitHub.


Learning outcome

In the end students know about common patterns and anti-patterns, they can communicate sophisticated technological matters to their peers and they can summarize this in a written report.


READ THIS PAGE: Hints and Rules for the seminar

Important Dates

July 1st: Seminar pre-meeting.

Seminar Dates: September 28 - October 2

Room: Rostlab seminar room I12

ROOM CHANGE: on Wednesday September 30th we will meet in room 01.11.018 instead of the Rostlab seminar room.

Presentation Schedule

Date Time Topic Assigned to Slides Source
Sep 28 12:00 Design patterns and antipattterns and their importance in software maintainability and sustainability Qi Lifan

Yushen Zhang

Sep 28 13:00 General patterns Andreas Tielitz

Valentin Hauner

Sep 29 12:00 Literals and Constructors Patterns Julius Polar

Nhat Nam Bui

Sep 29 13:00 Structural Patterns Chrysa Papadaki

Nishant Gupta

Sep 30 12:00 Functional patterns and Reactive Functional Programming Arya Kirathamoorthy

David Dao

Oct 1 12:00 Code Reuse Patterns Gaurav Joshi

Andreas Greimel

Oct 1 13:00 Behavioral patterns Jun Heui Cho

Malte Brockmann

Oct 2 12:00 Object Creation Patterns Beckmann Timm

Sebastian Reinmann

Oct 2 13:00 jQeury specific patterns Sebastian Dirrigl

Alexander Castendyck


  1. (Highly recommended:) JavaScript: The Good Parts
  3. The Essentials of Writing High Quality JavaScript
  4. JSPatterns
  5. jQuery Anti-Patterns for Performance & Compression
  6. How DRY Affects JavaScript Performance
  7. Object Oriented JavaScript
  8. JavaScript Patterns
  9. Pro JavaScript Design Patterns
  10. Essential JavaScript Design Patterns For Beginners, Volume 1.
  11. Eloquent JavaScript
  14. JavaScript Garden - the most quirky parts of the JavaScript programming language