|
akadajet posted:I don’t see how installing arch would help you learn about programming…. maybe linux sysadmin stuff correct. how to teach someone to program was not the question Stabby McDamage posted: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?
|
# ? Jul 28, 2022 02:48 |
|
|
# ? May 3, 2024 20:12 |
|
honestly, my real answer is: no amount of schooling or learning will get them where they need to end up. the only real decent candidates i've interviewed that end up being good are ones who have their own curiosity into learning this poo poo. if they have their own github page with some bullshit projects (no matter how dumb) puts them so far ahead of everyone else because they took the time to actually make something useful for themselves. i don't think this is something you can teach, everyone in this gig is in it because they enjoy some aspect of it. people who don't actually enjoy it are never going to be worth poo poo.
|
# ? Jul 28, 2022 03:23 |
|
you could make a deece lil class out of the basics of git, bash, dns, pki, sql, html & http and itd go a long way to prepare them for the debased life of a working programmer
|
# ? Jul 28, 2022 03:36 |
|
Asleep Style posted: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 I read the first two chapters then said gently caress it, I got the gist; in a real way, that's been enough to coast for a career. I can't even imagine the power of the whole book rotor posted:you could make a deece lil class out of the basics of git, bash, dns, pki, sql, html & http and itd go a long way to prepare them for the debased life of a working programmer also yes Stabby McDamage posted: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). broadly speaking "troubleshooting" since that's going to cover a whole lot specifically, in no particular order and with no necessary relation, just things that imo round you out as a dev/generalized computer toucher:
I had this on this list but meh
realistically that's already too far into concrete implementation vs whatever they'd do on a given job, wouldn't want to get in the way of someone explaining they have to use POST for everything
|
# ? Jul 28, 2022 04:01 |
|
rotor posted:you could make a deece lil class out of the basics of git, bash, dns, pki, sql, html & http and itd go a long way to prepare them for the debased life of a working programmer i'm a "working programmer" and i only know 2 things in that list
|
# ? Jul 28, 2022 06:24 |
|
qsvui posted:i'm a "working programmer" and i only know 2 things in that list when i say "basics" i mean "basics" like for pki? just know what a public and private key are, what they can secure and what they cant and how they work and where to keep them.
|
# ? Jul 28, 2022 06:26 |
|
CRIP EATIN BREAD posted:i don't think this is something you can teach, everyone in this gig is in it because they enjoy some aspect of it. people who don't actually enjoy it are never going to be worth poo poo. it’s this, op. some people are just not going to make it. if they don’t know how to use a file system and they’re majoring in computer fondling, they may have chosen poorly. for the ones who are curious and have touched a computer before teach them how to debug a program. with or without a debugger, understanding how to break down a program and figure out what part is failing is a skill most people need to learn, and is very useful, particularly to beginning programmers
|
# ? Jul 28, 2022 07:28 |
|
the best way to teach anyone programming (or maths) is by having them make a video game. it requires absolutely everything and is its own self-motivator, with massive scope for self expression both artistically and technically. the best way to make a video game if you haven't done one before is take a video game that's pretty simple that you know well, and make your own version of it. the original game adds plenty of boundaries that prevent analysis paralysis but you have the opportunity to iterate on a classic and make it fresh and original, emphasise what you love and minimise what you hate, which is an important product skill regardless of industry. step 1: bring a shortlist of games in that you think meet the criteria. (hint: tetris is not one of those games. it only looks simple. it is a trap for entry level devs.) everyone plays the games. maybe do a breakdown as a workshop of the features those games have, or do one as a worked example and homework the others. step 2: split into an even number of groups to implement the games, in a draft. every group should have a different game. they are encouraged to rope in friends and family to help with graphics, sound and music if that isn't their speed. this should be a limited amount of time, game jam style. step 3: review the games as a group, from both as games and a code review, as a workshop step 4: the kicker. the groups are paired together, the highest ranked group with the lowest, and so on. each group forks their partner's game, and works to produce a more finished version. their final score is 50% the game they started, 50% the game they completed. step 5: public exhibition night. with cocktails and little snacks and everything. set up everyone's games in cabinet-style displays. musical act. presentation of best of show. killer afterparty. thats how you teach people computers
|
# ? Jul 28, 2022 07:36 |
|
absolutely do not make an actual video game with graphics your "teach kids programming" exercise. text adventure games? absolutely. Sprite based games? With sound? No.
|
# ? Jul 28, 2022 07:47 |
|
rotor posted:absolutely do not make an actual video game with graphics your "teach kids programming" exercise. pretty sure uni kids can handle pico-8 rotor they even have a browser-based version here: https://www.pico-8-edu.com, click the bunny to get started
|
# ? Jul 28, 2022 07:50 |
|
rotor posted:absolutely do not make an actual video game with graphics your "teach kids programming" exercise. I had a very memorable assignment in my low level programming course where we did exactly this in C, but only as a small project due after a couple weeks. I made space invaders and it probably made me learn something about memory
|
# ? Jul 28, 2022 08:11 |
|
chaosbreather posted:pretty sure uni kids can handle pico-8 rotor idk man we have people saying they dont know what a file is so i'm not really sure what level we're talking about here but I remain steadfast in my assertion that pushing sprites around and playing sounds is a bridge too far for beginning programming students.
|
# ? Jul 28, 2022 08:32 |
|
rotor posted:idk man we have people saying they dont know what a file is so i'm not really sure what level we're talking about here but I remain steadfast in my assertion that pushing sprites around and playing sounds is a bridge too far for beginning programming students. you click the bunny
|
# ? Jul 28, 2022 08:46 |
|
i don't agree at all with the scare quotes around trade skills with regards to software testing. in that it is obviously a trade skill, absolutely best learned by working with it over a year or two and getting a sense for how to do it well. same goes for a lot of other stuff floating around here, trying to make it something you can make students read a few book chapters on, spend on the far outside 2 weeks doing practical poking at things (at the same time they read the book, starting knowing nothing), and then somehow take a test on, is not going to really get the job done. which is not to say it is a bad thing to learn, as trade skills are obviously not bad, but it is not a good format for learning this kind of thing. the limitations means that you have to pick one way to do it (likely give them a largeish codebase and specific testing setup, fixing all technologies), teach that, but then their shallow understanding of that one thing will be very little help when they invariably wind up touching computers somewhere using an entirely different setup. git is relatively safe as it is prevalent and influential enough to show up everywhere, but for the rest i think it is real hard.
|
# ? Jul 28, 2022 09:27 |
|
make them build something in groups, then shuffle the groups around and get them to add a new feature
|
# ? Jul 28, 2022 13:49 |
|
distortion park posted:make them build something in groups, then shuffle the groups around and get them to add a new feature i doubt there'll be enough time to make something sufficiently complex that they'll learn anything *general* from that though, plus it seems real hard to set any kind of examination for. (to be clear these posts are not meant to be criticism of the learning outcomes intended, but unless the course looks very different to what i am used to it simply isn't a very good vehicle for learning this kind of thing. to the extent companies expect new grads to deal with their test sets and doing revisions to their legacy codebases they probably should press for candidates with some kind of more trade-focused education, or experience)
|
# ? Jul 28, 2022 14:13 |
|
distortion park posted:make them build something in groups, then shuffle the groups around and get them to add a new feature reminds me of something someone told me they do at a french private cs school (42): they give them a project to do and do things like changing requirements overnight on purpose to try and make it as "real" as possible
|
# ? Jul 28, 2022 14:13 |
|
I think we can all agree that you git gud by endlessly drilling the arbitrary “logic” puzzles tech firms ask about in interviews
|
# ? Jul 28, 2022 16:34 |
|
chaosbreather posted:you click the bunny click bunny, receive diploma
|
# ? Jul 28, 2022 16:48 |
|
Zlodo posted:they give them a project to do and do things like changing requirements overnight on purpose to try and make it as "real" as possible do it mid-day by email, then have them revert it in the evening. really go for the "exec got bored after lunch" experience maybe include a new feature that makes no sense, tied to whatever google announced that morning please do not do any of these things to anyone
|
# ? Jul 28, 2022 16:49 |
|
Best Bi Geek Squid posted:I think we can all agree that you git gud by endlessly drilling the arbitrary “logic” puzzles tech firms ask about in interviews I love the idea of getting your first job because your college credentials look good and you interview well, and then you start working and have no idea what a class is or how version control works because tech interviews are a sham
|
# ? Jul 28, 2022 16:54 |
|
Version control, version control, version control. And not just the simple basics, give them weird situations where they have to actually resolve merge conflicts and cherry pick and the like. Much better to learn that in a learning environment than when prod accidentally gets a 6 month out of date commit on it somehow. And basic working knowledge of the command line, doesn't have to be super in depth but you'd be surprised how many people I work with that get deer in headlights if you ask them to just run a powershell script from the command line. Package manager knowledge is probably also good to know but might not be covered much by your standard Java based curriculum.
|
# ? Jul 28, 2022 17:08 |
|
please somebody teach them how to write code that deploys cleanly without me having to chase down a bunch of dependencies they didn't know they were relying on
|
# ? Jul 28, 2022 17:12 |
|
InternetOfTwinks posted:Version control, version control, version control. And not just the simple basics, give them weird situations where they have to actually resolve merge conflicts and cherry pick and the like. Much better to learn that in a learning environment than when prod accidentally gets a 6 month out of date commit on it somehow. And basic working knowledge of the command line, doesn't have to be super in depth but you'd be surprised how many people I work with that get deer in headlights if you ask them to just run a powershell script from the command line. Package manager knowledge is probably also good to know but might not be covered much by your standard Java based curriculum. "package manager knowledge"? like, is there a single bit of information in that which generalizes beyond the particular package manager the course picks? like, list a couple useful concepts or ideas which all package managers have in common. whatever particular thing they look at is as likely as not out of date by the time they're in a job.
|
# ? Jul 28, 2022 17:15 |
|
|
# ? Jul 28, 2022 17:16 |
|
rotor posted:
yeah, see, now these are robust generalizable skills
|
# ? Jul 28, 2022 17:18 |
|
Cybernetic Vermin posted:"package manager knowledge"? like, is there a single bit of information in that which generalizes beyond the particular package manager the course picks? Yeah pretty much that, you'd be surprised what people never pick up in school. That and the general idea behind inspecting your dependency chain and versioning and such, why you would want to freeze your dependencies in production and the like.
|
# ? Jul 28, 2022 17:32 |
|
InternetOfTwinks posted:Yeah pretty much that, you'd be surprised what people never pick up in school. That and the general idea behind inspecting your dependency chain and versioning and such, why you would want to freeze your dependencies in production and the like. pretty much what? lets say we spend 4 lectures and one lab (say 12 hours of work) on learning the cabal+hackage, what would you put as the learning outcome potentially useful for a job at your place? how do you set an exam for those outcomes? haskell here as a standin obviously, but whatever they learn will obviously be the wrong thing for 90% of jobs (and in 10 years probably for 99% of jobs), so there has to be *some* general idea or concept to it.
|
# ? Jul 28, 2022 17:38 |
|
Cybernetic Vermin posted:pretty much what? lets say we spend 4 lectures and one lab (say 12 hours of work) on learning the cabal+hackage, what would you put as the learning outcome potentially useful for a job at your place? how do you set an exam for those outcomes? Oh sorry, I completely misread your post. I guess I mean like, how to judge if a package is trustworthy based on usage, best practices for analyzing whether it's worthwhile to bring in a package, checking to see whether it's actively maintained, critical thinking around using your package manager. Can you tell I have to work with npm a lot?
|
# ? Jul 28, 2022 17:43 |
|
Cybernetic Vermin posted:whatever particular thing they look at is as likely as not out of date by the time they're in a job. This applies to almost everything beyond basic computer architecture concepts and I definitely agree that any approach should de-emphasize learning a specific package manager, language, etc. In my very first programming course, we were tested on memorizing the java swing library. Pencil on paper, and if you don't remember the method names or how the gently caress "glue" works it's points off. "Best public computer science program in the country" btw
|
# ? Jul 28, 2022 17:44 |
|
i'll also note that while i sound defensive here i am (by extreme coincidence) supposed to design a new second-year cs course to replace a garbage app programming project course (which is going away precisely because too much student time gets spent dealing with always irrelevant technology). the plan is something in algorithmics and problem solving, partly indeed doing leetcode style problem solving with lectures related to the techniques and algorithms involved, but that's only like half the course, second half tbd. however, in addition to not wanting to spend significant time on any particular technology it is also real dubious to spend time on best practices outside what software engineering as a research discipline can cover. and the reason is not really "this is a university course so everything has to be research-focused and pure, trade skills are beneath us", but rather because "this is a university course so it will be taught by professors otherwise doing research, who cannot be trusted to state best practices with any authority". and, i mean, that part is not going to change. a university is a place of learning based on the lecturing of research professionals, not industry professionals. and while that's often not a good thing, you're unlikely to improve anything by pretending different.
|
# ? Jul 28, 2022 18:04 |
|
Thanks to everyone for the feedback. Too much to respond to individually, but I'm taking notes throughout. Tempora Mutantur posted:
This is a really excellent list. Thanks. chaosbreather posted:the best way to teach anyone programming (or maths) is by having them make a video game. it requires absolutely everything and is its own self-motivator, with massive scope for self expression both artistically and technically. This sounds cool, but have you actually done it? It sounds likely to have a high fatality rate, but be very educational for the survivors. In any case, not a match for what may be their first programming course ever (if they did CS AP). Cybernetic Vermin posted:i don't agree at all with the scare quotes around trade skills with regards to software testing. in that it is obviously a trade skill, absolutely best learned by working with it over a year or two and getting a sense for how to do it well. same goes for a lot of other stuff floating around here, trying to make it something you can make students read a few book chapters on, spend on the far outside 2 weeks doing practical poking at things (at the same time they read the book, starting knowing nothing), and then somehow take a test on, is not going to really get the job done. I get what you're saying. I don't expect to create deep proficiency in this one course, but exposure will at least let them know it's a thing they could learn more about. I partway agree with the assessment earlier -- that self motivation is the biggest key. That said, I've seen a lot of sharp, self-motivated students with blind spots that you guys would consider crazy. Things like "how are memory and storage different?", "you can install your own OS?", "you can upgrade/replace hardware in a computer?", "you can use any editor you want?", "I never thought about automating this incredibly automatable task", etc. The later courses cover the theory well, but a gap has opened up between what was assumed knowledge 20 years ago and now, and that's what I'm trying to fill. These are motivated kids, but if you grew up with no computer people in your life and you just follow what the Microsoft/Apple/Google mindset of being a consumer of the computer rather than the owner, then you're going to miss some basics.
|
# ? Jul 28, 2022 21:10 |
|
rotor posted:
bagel crimes and how to avoid them
|
# ? Jul 28, 2022 21:42 |
|
we did this thing during my degree called the ‘personal software process’ which did a pretty good job of breaking the mindset of hack/run hack/run. we did a bunch of stuff recording how long it took, then we forced ourselves to take a minute or so to review what we’d just written instead of immediately trying to run or compile it. it was quite striking how much more productive it was to do that rather than just hack away at poo poo
|
# ? Jul 29, 2022 09:46 |
|
also i think web programming is a better way to get to actually making poo poo if you focus on just demonstrating how a server listens on a port, interprets a request, and sends a response. there’s a lot of useful concepts baked into that and the students don’t need to fart around too much on tedious finicky poo poo if you just build a simple API or whatever rather than an actual web app
|
# ? Jul 29, 2022 09:49 |
I wouldn;t show them your posts, op
|
|
# ? Jul 29, 2022 15:11 |
|
Archduke Frantz Fanon posted:bagel crimes and how to avoid them how to get the everything bagel with the good cream cheese without arriving first in the office
|
# ? Jul 29, 2022 18:16 |
|
rotor posted:you could make a deece lil class out of the basics of git, bash, dns, pki, sql, html & http and itd go a long way to prepare them for the debased life of a working programmer You can probably incorporate into some kind of small project. If this is an upperclassman course they can probably put it on their resume. Don't know how impressive this is on a resume but it will probably give them some direction for what things will be like at work.
|
# ? Jul 29, 2022 19:07 |
|
buy each of them a sa account and have them post here only the strongest will survive
|
# ? Jul 29, 2022 19:29 |
|
|
# ? May 3, 2024 20:12 |
|
thought about it a bit and actually testing is probably the easiest useful thing to add to an algorithmics course. learning outcomes derived from the reasonably well-defined concepts of unit tests, functional tests, fuzzing, and coverage. no need to dictate a technology, even if they ad-hoc it those concepts are relevant to the context and fairly well-defined. meanwhile ive found more and more problems with messing with git.
|
# ? Jul 29, 2022 19:41 |