carpentries / undergrad-education-conversations

Conversations about teaching computational skills to undergraduates
12 stars 2 forks source link

1st semester undergraduate course teaching python, math, modeling #4

Open lexnederbragt opened 7 years ago

lexnederbragt commented 7 years ago

Hi,

Thanks for this repo!

I am preparing to teach - for the first time - a full semester course for 1st year biosciences (biology) students at the University of Oslo this fall. I wrote about it on my blog for those interested.

In short:

Responding to some of the points raised:

Is there some cost associated with teaching undergrads the traditionally memory intensive biology content at the same time as the more logic focused computational content?

'My' students will have a molecular/cell biology in the same semester, as well as a generl chemistry course. We try to build bridges between the courses, using material from the other two courses to plot or examine in the python course.

How do we deal with coding fear? The very first skill students require is to not be terrified

Not yet given that much thought... Start easy, I think, slowly build up complexity and check in with students regularly.

Semester long SWC/DC-esk course(s) very early

Yes!

Continue to incorporate computation throughout all or most core curriculum

This is the plan, and we have presented this two times to the other faculty teaching undergrads. Enthusiasm is high, but we will need to help them implement it. First two semesters will be python only (the better language to learn programming with), then we switch to R for the statistics, biodiversity and evolution courses (biologists need to know their way around R). Imagine the benefit if those starting with R are familiar with pandas dataframes!

We need curricula road maps; identify the short, medium, and long term learning objectives, and make a plan to get there.

Yes, I have realised that we are lacking that right now.

Can't assume current faculty will be able to do this on their own, so training TA's or having dedicated personnel will be important

Yes to both. Hiring PhD students to help make exercises/curriculum material.

'Bioinformatics' is broad, so what commonalities can be extracted to give students the best framework for branching into more specialized topics later? Basic coding skills Basic shell tools Focus on what to do with tabular data, statistics, modelling, noisy matrices Teach students to troubleshoot and to learn form manuals/formums/peers/etc Dos and don'ts for basic script design (antipatterns)

Yes to all.

Looking forward to the discussions here!

rachelss commented 7 years ago

How many students? All? Are there a bunch of biology students who will continue to go through the curriculum with minimal bioinformatics experience? If some students don't take this first-year course does that limit the integration into subsequent curriculum?

lexnederbragt commented 7 years ago

How many students? All?

200-240. Yes, all those following the biosciences program, plus some that are studying to become biology teachers, plus a few taking it as a single subject

Are there a bunch of biology students who will continue to go through the curriculum with minimal bioinformatics experience?

It is not really a bioinformatics course or study program, more general biology (which may thus make it be slightly out of the scope of these discussions).

If some students don't take this first-year course does that limit the integration into subsequent curriculum?

It would, but relevant subjects will have this course as a prerequisite.

rachelss commented 7 years ago

I think general biology is exactly in the scope! How did you persuade your colleagues that all biology students should take a computing course?

I have had students struggle with programming. It sounds like students like this who are otherwise good biologists would have difficulty continuing studying biology, which would be disappointing. Is there a provision for students who for whom coding is particularly difficult?

davidmam commented 7 years ago

Hi Lex, what proportion of student effort is the course? I would be surprised if you can effectively do a huge amount. I run a level 1/2 elective module (20 credits in a 60 credit semester) where we can cover the basics in the first 6 week, then do a smattering of biopython/git/unix and finish with a three week Raspberry Pi based project where they (in groups) write a python program to control a lab UV-Vis spec via a serial interface (the control is in a supplied module as getting them to debug the low level serial was a minor challenge for me and would have been out of scope).

Assessment by two in class exercises, an MCQ and a project report. The project approach with the challenge of implementing their own idea is a really good motivator.

The spec is a basic UV-vis spec where you can read absorbance and set wavelength. Some of the projects were:

Students were given free reign on project desigh and a bunch of coloured filters (no solutions, all done in a dry lab over 3x 3hr sessions with extra coding done in their own time) One of the students is doing a summer project with Geoff Barton this summer, so putting her learning into practice.

The biggest mistake is to try to cover too much. As a postgrad/postdoc you are used to learning very quickly and seeing things once or twice, building on a framewirk you already have. Better to cover less and have more exercises to get things really solid in the first instance and teach them how to LSU (Look stuff up)

I have also pre-recorded all the lectures so they can go back and review as they try the Jupyter notebook 'labs'.

Looking back over your list, I would spend a lot of time on the basic coding skills. Without having those locked in place, the extension to problem solving (ie dealing with multistep processes like dodgy data) should be near the end and used to distinguish good from excellent rather than pass/fail.

Scary thing is doing this for a full year of 220 students. Is this part of a larger module or will failure prevent progress into a future year?

lexnederbragt commented 7 years ago

@rachelss

I think general biology is exactly in the scope! How did you persuade your colleagues that all biology students should take a computing course?

This was decided before I came into the picture. The Computing in Science Education project I mentioned is a big success at the faculty and gets a lot of traction. This in combination with a full reform of the bachelor curriculum and visionary leaders I guess made it possible.

I have had students struggle with programming. It sounds like students like this who are otherwise good biologists would have difficulty continuing studying biology, which would be disappointing. Is there a provision for students who for whom coding is particularly difficult?

Good point. I haven't given this any thought yet, I must confess. I will have to discuss this with the relevant people at some point so that we at least have thought about it. Thanks!

lexnederbragt commented 7 years ago

@davidmam

what proportion of student effort is the course?

Not sure what you mean but I suspect this is the answer: this course is one third of their load that semester (10 out of 30 credits).

I would be surprised if you can effectively do a huge amount.

I agree and we aim low, hoping we can go higher. Your course sounds cool - nice idea with the Raspberry PI project. Maybe something for next year...

The biggest mistake is to try to cover too much. As a postgrad/postdoc you are used to learning very quickly and seeing things once or twice, building on a framewirk you already have. Better to cover less and have more exercises to get things really solid in the first instance and teach them how to LSU (Look stuff up)

I did a trial course with a dozen first-year students this spring and I agree: tempo must be muuuuuch slower than what I'm used to from Software/Data Carpentry courses.

I have also pre-recorded all the lectures so they can go back and review as they try the Jupyter notebook 'labs'.

We have a podcast setup, but I fear I should really be videotaped...

Looking back over your list, I would spend a lot of time on the basic coding skills. Without having those locked in place, the extension to problem solving (ie dealing with multistep processes like dodgy data) should be near the end and used to distinguish good from excellent rather than pass/fail.

Again, I agree. Repetition, repetition, repetition (of for loops, dictionaries, functions etc).

Scary thing is doing this for a full year of 220 students. Is this part of a larger module or will failure prevent progress into a future year?

As far as I know failure will prevent progress (again, something I have not given enough thought...).

davidmam commented 7 years ago

This matches pretty much exactly what I do as an elective. The video lectures are really helpful for the students - it means that they can go back and rework examples and explainations.

Biggest issue I had was not enough 'trivial' examples in the labs. I have reworked those for the postgrads (reuse of the same video lectures). I predid the videos with OBStudio (Open Broadcast). Relatively easy to use and I could green screen myself into the corner. The labs were Jupyter notebooks, starting off with 'revision' then challenges, then assessed problems, then extension tasks.

Still a work in progress.