Giter Site home page Giter Site logo

ohm-softa.github.io's Introduction

Software Architecture

Required class for CS majors at the Technische Hochschule Nürnberg. --- Pflichtmodul im Bachelorstudiengang Informatik an der Technischen Hochschule Nürnberg.

Class Schedule

Lecture: Thursdays at 11.30a

Tutorials: Tuesdays at 8a, Thursdays at 8a and 9.45a.

Announcements and Discussions: Moodle course 5335

Note: Materials will be in English, the lectures/tutorials will be taught in German; the written exam will be German (you may answer in English).

Class and Credits (Leistungsnachweis)

Lectures: Not your classic lecture--- we'll work together on concrete problems and their solution. The class will be taught in German, the materials are mostly in English.

Tutorials and assignments: Pairprogramming preferred, BYOD strongly recommended!

Credits: written exam (90') at the end of the semester.

Recommended Textbooks

Additional Materials

Syllabus

  • Introduction (March 21, slides, assignments)

    We'll talk about software architecture, abstraction, decomposition and good software design. We'll also review the tools and ressources that you'll need for this class.

  • Classes and Interfaces revisited (March 28, slides, lecture notes, assignments)

    We look at different types of classes (inner, anonymous, local, static), when to use them, and which visibility for which purpose. Also: @FunctionalInterface and lambda expressions.

  • Inheritance revisited (April 4, slides, lecture notes, assignments)

    We talk about abstract and final classes, (pure) virtual functions and defaults. Also, when (and how) to use abstract base classes, and how the Decorator pattern can be used to add functionality to existing classes.

  • Mixins, pt. 1; Generics, pt. 1 (April 11, slides, lecture notes, assignments)

    After a short digression to Mixins, we dig into the details of how generics work in Java, and how to apply them to data structures and algorithms.

No class and assignments on April 18 (Maundy Thursday/Gründonnerstag).

  • Mixin, pt. 2; Generics, pt. 2 (April 25, slides, lecture notes, assignments)

    We'll review Mixins and see how to use generics to make them stateful. Generics and inheritance need special attention, and will lead us to bounds and wildcards.

  • Reflection and Annotations (May 2, slides, lecture notes, assignments)

    Learn how reflection works in Java, and how they enable annotations by using examples of testing (JUnit5), serialization (gson) and networking (retrofit).

  • Design patterns, pt. 1 (May 9, slides, lecture notes, assignments: JavaFX (recommended) or Android (advanced))

    We begin with a few basic patterns: composite, iterator and observer, and use that to dive into Android and MVC/MVVC.

  • Design patterns, pt. 2 (May 16, slides, lecture notes, assignments: JavaFX or Android)

    We look at more every-day-patterns: singleton, factory, strategy and command.

  • Design patterns, pt. 3 (May 23, slides, lecture notes, assignments: JavaFX, Android)

    We round up a few more useful patterns: proxy and adapter to make other peoples' modules fit your needs, and flyweight to save on precious memory in (mostly) graphical apps.

No class and assignments on May 30 (Ascension Day/Christi Himmelfahrt)

  • Parallel processing revisited (June 6, materials tba)

    Because sometimes, you need to work on more than one thing at a time! Learn about a better Future for asynchronous/concurrent workloads, and what promise chaining can do for you.

  • Introduction to functional programming (June 13, slides, lecture notes, assignments)

    Leave your imperative and objected oriented programming comfort zone and follow me down the rabbit hole of functional programming. After some theory, we'll do some basic exercises, including filter, map and forEach.

No class and assignments on June 20 (Corpus Christi/Fronleichnam)

  • Functional programming in Java (June 27, slides, lecture notes, assignments)

    We'll talk about the specifics (and limits) of functional programming in Java. Learn about the classes and interfaces used for Java's functional parts, and the more sophisticated stream reduction using reduce and collect.

  • Dependency Injection (July 4, materials tba)

    Singletons are actually a bad idea, most of the time. Dependency injection (DI) uses dependency inversion together with a mechanism to organize instances.

Subscribe to https://github.com/ohm-softa/ohm-softa.github.io repository to follow updates.

ohm-softa.github.io's People

Contributors

sikoried avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.