Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Stabby McDamage
Dec 11, 2005

Doctor Rope
I teach at a college, and I have the opportunity to teach a second semester programming and algorithms course as an alternative to a really weak one where the instructor believes that the command line is irrelevant, software testing is a "trade skill" beneath being taught or used, and everything happens inside an IDE or online grading environment that insulates kids from understanding their computer (think: slap code in this text box and keep hitting submit until the light turns green).

I can teach the algorithm and programming stuff no problem, but what resources would you give to kids to get them to actually touch computer well?

I'm talking command line, git practices, software testing, and even using shortcut keys (a startling number are mousing to File -> Save in their editor well into second or third year!). When I went to school, my class was a mostly self-selected weirdos who computer-touched 24/7, but the current generation buys an aluminum rectangle for a computer and never had to worry about HIMEM.SYS.

What resources and exercises helped you git gud outside the classroom?

Adbot
ADBOT LOVES YOU

CRIP EATIN BREAD
Jun 24, 2002

Hey stop worrying bout my acting bitch, and worry about your WACK ass music. In the mean time... Eat a hot bowl of Dicks! Ice T



Soiled Meat
https://nandgame.com/

this, op

akadajet
Sep 14, 2003

idk man. I "got good" by just loving around with things I found interesting outside of class.

qirex
Feb 15, 2001

trying to imagine an outcome where the students aren't fully overwhelmed by the 200 different things you're trying to teach them and also the old teacher hates you and spends the rest of his life trying to ruin your career

akadajet
Sep 14, 2003

a lot of college kids are "gamers". you can learn a lot by making lovely games with your framework of choice.

CRIP EATIN BREAD
Jun 24, 2002

Hey stop worrying bout my acting bitch, and worry about your WACK ass music. In the mean time... Eat a hot bowl of Dicks! Ice T



Soiled Meat
my friends 8 year old daughter took some class at one of those franchised "schools" where they teach programming by letting the kids make minecraft mods in i think lua, maybe it gets to java idk, but i can already tell that it was enough that she gets some practical real-world concepts that puts her head and shoulders above most fresh out of college kids i've met.

probably having people make something cool with programming that involves getting around some challenges would be useful. making CRUD app #12314512 doesn't do anything useful.

akadajet
Sep 14, 2003

I wasn't taught how to make crud apps at all in college.

CRIP EATIN BREAD
Jun 24, 2002

Hey stop worrying bout my acting bitch, and worry about your WACK ass music. In the mean time... Eat a hot bowl of Dicks! Ice T



Soiled Meat
me neither.

i never even learned a programming language in college.

except my "modern programming languages" which showed 3 different types of programming languages, and we learned the modern languages: ML, prolog and java.

Agile Vector
May 21, 2007

scrum bored



one of my first web classes had us build a reference guide for common terminal commands and their common arguments for the first week. it was a bridge course with a wide range of skill levels among the students, so it evened the field

what i liked was it made people try out the simple stuff instead of copy text -> paste text instructions and deferring to gui limitations. the instructor confided he did it because he thought it was silly so many people didn't know simple command line tools

CRIP EATIN BREAD
Jun 24, 2002

Hey stop worrying bout my acting bitch, and worry about your WACK ass music. In the mean time... Eat a hot bowl of Dicks! Ice T



Soiled Meat
i never touched anything web related in college, either

it was quite nice.

rotor
Jun 11, 2001

classic case of pineapple derangement syndrome
how to write simple bash scripts is a good one - show them how to redirect stdin/stdout/stderr to various places, and how you can use the "everything is a file" metaphor to make your life easier.

Shaggar
Apr 26, 2006

CRIP EATIN BREAD posted:

my friends 8 year old daughter took some class at one of those franchised "schools" where they teach programming by letting the kids make minecraft mods in i think lua, maybe it gets to java idk, but i can already tell that it was enough that she gets some practical real-world concepts that puts her head and shoulders above most fresh out of college kids i've met.

probably having people make something cool with programming that involves getting around some challenges would be useful. making CRUD app #12314512 doesn't do anything useful.

yah this is the way to do it


rotor posted:

how to write simple bash scripts is a good one - show them how to redirect stdin/stdout/stderr to various places, and how you can use the "everything is a file" metaphor to make your life easier.

this is not the way to do it. in fact nobody anywhere should be doing this at any time. the unix philosophy was terribly stupid

graph
Nov 22, 2006

aaag peanuts

rotor posted:

and how you can use the "everything is a file" metaphor to make your life easier.

people do not understand files or file systems so uh start there op

taco_fox
Dec 14, 2005

I never learned about version control or how to effectively work with a team in school. That would have been infinitely more useful than learning multiple search algorithms

Stabby McDamage
Dec 11, 2005

Doctor Rope

qirex posted:

trying to imagine an outcome where the students aren't fully overwhelmed by the 200 different things you're trying to teach them and also the old teacher hates you and spends the rest of his life trying to ruin your career

