swcarpentry / DEPRECATED-website

DEPRECATED: see https://github.com/swcarpentry/website for the current website.
Other
30 stars 22 forks source link

Boot camp for ICSS Southampton - 2013-06-03/04 #245

Closed mikej888 closed 11 years ago

mikej888 commented 11 years ago
NelleV commented 11 years ago

I can teach or/and help with either git or python (introduction, numpy, matplotlib etc) depending on the exact dates.

robintw commented 11 years ago

I am happy to be a helper (when I'm not sorting out all of the organisation stuff during the day).

davidmam commented 11 years ago

Southampton should be fine depending on the precise dates. I am happy to assist and pitch in to teach where required (though I've not done much numpy or matplotlib) Unix and basic hackery is fine though. I even have relatives nearby with whom I could stay.

robintw commented 11 years ago

Just thought I'd let you all know a few more details about what I've been organising so far. The admin person for the ICSS is now actively looking for rooms that we might be able to book for the Boot Camp - we have a couple of possibilities, but it depends exactly how many people we have.

I've sent a questionnaire around to the ICSS students asking who would like to come to a Boot Camp and what topics they'd like to cover. So far, I've had 19 people say that they want to come - and I suspect there will be quite a lot more when I send another email around to remind people to actually fill in the form! Once we've found out how many from the ICSS want to come along, we will open it up to the Computational Modelling Group (a university-wide group) and see what sort of response we get. I suspect we'll easily get 50 people for the boot camp, if that's ok with you guys.

As for dates, once we've worked out more about rough numbers we can try and get some rooms booked - I suspect we'll be restricted quite a lot by when rooms at the university are available to be booked, but I'll get back to you guys about that asap.

davidmam commented 11 years ago

I should add that I havent done a SW carpentry bootcamp before (so would be looking to learn how that works) but have been running and teaching on postgrad and undergrad bioinformatics courses for the last 15 years.

robintw commented 11 years ago

I've spent most of the morning today trying to find rooms that are available at the university for us to hold this in - our room booking system can be rather frustrating! Unfortunately it seems that we are unlikely to be able to hold it in May, as that is during university term and exam time, so most rooms are booked - but there is more availability in June.

The students have overwhelmingly voted for a two-day course, and we have come up with a few possible dates:

Mon 3rd - Tues 4th June Any two days within Wed 19th - Fri 21st June

How do those dates suit people?

I have a good indication of the topics that the participants would like to be covered - I will chase a few more people to respond to my questions, and then post another comment with information about the topics that people would like. In short though, they are very keen on: automated testing, debugging, good program design (OOP and Non-OOP), effective use of the Linux/Unix shell, and version control.

mikej888 commented 11 years ago

Pinged Robin as to whether expenses could be covered and if he wants me to re-ping UK and Tutors list for UK-based tutors.

mikej888 commented 11 years ago

Robin can cover UK instructor expenses and this likely will include Paris @NelleV (as Paris-London is likely cheaper than many parts of the UK to London!).

@davidmam, where are you located?

mikej888 commented 11 years ago

Pinged UK and Tutors lists.

davidmam commented 11 years ago

I'm in Dundee, Scotland. Just up the road from MikeJ888

robintw commented 11 years ago

@mikej888: How many instructors do we need to recruit for this? Was there any response to your ping to the mailing list?

@davidmam @NelleV: Can do you any of the provisional dates? Mon 3rd - Tues 4th June or Any two days within Wed 19th - Fri 21st June?

NelleV commented 11 years ago

@robintw I can both dates right now, but my schedule is starting to fill up. It would be great if we could set the dates quickly.

davidmam commented 11 years ago

Either would be fine though early June would be better, but I wouldn't class my self as an Instructor. I'd be there to help and learn how a SC bootcamp runs.

robintw commented 11 years ago

Right, I've made an executive decision: the boot camp will be on the 3rd and 4th June 2013. We now have a room booked for those dates which will hold 50 people.

@NelleV and @davidmam: From what you've said above, those dates should be fine - and at least you can get it in your calendars now. If there are any issues with the dates then let me know.

@mikej888: Could you send this new date to the various mailing lists?

mikej888 commented 11 years ago

@robintw done. If you want an EventBrite registration page and mailing list set up please let me know. We can password protect any page so you can ensure ICSS get priority.

davidmam commented 11 years ago

Is there a provisional syllabus for the bootcamp? What is the expected base level of the participants?

drj11 commented 11 years ago

I can help and/or instruct if you need me

robintw commented 11 years ago

@drj11: That sounds great - where are you located? We can cover UK travel expenses.

robintw commented 11 years ago

Now we've sorted the dates, here is far more information about the bootcamp participants, topics, schedule etc.

The bootcamp will be held at the University of Southampton (Southampton, UK, SO17 1BJ) on the 3rd and 4th June 2013, from 9am-5pm each day. Lunch will be provided, as well as coffee/tea/biscuits for breaks. We will provide travel expenses for instructors, assuming they are UK-based (or by specific discussion), and I am happy to give advice on getting to the university, where to stay etc.

We have a room with WiFi (all participants will have university accounts so should be able to login fine - I will investigate how to get guest accounts for the instructors), two projectors and moveable desks and seats, so we should be able to set it up in the best way possible.

We will have approximately 50 participants, the majority of whom will be PhD students from two Doctoral Training Centres at Southampton: the Institute for Complex Systems Simulation (ICSS; http://www.icss.soton.ac.uk; probably around 30 students) and the Web Science DTC (http://dtc.webscience.ecs.soton.ac.uk/; at least 10 students), although if we don't fill the whole 50 person limit with those students we will open it to the wider community through the Computational Modelling Group at Southampton (http://www.cmg.soton.ac.uk).

The students from the ICSS will all have done a compulsory year of training which will have included courses in programming using Python and programming using C - although for some people this training will have been almost three years ago! All of these ICSS students will be doing some sort of programming as part of their PhD - in a huge range of languages including Python, R, C++, C, Java, Matlab and more. The courses in the first year covered the basics of programming in those languages (for some people this was their first introduction to programming), but didn't cover many of the SWC-related things (although brief mentions were probably made of automated testing, debugging and code documentation and design). I'm less knowledgeable of what experience the Web Science DTC students will have, but it is safe to assume that all have experience of programming. Given this, I would say that it is fine to assume a basic-to-moderate level of Python knowledge - the vast majority will have this already, and the others should be able to pick it up again fairly quickly.

I did a questionnaire (I would share it with you, but Google Docs is refusing to share things at the moment due to an Internal Server Error) amongst the ICSS students asking what they would like to cover and the top items (in order) were:

How many of these topics do you think we can realistically cover in a two-day boot camp? I'm fairly flexible about what exactly is covered - but obviously if we can try and cover at least the top three that the students recommended then that'd be great.

Part of this will obviously depend on the instructors areas of expertise - what do you think @davidmam @drj11 @NelleV?

davidmam commented 11 years ago

I feel I should back out of this one as it will be outwith my areas of expertise.

NelleV commented 11 years ago

I can do the following (ideally, I would like not to teach more than 2 of these subjects):

I can also speak about testing (using nosetests), but it's not my area of expertise. Also, maybe we can "merge" some of these topics together depending on the length of the talks. Version control, testing and automatic builds are part of making research correct and reproducible.

robintw commented 11 years ago

@NelleV: If you're happy to do version control with git and reproducible research that would be great - particularly as I can see those going fairly well together. Reproducible research is something I've started gradually raising with some of my colleagues in the ICSS, and they are very keen to learn more.

@drj11: Are there any topics in my list that you would be happy to instruct on?

robintw commented 11 years ago

@mikej888: An EventBrite page with a mailing list etc would be great. Presumably you set one up and then give me some sort of admin rights so that I can put in all of the details etc? Will EventBrite give us a way to have a waiting list once we've got all of the ICSS students who want to come and opened it to others?

drj11 commented 11 years ago

@robintw I'm in the UK (sheffield, specifically). As for topics I can teach Python, shell, and, with more trepidation, make, testing, good program design, version control. I cannot in all honesty teach matrix programming.

robintw commented 11 years ago

@drj11: If you could teach Shell that'd be great, and which of make, testing and good program design would you be happiest teaching?

Looks like so far we have three topics definitely covered:

A question for everyone (perhaps particularly @mikej888): How many topics can normally be covered in a two-day boot camp?

NelleV commented 11 years ago

@robintw indeed, the reproducible research part should be shorter than the git part.

In the bootcamps in france, we cover 4 topics on two days. Our bootcamps are traditionnaly longer than the north american ones (we finish later - last year was 9:00 to 17:30-18:00), but we take long breaks (twice 30minutes, and 1h30 of lunch breaks). This means each instructors has 3h-3h30: it's quite long for the instructors and the students, but I find that having shorter sessions means not doing enough exercises or not covering the subject enough.

drj11 commented 11 years ago

@robintw ah, testing. :) especially if that means testing in python.

robintw commented 11 years ago

@drj11: Great - can we put you down for testing then? Using python as the example language is great - as most people will have at least some knowledge of Python - but a focus on the generic concepts and approaches to testing will make it useful to everyone.

sprossiter commented 11 years ago

I can potentially help out with this and I'm at Southampton Uni so no logistical issues. My background is more in commercial IT, with my research development Java based (on Linux), but I know some Python (mostly for scripting and not using scientific stuff, though am keen to brush up). I use Subversion for VC, but am trying to learn git. Of the topics listed, I'd be most useful on:

Good program design (modularity, OOP etc) Version control (the majority would prefer this to be taught using git) Testing (particularly automated testing approaches)

I could also potentially help on:

Debugging (how to use a debugger effectively, investigating crashes, going one better than just print statements) Effective use of the Unix/Linux shell (bash scripting etc)

Actually, as regards debugging, I'm a big advocate of well-designed switchable diagnostic messages (using proper frameworks such as log4j) as a much more useful tool than a debugger (which should be a last resort); this also gives lots of other design benefits such as self-documenting software. I'd bundle defensive programming and assertions in with this as well. I haven't yet had a chance to look at what the standard SWC templates are for these areas of teaching...

I can obviously meet up locally with Robin to discuss as well.

Stuart (http://www.ecs.soton.ac.uk/people/sr1)

robintw commented 11 years ago

Hi all,

We've now had quite a few registrations for the bootcamp (only 14 places left now!), so I thought we ought to sort out a few more of the arrangements.

So far we have:

Instructors: @NelleV, @drj11, ? @monsieurrigsby Helpers: @robintw (me) + a few other possibilities Topics:

What do people think about adding in another topic? I don't want to rush to cover too many topics, but I'd like to fit something else in if possible. What do people think about adding in a session on debugging or good program design & documentation - or maybe even some sort of combination session of the most important bits of those. @monsieurrigsby: how would you feel about teaching that?

I've been advised by @mikej888 that we should have a chat (via Skype or any other sort of text or voice chat software) about the arrangements for the days, covering things like:

Could you all fill in the Doodle poll at http://www.doodle.com/qn8u7drhsdv467aq and we can arrange when is best to meet. Is Skype ok for everyone, or would people prefer another tool?

sprossiter commented 11 years ago

I've (belatedly) filled in the Doodle poll, though it seems I'm the only one. I'm currently a bit nervous about what capacity I could/should be involved in. (I'm also trying to finish a PhD in my non-existent spare time, so really can't commit a large amount of time, and may even have to pull out if I think I can't help out to the 'required standard', when I understand what that is.)

If I was going to instruct (good program design and documentation being my best option), I think it would have to be Java-based for any code examples, and with examples from the simulation domain. In any case, we might want to teach in a completely language-independent way, though it's nice to see at least some examples of how the ideas translate into real code.

I tried to look at the ICSS modules (SEGS6025/8) to see what they're taught (http://www.icss.soton.ac.uk/programme/taught.html), but the links from the ICSS pages are broken. @robintw In terms of understanding backgrounds better, are you now able to share the registration-questionnaire Google Doc?

I personally think good design principles merges in somewhat with choice of tools and frameworks, and I'd prefer an approach where the students are given some view of the alternatives out there, even if teaching necessarily focuses on one particular toolset or 'idea-set'. Having not looked in any detail at Software Carpentry material yet (or other Soton/online courses for that matter), my top-of-the-head sub-topics (in no real order) would be:

-- general guidance on where to focus effort and why (and what is made difficult by the research context) -- what documentation to write and why (probably with an agile development and UML slant) -- choice of tools -- code packaging (and maybe licensing) -- architectural design (touching on areas like domain-driven design and architectural design patterns) -- API/interface design (including I/O and UI design, focusing on what types of UI and why) -- (static) class design and (UML) documentation (referencing design patterns) -- dynamic behavioural design and (UML) documentation -- defensive and 'self-documenting' programming -- use of comments (including auto-generation of docs) and relationship to decisions on what to document and why -- (switchable) diagnostics and logging -- code versioning (bearing in mind what taught in other topics)

I would obviously have to pick and choose (cohering around some decent example: where I clean up an existing design and/or design from scratch with best principles). Equally obviously, developing content from scratch might be a Very Bad Thing, but the structure might also be very context-dependent if, say, the ICSS taught courses included a lot of UML-based OO design material. (If I was really clever, I could segue in to that material and perhaps 'revisit' it to add more depth, but that might over-assume that all attendees had seen it before.) There might also be significant cross-over with a Reproducible Research topic, depending on how that will be taught.

In general, I'm naive/nervous about how much we should be following 'official' software carpentry blueprints, both for content and delivery method. There has clearly been a lot of thought (and expertise) there in terms of what to teach and why that it would be foolish to ignore. (Plus we're under its auspices, so can't go too far off-canon.)

In terms of reproducible research, I've actually just finished writing a very simple framework (Java/Subversion-based) to consistently store code version information and check it at runtime (including checking for local changes to checked-out or exported code of a given version). In general, it could be useful to give examples of different ways of doing it using different languages/tools (and pointers to language/VC-tool-specific resources), to give the participants choice and relevance to their development environment.

Finally, I have a friend / ex-colleague who is interested in helping, and has been involved in a Python and git-based open source project (so has a good skillset match). He's a physicist, and has done complexity-science type simulation modelling work at Southampton. I won't name him until I'm sure he's OK with it! (I'm going to send him some Software Carpentry links so he can have a look in more detail.)

mikej888 commented 11 years ago

From the comments foregoing, I think one on documentation and debugging might be a good choice? Some of the US boot camps have prepared material for that.

Also @drj11, perhaps your session on where/how to get help that you're doing for the Manchester boot camp?

For good program design, that would depend upon the audience but I'd be inclined to keep to the basics of modularity - what/when to partition into functions, classes (if the audience knows about OO), modules/packages etc. Perhaps introduce via Python scripts being recoded into functions then into modules and end with an introduction to OO.

It's better, in my view, to focus on concepts that are applicable across many languages rather than locking down on any specific tool/techique so the knowledge is more readily applicable. My view of Software Carpentry is that the specific tools uses (Git, Python etc) are just vehicles to demonstrate the concepts.