Werkmodul | Fachmodul
Instructor: Michael Markert
Credits: 6 ECTS, 2 SWS
Capacity: max. 20 students
Language: English
Date: Tuesdays, 13:30 to 15:00
Location: Marienstr. 7b, Room 105
First Meeting: Tue, April 14th, 13:30


Beschreibung

Dieser Kurs richtet sich an Studentinnen und Studenten mit bereits vorhandener Programmiererfahrung. Wir werden uns die neuesten Technologien und Strategien zur App-Entwicklung ansehen und einen Überblick über native und web-basierte Technologien geben. Inhalte und Schwerpunkte - siehe "Topics".

English Description

This course (esp for intermediate students with preliminary programming experiences) will deal with the latest mobile development technologies like Web Apps using HTML5 and Javascript as well as native development with the new Swift Programming Language. Android will also be mentioned, though it's not the focus (simply because Michael is an iOS developer). We'll briefly look at some foundations, but the course aims to give some good tools and strategies, e.g. using live coding editors, splitting up complex projects in small pieces of easier to handle code - and (most important!) how to use a debugger.

We'll also look at available hardware options and how to use and interact them. You'll learn when and where you'll need the native SDKSoftware Development Kit and that hybrid or web apps have become very powerful.

Expected outcome

  • a good overview of what's possible and what not
  • improved general programming skills
    • how to use live editors to improve code quality
    • how to debug
  • advanced programming knowledge of JavaScript
  • introduction to Swift

Final Assignment

The final assignment is pretty open, it could be (either, not all!):

  • a prototype of an app (or an app of course!)
  • a (wearable) accessory (prototype or working proof-of-concept)
  • an app-dummy (video-concept),
  • a detailed app concept
  • or a scientific paper, researching a specific location based / mobile topic

It is recommended to also visit my other course: Outside Mobile will look at mobile applications stressing the word mobile - We're going out and test stuff! Awesome!

Topics

Focused topics appear in bold.

  • Overview
    • Native Apps: iOS, Android
    • Web Apps: HTML5, JavaScript
    • Hybrid Apps
    • Web App or Native?
    • The App Store
    • Fake it 'til you make it (Prototyping Apps)
  • Technologies
    • Location
    • Sensors (Magnetometer, Accelerometer, Device Motion/Orientation)
    • Communication (WebSockets, Bluetooth ...)
  • Programming
    • Revisiting the basics (Variables, Functions, Objects)
    • Communicating with JSON[[JSON|JavaScript Object Notation]] Format
    • The new Swift Programming Language
    • (upon general interest:) How was it with Objective-C?
    • Unleashing the power of JavaScript
    • JavaScript Design Patterns
    • JavaScript Toolkits/Frameworks
    • Server-side technologies (PHP[[PHP|PHP Hypertext Processor]], node.js, ...)
    • JavaME
    • Xcode and Eclipse
  • Coding
    • Why use live editors?
    • How to debug

Prerequisite

  • Active and regular participation, Freude am Programmieren
  • Some intermediate programming knowledge in at least one programming language (HTML[[HTML|Hypertext Markup Language]] is not a programming language!). You should know what variables and functions are (see registration procedure)

Registration Procedure

THIS COURSE IS FULL. PLEASE DO NOT WRITE, AND DON'T COME WITHOUT ACCEPTANCE NOTIFICATION. NO EXCEPTIONS. I KNOW, THAT'S UNFAIR, SORRY.

To register for the course, please send an eMail due to April 8th with the Topic "Registration for InsideMobile" to Michael dot Markert (at) uni-weimar.de, incuding the following informations:

  • First name, last name
  • program and semester (Studienprogramm und Fachsemester)
  • matriculation number (Matrikelnummer)
  • Valid email address @uni-weimar.de (no other mailing addresses will be accepted)
  • Let me know about your preliminary programming knowledge (be brief, don't google it, there's no right and wrong, I just want to see where you stand):
    • A local variable is:
    • A function is:
    • Swift is:
    • I love JavaScript because:
    • I hate JavaScript because:
    • I like programming because:
  • One short sentence why you want to (have to) be in this course (german or english)