I'm fine cutting to a realistic scope, and I've resigned to the latter thing -- I just don't care about rank/promotion so it's fine.

CRIP EATIN BREAD posted:

my friends 8 year old daughter took some class at one of those franchised "schools" where they teach programming by letting the kids make minecraft mods in i think lua, maybe it gets to java idk, but i can already tell that it was enough that she gets some practical real-world concepts that puts her head and shoulders above most fresh out of college kids i've met.

probably having people make something cool with programming that involves getting around some challenges would be useful. making CRUD app #12314512 doesn't do anything useful.

Yeah, I'm thinking about that. It's a Java course, and I explicitly do NOT want to try to cram any kind of GUI into it. I'm trying to think of cool GUI-less things. One thing I was considering was making the smaller programming assignments be implementations of existing command line tools, so they get a little bit of systems/shell thinking built in, and many of those end up being straightforward uses of the common algorithms.

Disappointing Dollhouse
Dec 11, 2004
gorkagorkagorka
Ever since college I've dreamed about a class in tech debt. Every assignment I did was in a vacuum so it was easy to get away with writing kind of lovely code because it never came back to bite me in the rear end.

The students would develop a small application for the entire semester, adding things as week long assignments. Each feature would be easy to hack in but make a future assignment more difficult if done the easy way. No assignment difficult by itself, but the accumulation should help students discover that this mess is all their fault and they should clean it up now before it gets even worse.

Enroll now to learn that your code sucks and the only person to blame is yourself. Deflate your stemlord ego.

CRIP EATIN BREAD
Jun 24, 2002

Hey stop worrying bout my acting bitch, and worry about your WACK ass music. In the mean time... Eat a hot bowl of Dicks! Ice T



Soiled Meat

Disappointing Dollhouse posted:

Deflate your stemlord ego.

aint never gonna happen

graph
Nov 22, 2006

aaag peanuts

taco_fox posted:

I never learned about version control or how to effectively work with a team in school. That would have been infinitely more useful than learning multiple search algorithms

a grad student taught a practical coding class for two years couple years ago, its the first time version control was taught in my alma maters cs dept. they left, so it isnt taught anymore

Cat Face Joe
Feb 20, 2005

goth vegan crossfit mom who vapes



i don't know as i do not program the computer, op

aw frig aw dang it
Jun 1, 2018


ask them to make their most insufferable parodies of STEM weirdos and trick them into learning what we spend our time doing

Shaggar
Apr 26, 2006

Disappointing Dollhouse posted:

Ever since college I've dreamed about a class in tech debt. Every assignment I did was in a vacuum so it was easy to get away with writing kind of lovely code because it never came back to bite me in the rear end.

The students would develop a small application for the entire semester, adding things as week long assignments. Each feature would be easy to hack in but make a future assignment more difficult if done the easy way. No assignment difficult by itself, but the accumulation should help students discover that this mess is all their fault and they should clean it up now before it gets even worse.

Enroll now to learn that your code sucks and the only person to blame is yourself. Deflate your stemlord ego.

i like that. maybe as a twist for advanced classes, for each new assignment you pick one students implementation of the previous assignment and everyone has to use it to get the full development experience.

Agile Vector
May 21, 2007

scrum bored



the second half on that web class i mentioned was for the class to organize into two groups, with leads, and build out several competing proposals for a local event site, then pitch against the other group. it involved presenting to real business owners, organizing info architecture and technical design for the product, and having status and progress meetings, as well as delivering a functional product for the pitch

not technical, but more applied than say a team project to build a chat app or whatever in a classroom bubble

there was also a writing course that was more about consuming, understanding, and clearly conveying information in a technical field. it pushed communications skills that made working over email and drafting proposals/responses a lot easier

Agile Vector
May 21, 2007

scrum bored



Shaggar posted:

i like that. maybe as a twist for advanced classes, for each new assignment you pick one students implementation of the previous assignment and everyone has to use it to get the full development experience.

ooo, that's a good angle. are you also suggesting pulling from the previous semester's work, because that would be very relatable not having the originator available or only available with vague memories of their codebase

Stabby McDamage
Dec 11, 2005

Doctor Rope

Disappointing Dollhouse posted:

Ever since college I've dreamed about a class in tech debt. Every assignment I did was in a vacuum so it was easy to get away with writing kind of lovely code because it never came back to bite me in the rear end.

The students would develop a small application for the entire semester, adding things as week long assignments. Each feature would be easy to hack in but make a future assignment more difficult if done the easy way. No assignment difficult by itself, but the accumulation should help students discover that this mess is all their fault and they should clean it up now before it gets even worse.

Enroll now to learn that your code sucks and the only person to blame is yourself. Deflate your stemlord ego.

My senior design course does exactly this, and it works great. I have students contacting me years later to say how helpful it was. I give incremental requirements and enforce zero code testing or other good hygiene; their grade is just based on it passing manual tests that they get to watch happen (and feel bad when they fail). I also count off for subjective issues so they can't "technically" tick the boxes with a lovely UI. At the start, students do almost no scheduling, testing, or CI/CD. By the end, they're all doing it because reality taught them it was important. Feels good.

