|
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?
|
# ? Jul 27, 2022 16:11 |
|
|
# ? Apr 24, 2024 01:39 |
|
https://nandgame.com/ this, op
|
# ? Jul 27, 2022 16:27 |
|
idk man. I "got good" by just loving around with things I found interesting outside of class.
|
# ? Jul 27, 2022 16:29 |
|
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
|
# ? Jul 27, 2022 16:30 |
|
a lot of college kids are "gamers". you can learn a lot by making lovely games with your framework of choice.
|
# ? Jul 27, 2022 16:31 |
|
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.
|
# ? Jul 27, 2022 16:33 |
|
I wasn't taught how to make crud apps at all in college.
|
# ? Jul 27, 2022 16:35 |
|
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.
|
# ? Jul 27, 2022 16:40 |
|
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
|
# ? Jul 27, 2022 16:40 |
|
i never touched anything web related in college, either it was quite nice.
|
# ? Jul 27, 2022 16:42 |
|
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.
|
# ? Jul 27, 2022 17:04 |
|
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. 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
|
# ? Jul 27, 2022 17:15 |
|
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
|
# ? Jul 27, 2022 17:27 |
|
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
|
# ? Jul 27, 2022 17:57 |
|
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. 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.
|
# ? Jul 27, 2022 19:22 |
|
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.
|
# ? Jul 27, 2022 19:48 |
|
Disappointing Dollhouse posted:Deflate your stemlord ego. aint never gonna happen
|
# ? Jul 27, 2022 19:51 |
|
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
|
# ? Jul 27, 2022 19:52 |
|
i don't know as i do not program the computer, op
|
# ? Jul 27, 2022 19:54 |
|
ask them to make their most insufferable parodies of STEM weirdos and trick them into learning what we spend our time doing
|
# ? Jul 27, 2022 19:55 |
|
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. 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.
|
# ? Jul 27, 2022 19:57 |
|
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
|
# ? Jul 27, 2022 20:00 |
|
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
|
# ? Jul 27, 2022 20:03 |
|
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. 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.
|
# ? Jul 27, 2022 20:20 |
|
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.
|
# ? Jul 27, 2022 20:34 |
|
Shaggar posted:yah this is the way to do it yeah lol take technical advice from shagger
|
# ? Jul 27, 2022 20:47 |
|
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 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
|
# ? Jul 27, 2022 20:53 |
|
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.
|
# ? Jul 27, 2022 20:55 |
|
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
|
# ? Jul 27, 2022 20:56 |
|
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
|
# ? Jul 27, 2022 21:10 |
|
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.
|
# ? Jul 27, 2022 21:13 |
|
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
|
# ? Jul 27, 2022 21:22 |
|
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 all of em or just like the top 20 you remember or ?
|
# ? Jul 27, 2022 21:35 |
|
lots of proofs
|
# ? Jul 27, 2022 21:55 |
|
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
|
# ? Jul 27, 2022 21:55 |
|
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
|
# ? Jul 27, 2022 23:25 |
|
I don’t see how installing arch would help you learn about programming…. maybe linux sysadmin stuff
|
# ? Jul 28, 2022 00:47 |
|
teach them useful skills rather than ancient grognard bullshit
|
# ? Jul 28, 2022 00:59 |
|
Sweevo posted:teach them useful skills rather than ancient grognard bullshit javascript, it is!
|
# ? Jul 28, 2022 01:42 |
|
|
# ? Apr 24, 2024 01:39 |
|
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
|
# ? Jul 28, 2022 01:48 |