Induction week: basic skills

When starting students are introduced to computing and its history with an emphasis on the free software / open source movement. Various toolchains and libraries are demonstrated to them and the importance of collaboration is underlined. To that end they learn how to work with an IDE and then use git to share their work on GitHub.

During the first week they are also trained in aspects of agile programming, such as paired programming, which they'll adhere to throughout the course.

Month 1: Introduction to Programming with Java

Students use the Processing environment to take their first steps with code and design. They learn how to use graphics, code animations, write conditionals, loops, variables, functions, arrays and they finish off with object oriented design. Apart from their regular assignments, at the end of this month they code Space Invaders game from scratch using objects and classes.

Month 2 & 3: HTML & CSS

After Java, students move on to web development with HTML and CSS. They learn about the DOM and tags and how to create efficient web sites with the minimum amount of code. They enrich their sites with images, links, tables and other structures before experimenting with forms for data submission on a server. After having mastered CSS they are exposed to Jinja and templating in order to speed up web site creation. Finally, they are introduced to the merits of Bootstrap as a way of standardizing their web site design even further.

Month 4: Javascript & React.js

Being familiar with Java and Processing from the first month, students transition into Javascript which they combine with html to create truly dynamic web sites. They then try to address the challenges encountered in developing single-page applications by learning how to program interfaces with React.js.

Month 5 & 6: Python & Flask

During month 5 & 6 students become familiar with Python. They study the language's basic structures, they work with strings, files and finally regular expressions on fun engaging exercises such as simple encryption algorithms. Building on their agile programming techniques, students are required to practice Test Driven Development.

Having mastered the basics of Python they use the Flask microframework to write their own web services serving dynamic content.

Month 7: D3.js & Javascript II

D3.js is a very powerful visualization library written in Javascript which allows data to be brought to life using web standards. Students program in this and use it as the front-end of web services they write in order to create powerful, interactive visualizations using a plethora of technologies they mastered in previous months.

Month 8: MongoDB & Heroku

Approaching the end of the course, in anticipation of their group projects, students learn how to setup a web service on Heroku. They also program their first web apps with persistence by learning about databases using MongoDB.

Month 9: Group projects

During the last month students work on a group project, the completion of which, closely simulates projects they have at work. They are asked to come up with an idea, pitch it in a presentation in front of their peers, research requirements, identify possible challenges, select technologies to be used and divvy up tasks among group members. At the end all group projects go live and teams are rated by their peers on a list of criteria. Emphasis is placed on great design too.

Last year's selected projects:
  • Image manipulation using real-time weather feed
  • Web-based memory training application
  • Online application measuring political bias in media twitter feeds
  • online multiplayer word game