If there are more than 15 registrations, students will be accepted depending on:

  • Order (first come, first serve)
  • If you are in a Project of Interface-Design (see Prof. Jens Geelhaar's semester projects this semester)
  • What you've written in "why I want to be in this course" and how serious you are about this course

If there are more than 25 registrations, there might be a kick-off event with an evaluation competition.

Leistungsnachweis

  • Active and regular participation
  • Progress on the individual project you are working on
  • Creating a piece of work / concept / app / scientific paper:
    • The expected minimum should be a concept of a location based mobile app with a description, storyboards and (if possible) a functional dummy
    • As an alternative to a concept, scientific papers that evaluate existing or new location based mobile apps are also welcome
  • It would be desirable if we get enough material by beginning of July to set up a small exhibition for the Summary
  • 2 minute presentation at the IFD:Showreel

Projects and Documentations

Please copy this entry (NameOrPseudonym) and create your own subpage:

  • Explanation of the Media-WikiHaiwaiian for ''fast'' (not an acronym). It is the name for a hypertext system for websites where the user may not only read the content but is also able to change it instantaneously through the browser. code for a link:
    • The square brackets create an internal link here in this wiki (linking to a new or existing page).
    • The slash "/" at the beginning is creating a subpage of this page
  • /NameOrPseudonym <-- please copy this link and add your own name (this wiki is public, btw!).

Help:
Here's an overview: Wiki Editing Help. There's also a help page on how to add images. The easiest way is to push the image button in the editor toolbar above this textfield, give it a nice name and save. Then follow the newly created link and you'll get prompted to upload a file. Please respect copyrights and only upload material you own!

Target Group

  • In general open to all students, but esp. suited for
  • Bachelor- and Master students of Media-Arts & Design
  • Master students Media-Architecture

Syllabus

This is a *preliminary* syllabus. Please check back regularly for latest updates.

  1. Tue, 14.04. Intro, Overview, HTML[[HTML|Hypertext Markup Language]] and CSS[[CSS|Cascading Style Sheets]] refresher
  2. Tue, 21.04. File Management: editors, git, naming conventions, project management,
    Prototyping: designing, dummies, demos, wireframes, problems (what's to be done?) and breaking into units/tasks
  3. Tue, 28.04. Technology: platforms, native/web, input, data persistence, features, languages, toolkits,
    Software: models, classes, objects
  4. Tue, 05.05. No course, because Michael is presenting on a conference in UK1. Universitätskommunikation – a service of the university taking care of public relations 2. United Kingdom
  5. Tue, 12.05. Software: objects, programming languages, functions, datatypes
  6. Tue, 19.05. Software: events, synchronous and asynchronous code, networking (xhr), CORS, web APIs
  7. Tue, 26.05. Visuals: WebGL, Canvas, SVG[[HTML#SVG|Scaleable Vector Graphics]], HTML[[HTML|Hypertext Markup Language]] Elements, Maps, CSS3, WebView, MapView, ViewControllers
  8. Tue, 02.06. Animation: CSS[[CSS|Cascading Style Sheets]] transition property, animation, raf, Unity,
    HTML[[HTML|Hypertext Markup Language]]-Elements: forms, inputs..., Mobile UIUser Interface Frontend Frameworks
  9. Tue, 09.06. Input, Sensors, Accessories: location, heading, orientation, touch, gestures, BT, camera, microphone, LEDLight-emitting diode
  10. Tue, 16.06. Audio: HTMLaudio, webAudio, AVAudio, openAL, CoreAudio
    JS Libraries: Overview & D3.js, Three.js, Snap.js, Paper.js, Processing.js, P5.js, node.js
  11. Tue, 23.06. Native App Development: Xcode, Obj-C, Swift, Eclipse, Java
  12. Tue, 30.06. Marketing: price tier, taxes, audience, review process, support, bugreports, updates, texting, internationalization, screenshots, videos, promos, ratings
  13. Tue, 07.07. to be announced