Dit zijn voorbeelden van onderwerpen die leuk en geschikt zijn voor het Grote Project. Onderwerpen waar een * achter het kopje staan zijn wat pittiger dan de andere.
Game development:
Unity
Unity is op dit moment één van de meestgebruikte game-programmeerplatforms. Wordt ook wel Unity3D genoemd, maar je kunt ook prima 2D games bouwen.
Je kunt zowel (een variant op) Javascript als C# programmeren. Unity draait op alle platforms, ook op mobiel en VR.
Hololens**
Niet Corona-proof
De Augmented Reality-bril van Microsoft. Sinds kort heeft ICA een exemplaar die je als student kunt lenen. Voor het programmeren van Hololens-software is het hierbovengenoemde Unity het meest geschikt. Voor de hololens heb je windows 10 professional edition nodig. Het maken van een applicatie voor de hololens is een hele grote uitdaging die beslist niet makkelijk is. Het is fijn als er in de groep al wat Unity ervaring aanwezig is. Hadden we al gezegd dat het heel erg moeilijk is?
Löve:
2D games in Lua met support voor iOS en Android. Zie love2d.org. Lua is een soort Javascript, maar dan eleganter, en heel populair in de Game-industrie.
Corona
Corona is een Game-engine, specifiek voor mobiele apparaten. Ondersteunt naast iOS en Android ook veel andere mobiele platformen. Met succes gebruikt door S4D teams. Ook Lua.
HTML5 game-engine
Er zijn flink wat game-engines voor HTML5 in moderne browsers. Je zou het beter of over Javascript game-eingines kunnen hebben. Het gebied ontwikkelt zich snel. Dit soort game-engines zijn eenvoudiger dan Unity/Corona/Unreal, en je kunt Javascript programmeren. Je zult zelf wat research moeten doen naar welke game-engine het beste voor je project kan zijn. Voorbeelden zijn: Phaser, PlayCanvas, Turbulenz, MelonJS en Cocos2d
Python Game engine
Er zijn ook een paar goede game-engines voor Python: PyGame is erg toegankelijk, Panda3D is geavanceerder. Kivy is ook gaaf, en ook geschikt voor heel andere type programma’s (en mobile!).
Design-pakketten:
3D pakketten
Zowel Maya als Blender geven je de gelegenheid om in Python intelligentie/interactie/animatie in je 3D creaties te maken. 3D Studio Max gebruikt een andere programmeertaal. Wij weten vrij weinig van deze mogelijkheden, maar 3D-enthousiasten kunnen dit gaan onderzoeken.
Adobe Animate
De applicatie waarmee je Web-sites met veel animatie kunt maken. Lijkt op Flash, maar je kunt er ook “gewone” web-applicaties mee maken. Programmeren gaat in Javascript, of in het wat uitgebreidere ActionScript, dat erg lijkt op Javascript.
Adobe AfterEffects
In AfterEffects kun je ook programmeren. De taal lijkt heel erg op Javascript. Je moet wel al redelijk goed zijn in aftereffects om hier aan te beginnen.
Blokjes-met-touwtjes talen:
De onderstaande programmeertalen zijn visuele programmeertalen. De eerste drie richten zich alle drie sterk op het live bewerken van audio/video, en worden vaak gebruikt in interactieve kunst-installaties, waarbij sensoren gebruikt worden om trippy audio/video voorstellingen interactief te maken.
Max/MSP
MaxMSP is de grote jongen onder de visuele multimedia-talen. Heel populair onder kunstenaars, heel goed in het manipuleren en visualiseren van audio/video/3d data. Duur, maar er zijn gratis trials.
VVVV
VVVV is een open source concurrent van Max/MSP. Best volwassen, maar we hebben het binnen S4D nog niet gebruikt. Draait onder Windows (niet Mac).
Touch Designer
Touch Designer is een heel uitgebreid zusje van Max/MSP en VVVV. Heeft als voordeel dat het zowel op Mac als op Windows draait. Er is een gratis versie
Facebook Origami
Origami is ook een blokjes-touwtjes-taal, maar dan meer gericht op het prototypen van (geanimeerde) user-interfaces.
Programmeren in de browser:
React.JS *
React is de nieuwe manier om vanuit Javascript je webpagina te manipuleren. Is heel snel heel populair geworden. Ontwikkeld door Facebook.
Jquery UI
Voor hen die zich al in JQuery hebben ingewerkt: De bibliotheek die, gebruik makend van “gewone” JQuery allerlei extra UI-componenten (drap-drop, date-pickers, dieloogvenstertjes etc) aanbiedt.
JQuery Mobile
Een framework om de UI voor mobiele websites te maken. Hiervoor moet je JQuery al kennen. Goed te combineren met b.v. PhoneGap.
JQuery
Voor hen die zich in het afgelopen project niet op JQuery hebben toegelegd: die optie is opnieuw open.
Three.JS
Een Javascript bibliotheek om 3D applicaties mee te maken.
d3.js
Veel gebruikte Javascript library voor het visualiseren van informatie. Kijk even op hun site voor gave demo’s. Leuk om bijvoorbeeld te combineren met php, python of een andere backend taal. Ook leuk om te combineren met HTML5 API’s.
Programmeren op de server:
PHP
Voor hen die in het afgelopen project geen PHP hebben gedaan: dat kan nu alsnog.
PHP frameworks *
Voor hen die al wel PHP hebben gedaan: de volgende stap is het gebruik van een framework dat je helpt om veel voorkomende webserver taken makkelijker te programmeren, en structuur te geven aan een complexe webapplicatie. Doe zelf wat onderzoek naar een interessant framework. Een paar goeie zijn: Laravel, Symphony, CakePHP, CodeIgniter, Yii, Zend en meer. Er is heel veel vraag naar programmeurs die dit soort frameworks beheersen. Tel maar eens op monsterboard of andere vacaturebanken hoeveel banen er aangeboden worden.
Python met Django of Flask
Python is een betere (en leerzamere) programmeertaal dan PHP, en ook veelgebruikt voor webapps. Vrijwel iedereen die een web-app maakt met Python, gebruikt Flask of Django als web-framework, dus die zijn de moeite waard om te onderzoeken.
Node.JS*
Node is een heel populaire technologie waarmee je je server-code in Javascript programmeert. Zit wat merkwaardig in elkaar, en heeft een flinke leercurve. Veel sneller en flexibeler dan PHP of Python.
CMS-plugins (*?)
Bijna alle serieuze CMS-en (Drupal, Joombla, WordPress etc) hebben uitgebreide mogelijkheden om met eigen (meestal PHP-) code extra functionaliteit toe te voegen. Let op, dit is veel moeilijker dan alleen PHP leren. Je hebt nu PHP te leren, EN het wordpress framework.
MongoDB
Als je gefascineerd bent door databases, dan is MongoDB een veelgebruikte DB die zijn populariteit o.a. dankt aan het feit dat-ie heel toegankelijk is voor Javascript programmeurs.
MySQL / MariaDB
Als je je tijd liever gebruikt om een traditionele relationele database te leren (met SQL en joins enzo), dan is MySQL de populairste kandidaat, waarin minder complexiteit en gedoe verwerkt zit dan in de meeste andere relationele databases (PostgreSQL, SQL Server, Oracle etc). MariaDB is de naam waaronder het originele MySQL team verder werkt, nadat ze MySQL zelf verkocht hadden.
Real-time webapplicaties:
Websockets*
Een technologie waarmee webservers heel snel data naar een browser kunnen sturen zonder te hoeven wachten op en verzoek van de browser. Als de server een verandering ziet (Jantje is ingelogd, dat product is verkocht, dat game-karaktertje heeft zich verplaatst etc.) dan is die informatie zo snel (b.v. 0.1 seconde) bij andere gebruikers die actief zijn op de site, dan het voor de gebruikers lijkt alsof updates onmiddellijk zijn.
Firebase
Firebase is niet alleen een fascinerend nieuw soort database, maar ook een technologie die er, net als Meteor, voor zorgt dat de programmeur bijna niks hoeft te doen om data van de server naar de browser in real-time te krijgen. Is flexibeler en simpeler dan Meteor, maar doet ook minder voor je. Je moet het zelf combineren met een browsertechnologie als Backbone, ReactJS of JQuery.
Programmeren voor mobiele telefoons (en tablets):
PhoneGap
Phonegap gebruik je als je een mobiele app wil bouwen, mat HTML, CSS en Javascript. Phongap verpakt de files van je app tot een enkel bestand dat geïnstalleerd kan worden op een iOS of Android apparaat (Phonegap ondersteunt nog meer platforms). Daarnaast biedt Phonegap mogelijkheden om vanuit je Javascript code toegang te krijgen tot features die wel in mobiele telefoons zitten, maar niet in browsers (zoals sensoren, de telefoon, het adresboek, gps etc).
iOS met Swift*
De programmeertaal die Apple aanbiedt om iOS (of OS X) applicaties te ontwikkelen (Objective-C) is vreselijk ingewikkeld, dus we zijn blij dat Apple nu een tweede taal uitgebracht heeft om iOS apps mee te bouwen: Swift. Deze taal is veel toegankelijker, en daarmee geschikt voor S4D. De taal is nieuw, maar er zijn al wel boeken. Je hebt wel een Mac nodig om Swift te kunnen programmeren. Deze kun je bij het medialab lenen.
Android in Java*
Normale applicaties voor Android worden geschreven in de programmeertaal Java. Java is niet simpel, en Android ook niet. Toch hebben we een S4D groep gehad die een hele gave Android applicatie op deze manier hebben gemaakt. Android apps kunnen tegenwoordig ook in Kotlin geschreven worden. Dat is een hele nieuwe taal die een beetje lijkt op swift.
Android in Kotlin*
Android apps kunnen tegenwoordig ook in Kotlin geschreven worden. Dat is een hele nieuwe, moderne taal die een beetje lijkt op swift.
App-Inventor
App-Inventor is ook een manier om Android apps te ontwikkelen, maar dan min-of-meer visueel. Minder krachtig dan Java, maar ke kunt wel met minder moeite meer gedaan krijgen. Als je geen Android toestel hebt, dan kan je je programma’s in een Android-emulator op je Mac of PC draaien.
Progressive Web Apps
Een nieuwe manier om apps te maken van websites. Als je van een bestaande website een PWA maakt, komt hij ook nog eens hoger in de google ranking!
Progammeren voor je computer:
Java* of C#*
Java is een populaire programmeertaal waar veel applicaties in gebouwd zijn. C# is de microsoft tegenhanger er van. Veel enterprise software (salesforce, microsoft dynamics of SAP) gebruiken java of c#. Maar je kunt ze ook voor andere doeleinden gebruiken. Unity werkt bijvoorbeeld met C#, terwijl android weer java gebruikt. Kies een van de twee. Er is veel werk voor programmeurs die deze talen kunnen.
Go *
Go is een hele moderne taal die door google is ontwikkeld. Veel mensen vinden het fantastisch werken. Je kunt er ook een app voor android in maken.
C++*
C++ is een (echt) moeilijke taal die dicht bij de hardware van je computer zit. Je kunt er allerlei hardware mee programmeren, maar ook je eigen computer dingen laten doen.
Progammeren voor spraakbestuurders:
Amazon Alexa
Niet Corona-proof
Maak een alexa skill, waarbij je dingen in je omgeving kunt aansturen met spraak. Werkt in verschillende talen. Je hebt een beetje php of python nodig, maar ook java, c# of een andere taal kan.
Google Home
Niet Corona-proof
Maak een app voor de Google Home. Lijkt op alexa, maar dan van google.
Apple Homepod
Niet Corona-proof
Maak een iPhone app die samenwerkt met de Apple homepod. Je hebt een mac nodig, die kun je bij met medialab lenen.
Progammeren voor smartwatches:
Apple Watch
Bij het medialab hebben we tegenwoordig een apple watch. Hier kun je een app voor ontwikkelen!
En verder:
Assembly***
Als je echt wilt weten hoe computers werken, leer jezelf dan de programmeertaal van je Intel of ARM processor: Assembly. Alle andere programmeertalen worden vertaald naar assembly. Niet makkelijk, wel super leerzaam! Oja, en aan het einde van het project heb je hopelijk een programma werkend dat twee getallen bij elkaar kan optellen!
Raspberry-Pi projecten
niet coronaproof
Raspberry Pi is het grotere broertje van Arduino: een klein mini-computertje dat aangesloten kan worden op allerlei electronica. Maar de Raspberry Pi is veel sneller, en heeft veel meer geheugen, en kan Linux en Windows draaien en je kunt er een monitor, toetsenbord en muis op aansluiten, en de laatste versie heeft bluetooth en wifi! Programmeren gaat vaak in Python, maar Javascript, en eigenlijk de meeste andere programmeertalen werken ook prima. Op internet kun je duizenden originele en verrassende Raspberry Pi projecten vinden die je kunnen inspireren. Bijvoorbeeld hier en hier.
Office VB e.d.
Voor MS Word en MS Excel zijn enorm veel programma’s geschreven. Wellicht niet erg artistiek, maar vreselijk handig! Je kunt de eigen programmeertaal gebruiken (Visual Basic for Applications), maar tegenwoordig ook gewoon Javascript.
Data journalism
Dit is niet echt een specifiek programmeer-platform, maar een manier om met programmeren om te gaan die wellicht interessant voor je is. Het gaat deels over databases, deels over statistiek, deels over datavisualisatie.
Live Music
Er zijn een aantal programmeertalen bedacht die muzikanten kunnen gebruiken voor live voorstellingen. De muzikant staat dan op een podium live te programmeren om steeds interessantere muziek te laten horen. Op Youtube kun je video’s van optredens vinden als je zoekt op “Live Coding Music”.
Talen die voor Live Coding gemaakt zijn zijn: Sonic Pi, Tidal, Chuck, en zelfs Python