

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

Together with Founders&amp;Coders (non-profit coding cooperative) and The Cube (co-working space in Athens), I&#x27;m setting up a free one week coding course in Athens in late August.<p>It&#x27;s directed towards beginners who are interested in getting into web development.<p>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.<p>Given the short time frame (Monday-Friday, 10.00-17.00), it&#x27;s extremely important to choose the right curriculum. We&#x27;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.<p>- What should be included in the curriculum?<p>- What should NOT be included in the curriculum? (equally as important, if not more important)<p>Git? HTTP? Web API&#x27;s? jQuery? Ajax? Algorithms? DOM-manipulation? Data types? CSS? HTML?<p>All advice is appreciated!<p>PS: If you&#x27;re in Greece and are interested in contributing, do drop me a mail at perhborgen@gmail.com
======
nekopa
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!

~~~
mrborgen
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!

~~~
nekopa
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.

------
musha68k
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

~~~
mrborgen
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.

~~~
musha68k
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?

~~~
mrborgen
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 :)

~~~
musha68k
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.

~~~
mrborgen
Sure, drop me a mail at perhborgen@gmail.com!

------
nikosc
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

~~~
mrborgen
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.

------
wingerlang
Not sure, but git it probably nothing you should throw at beginners.

~~~
mrborgen
Agreed!

~~~
musha68k
Well, I'm not too sure - GitHub is part of how we roll in 2015, right? Git
based version control with that is part of our culture now --> _social_
programming :)

Edit: OK so Jan Lenhardt's thoughts on this: "I'd stay away from it"
[https://twitter.com/janl/status/621667609986076672](https://twitter.com/janl/status/621667609986076672)
[http://writing.jan.io/2012/07/22/jsfab.html](http://writing.jan.io/2012/07/22/jsfab.html)