Shaggar posted:

i like that. maybe as a twist for advanced classes, for each new assignment you pick one students implementation of the previous assignment and everyone has to use it to get the full development experience.

A friend of mine at another university teaches a course like that. They've been adding a feature per semester to this gargantuan and awful mock medical records system for almost a decade. At the end of the term, the class votes on which team did it best, and that becomes the new base code for the next semester. It's loving horrifying in the most delightful way, but I can't bring myself to be quite that evil.

Disappointing Dollhouse
Dec 11, 2004
gorkagorkagorka

Stabby McDamage posted:

My senior design course does exactly this, and it works great.

Fantastic! I'm glad it's being done somewhere.

Things like version control, tests, etc. seem off in the distance when assignments are too small. Being forced into the situations they solve is the greatest way to learn what they're about.

rotor
Jun 11, 2001

classic case of pineapple derangement syndrome

Shaggar posted:

yah this is the way to do it

this is not the way to do it. in fact nobody anywhere should be doing this at any time. the unix philosophy was terribly stupid

yeah lol take technical advice from shagger

Agile Vector
May 21, 2007

scrum bored



Stabby McDamage posted:

A friend of mine at another university teaches a course like that. They've been adding a feature per semester to this gargantuan and awful mock medical records system for almost a decade. At the end of the term, the class votes on which team did it best, and that becomes the new base code for the next semester. It's loving horrifying in the most delightful way, but I can't bring myself to be quite that evil.

all too real :stare:

it'd be brutal, but after having worked in decade and older codebases for massive applications, that would be great to have some experience with before you're trudging through one

LanceHunter
Nov 12, 2016

Beautiful People Club


I'd have them build out a REST service to submit their homework, possibly making it part of their homework as well. For each assignment they submit it by sending you a URL like <student>.herokuapp.com/homework/:assignmentID

Have the students deploy an Express/Node app to Heroku (or similar service), and have them build the endpoints with each assignment. Maybe in some cases it's just a link that will result in a download for a zip or PDF. Maybe it'll be an interactive page for some other assignment. If you keep it low-friction they should be able to pick up on some useful skills along with the regular coursework.

rotor
Jun 11, 2001

classic case of pineapple derangement syndrome

graph posted:

people do not understand files or file systems so uh start there op

well they're second year cs students so i kinda assumed but yeah if they dont understand filesystems that'd be a super place to start

Bloody
Mar 3, 2013

Stabby McDamage posted:

I'm talking command line, git practices, software testing, and even using shortcut keys (a startling number are mousing to File -> Save in their editor well into second or third year!).

no ehh yes yes

rotor
Jun 11, 2001

classic case of pineapple derangement syndrome
I feel like tests are hard to teach, because you dont really see how they're valuable until you have a large piece of software and you never have that in college.

Archduke Frantz Fanon
Sep 7, 2004

just do what my friends professor did: a written test where they have to fill out the names of the various methods of classes within the java standard library

not what they do mind you, just the names

rotor
Jun 11, 2001

classic case of pineapple derangement syndrome

Archduke Frantz Fanon posted:

just do what my friends professor did: a written test where they have to fill out the names of the various methods of classes within the java standard library

not what they do mind you, just the names

all of em or just like the top 20 you remember or ?

BONGHITZ
Jan 1, 1970

lots of proofs

Cybernetic Vermin
Apr 18, 2005

rotor posted:

all of em or just like the top 20 you remember or ?

just start with java.util.Calendar and work your way from there

Asleep Style
Oct 20, 2010

Stabby McDamage posted:

What resources and exercises helped you git gud outside the classroom?

I didn't start getting good at computer until partway through college when I got rid of windows and installed arch, which forced me to actually learn how different parts of the system fit together. please note this is not an endorsement of arch as a daily driver. this is probably infeasible unless you have an army of TAs and are willing to give everyone six weeks before they turn in their first assignment. maybe a standardized vm or docker image with a limited set of utilities? definitely linux, probably not arch

for git, I think the git-flow workflow is probably the practical sweet spot. alternatively, make them read pro-git so that they understand that computers are a geographical oddity - you're a 500 page book away from learning anything

for general software design I like 12factor.net as a solid introduction

akadajet
Sep 14, 2003

I don’t see how installing arch would help you learn about programming…. maybe linux sysadmin stuff

Sweevo
Nov 8, 2007

i sometimes throw cables away

i mean straight into the bin without spending 10+ years in the box of might-come-in-handy-someday first

im a fucking monster

teach them useful skills rather than ancient grognard bullshit

akadajet
Sep 14, 2003

Sweevo posted:

teach them useful skills rather than ancient grognard bullshit

javascript, it is!

Adbot
ADBOT LOVES YOU

HamAdams
Jun 29, 2018

yospos
teach them software testing, and for the final make them present to students in the MBA program and try to convince them that testing is actually a good thing

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply