Lazyweb, a question: let's say that you could teach a "cultural anthropology" type of course about computing to first year students, to prepare them for the codebases, communities, patterns and software philosophies of the programming world. You've got about ten weeks to run it. What would you teach in that course and why?

(RTs appreciated for reach.)

@mhoye depends a bit on the program you're doing this for. Is this more software engineers or more mathematical computer scientists?

Anyways, probably run them through the gamut of things that software actually is used for (electrical engineers in safety-critical disciplines are sometimes a bit confused about the break things and maybe move fast philosophy of modern web-centered SE; people in modern software companies by the lack of good tooling in embedded. Aerospace by the lack of req. eng.;

@mhoye and this all leads to different company philosophies).

Then look at one or two projects that involve software development and look at what the challenges are that needed to be tackled, and how cooperation within and between teems, with vendors, libraries, users, and API consumers happens.

Look at incentive structures for different people in different constructs (FOSS enthusiast after work; PhD cand; software employee in car industry; employee at large software company; manager there),

@mhoye and the social struggles they have. Is it time pressure? Money? Disconnect from management? Appreciation? Disconnect from the purpose of the software?

I'd probably also take a lecture to talk about quantifiable effects of lack of gender equality, and diversity (if you can find an expert at a different faculty, invite them?).

Talk about how FOSS projects survive differently than companies. Talk them through a contribution to someone else's (or another team's) codebase in both cases.

EOF

@mhoye I just realized that "first semester" means that students still think they'll be developing the next big AAAA game alone; you might want to very brutally clean up that misconception.