Ask HN: What to cover in a one week coding course in Athens?

7 points by mrborgen ↗ HN
Together with Founders&Coders (non-profit coding cooperative) and The Cube (co-working space in Athens), I'm setting up a free one week coding course in Athens in late August.

It's directed towards beginners who are interested in getting into web development.

The goal of the course is to get the students to a level where they are able to continue learning on their own, so that they eventually can become good enough to take on professional work or build their own products.

Given the short time frame (Monday-Friday, 10.00-17.00), it's extremely important to choose the right curriculum. We've already decided to focus on Front-end, so the language will be Javascript, but there are still a lot of choices to be made.

- What should be included in the curriculum?

- What should NOT be included in the curriculum? (equally as important, if not more important)

Git? HTTP? Web API's? jQuery? Ajax? Algorithms? DOM-manipulation? Data types? CSS? HTML?

All advice is appreciated!

PS: If you're in Greece and are interested in contributing, do drop me a mail at perhborgen@gmail.com

14 comments

[ 3.2 ms ] story [ 39.8 ms ] thread
I don't know the demographics of your students but I'm always intrigued when I'm able to quickly get productive with what I'm currently learning.

How about first collecting ideas on things which would actually help people (in addition to teaching)? I think Greece is a pretty high-tech society but maybe there is substantial "brain-drain" - still, I'd wager that it's mostly the economy which is broken.

I don't know if it's viable but something like a node based twitter bot that picks up on calls for help on greek facebook pages (e.g. "doctor needed!") and other twitter accounts which then gets aggregated on a website? It might be a very naive idea but I've got the feeling that setups like hackathons (where all kinds of interested people can participate, people people, idea people, technically inclined people, etc) can be more beneficial to learning than a traditional "school" like environment but maybe that's just me (and my inherent learning style).

I know of some fellow Austrians who might be interested in helping out as well, please reach out if you could need further help.

I salute you for your actions - I feel like it's all about love and solidarity in order to overcome our global problems <3

Thanks a lot for the input! Project based learning has always worked best for me too, so I'm considering to run it as a "make x in 5 days" course. Using the Twitter API might be a good idea. Then they'll understand how to communicate with other services, which is critical. But it might be a bit too difficult for a complete beginner?

Perhaps the final 3 days can be project based, and then use the first two to cover some basics.

Sounds like a plan :) What would be the best way to qualitatively enhance learning during those first couple of days? One on one tutorship? The only reason why that isn't the default way of teaching is probably because it is too expensive, right?
One to one tutorship would be great, but we wont have enough teachers for that. Too expensive yes. I'm thinking lectures and tasks, and preferably more of the latter and less of the former :)
Are you interested in other js/node devs to help out with this? If so I might consider coming late August, certainly would ask around here as well.
Sure, drop me a mail at perhborgen@gmail.com!
Self taught Greek software engineer here, professionally working on software. I know you want to focus on the front-end but I disagree. A student needs to see how and why things are connected. This is what I suggest:

### Section 1

#Theory

How do the computers communicate (aka how does the internet works). Explain how your ethernet port connects to a server's ethernet port.

- Basic TCP/IP (OSI Model, Internet Routing, IP)

- Internet Infrastructure (routers, server component, virtual machines, cloud)

- Basic HTTP ( request-response, GET, POST, headers, cookies etc)

#Workshop

-Based on Wireshark sniffing. Also tools like traceroute.

### Section 2

#Theory

Programming Languages and Infrastructure.

- Based on the request-response cycle explain the basic components of a server (HTTP, programming language, database)

- why we need a programming language.

- Differentiate back-end from front-end and explain its usage (Server, DOM)

#Workshop

- Setup a development stack using Ansible or Puppet (to save time or do a LAMP stack installation)

- Use requests.py or guzzle to send and receive some http (check it with wireshark)

### Section 3

Back-end and frameworks

# Theory

- Why we need back-end frameworks

- What are the most important components of a back-end framework

- Pick a simple framework and explain its architecture

- Show some examples

- Briefly talk about security

# Workshop

- Flask-SQL Alchemy or Silex-Doctrine based project. No js used, no Node.JS imho.

### Section 4

Basic front-end and frameworks (no asynchronous staff, no SPA frameworks)

# Theory

- Why javascript

- Explain what the DOM is and why we care

- HTML VS DOM

- CSS

# Workshop

- Basic styling HTML+CSS

- Manipulate the DOM using developer tolls

- Jquery changing the DOM (based on the Flask project)

### Section 5

REST and Asynchonous and beyond

# Theory

- What is REST and why we need it

- Why frameworks like angular.js exist

Thanks for all the input, there is a lot of important concepts here, which I'll definitely look into implementing into the course! However, I'm very cautious of making it too theoretical. I want the students to experience the joy of building something, as I see that as critical for developing further motivation and curiosity.
Coming at this as a teacher (with a background in IT) I would suggest making it as student centered as you can. That would mean (unless you can meet with the students before hand) being extremely flexible with the syllabus. So you would ask the students something like:

* what problem they have in life they want to solve * what they think is missing from the current web

From this you can go into decomposing a problem into smaller parts and move into programming those small parts, using the tech that is best (here you teach them how to google for tech needed for certain domains)

Of course, you need to open with a few early wins- eg get them to make a quick static web page, then adapt that web page into a dynamic web page with a poll where they could probably have their fellow students vote on and give feedback to their ideas from the previous questions. But the main thing is for you to find out what they want to do, and show them how it is possible via web tech.

And also, remember this is the world wide web. Maybe figure out how to have people contribute even if they're not in Greece via irc, Skype, handouts etc. You may even get close to one on one tutoring if enough people like your idea.

Awesome idea, and great luck to you!

Yeah, that would most certainly keep them motivated, as it's a lot easier when you can relate to WHY your are learning how to code. The one-on-one mentoring through Skype is a great idea. I hadn't thought of that, thanks for the tip!
It doesn't even need to be 1 on 1. It could be 1 to 2, 3, 4 etc... Small, but relevant groups could work well too.