TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: It's 2022. Where should I direct the youths to learn about programming?

203 pointsby slyrusabout 3 years ago
So... Child #2 (18 yo) is interested in learning programming. Good &quot;with computers&quot; and proficient in level-appropriate math but didn&#x27;t grow up as a hacker like his old man (I&#x27;ll refrain from making him learn turtle graphics and BASIC). Where should I point the kid to learn the basics?<p>I&#x27;m afraid that if I show him how to download (or, better yet, build) emacs, how to build SBCL, install SLIME, etc... and hand the kid copies of SICL and PCL someone will call child protective services on me. I imagine there was a time when the answer would have been java&#x2F;awt, but those days seem long gone. Maybe there was a let&#x27;s do it all in javascript phase, but that doesn&#x27;t seem to be the answer today.<p>So... modern starter pack? VS Code and Python? Tell him to learn Pandas&#x2F;SciPy&#x2F;NumPy?<p>Are there any highly recommended online courses for learning this stuff?

104 comments

albertzeyerabout 3 years ago
I usually recommend everyone who wants to learn programming:<p>- to write some games,<p>- or alternative to write some tools to be used for themselves to automate or simplify some of their tasks.<p>Writing games can be so much fun, and is incredibly deep such that you can pretty much touch upon all topics of programming, networking, computer science, algorithms and data structures, artificial intelligence, 3D graphics, GPU programming, low level programming, multi threading, etc. But also, you can start very shallowly and simply.<p>Writing tools gives you the feeling how useful and productive this can be.<p>What languages to use depends a bit on taste, background knowledge, and how steep the learning curve can be. I think Python is a good general purpose starting language.<p>Also, in any case, you should start actively coding right away. I know people who wanted to learn programming but just kept reading books and watching tutorial videos all the time while not really trying it out, and in the end they obviously did never really learn it. You need to have projects, or just random playgrounds. Also, don&#x27;t start with a big project right away. Do many small projects. Play around.
评论 #31211317 未加载
评论 #31212840 未加载
评论 #31210974 未加载
评论 #31213348 未加载
评论 #31213984 未加载
评论 #31211013 未加载
评论 #31213168 未加载
评论 #31210861 未加载
mkeedlingerabout 3 years ago
I can&#x27;t believe <a href="https:&#x2F;&#x2F;futurecoder.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;futurecoder.io&#x2F;</a> hasn&#x27;t been mentioned!<p>It has an integrated Python environment in the browser, so the learner can hop right in! That&#x27;s not even the best part though; I love how well simple concepts are explained. I&#x27;ve been programming for a long time, so there are a lot of things that I forgot aren&#x27;t a given. futurecoder explains those things really well.<p>I really cannot recommend it enough! It is a bit pricey though.. JK it&#x27;s FREE! They don&#x27;t push it a lot, but they do have an opencollective if you should feel so inclined to donate [0]. I&#x27;m not affiliated; just a relative of someone who benefited.<p>[0] <a href="https:&#x2F;&#x2F;opencollective.com&#x2F;futurecoder" rel="nofollow">https:&#x2F;&#x2F;opencollective.com&#x2F;futurecoder</a>
评论 #31213279 未加载
_fjb4about 3 years ago
There&#x27;s something the &quot;old hackers&quot; know that many CS students don&#x27;t learn from the start (in the introductory classes), and that is actually how a computer operates. Don&#x27;t spend a lot of time on this unless he&#x27;s really interested, but it&#x27;s a good idea to sit down with him for a few hours and teach him what really goes on inside a computer.<p>I&#x27;m talking about the concept of instructions, registers, addressable memory, etc. - with block diagrams, not with full circuits unless he&#x27;s into that kind of stuff.<p>Then when he moves onto one of the high level languages that the other commenters are talking about the concepts will naturally stick. E.g. a variable is stored in memory, when we add two variables in the HLL we are copying those values to registers and using an ADD instruction, then we are writing the result back to memory. When there is an IF statement the computer will jump to either block of code depending on the conditional operation. Pointers become intuitive. And so on.<p>I&#x27;ve explained this to laymen and people who are interested in computers and have gotten a pretty positive reaction from them - so it&#x27;s worth a shot. For a programmer who generally focuses on HLL it also allows them to get some idea of how their code is executed in the real world under all that abstraction.
评论 #31211394 未加载
评论 #31211581 未加载
评论 #31211150 未加载
评论 #31212603 未加载
评论 #31211278 未加载
评论 #31213278 未加载
redredrobotabout 3 years ago
Python is a great option because it is high-level, easy to pick up, powerful and has a library for anything they are interested in pursuing. Something like streamlit is cool because you can write a small amount of code to build a useful web app that you can interact with. For data viz related things, Jupyter + Python (maybe Pandas, not SciPy or NumPy unless that sort of math is specifically interesting to them)<p>Javascript and webdev is also a decent option since you can build such interesting and shareable web apps quickly, but the frameworks and scaffolding can be intimidating and painful.<p>I would work backwards from a project&#x2F;interest and pick a high-level language where it&#x27;s easy to get a good enough solution and create something that feels like an accomplishment. I would want to teach both programming as well as the joy of programming.
评论 #31211994 未加载
评论 #31214061 未加载
评论 #31214063 未加载
arturhooabout 3 years ago
I highly recommend Processing and The Coding Train [0]. The visual feedback is both engaging and illuminating to folks who have no prior experience with procedures or spreadsheets.<p>[0] <a href="https:&#x2F;&#x2F;youtube.com&#x2F;c&#x2F;TheCodingTrain" rel="nofollow">https:&#x2F;&#x2F;youtube.com&#x2F;c&#x2F;TheCodingTrain</a>
评论 #31211225 未加载
SCUSKUabout 3 years ago
Speaking from own personal experience, I tried to learn programming by buying a book on Ruby on Rails in 9th grade, as well as Visual Basic. Obviously it didn&#x27;t stick. I programmed turtles in middle school, and took a intro to CS class in high school.<p>But what really did it for me was buying an Arduino Starter Kit and working through the example projects in that book. I was a freshman in college and $100 was a lot of money for me but I told myself it was an investment in myself, and boy was I right. It was also immensely fun because you get to also interact with a physical object (circuits, buttons, etc) whereas most software is on a screen.<p>I would highly recommend Arduino or Raspberry Pi :) Best of luck!
khadgar25about 3 years ago
Perhaps approaching from the point of view of programming as a means to end might be helpful? If they have any hobbies or academic projects that could benefit from automation or using computers, that might be a good starting point?<p>For example, when I started studying engineering, it was great to see solutions of differential equations and ways to solve them on computers. Others have suggested games which could be great if they enjoy gaming and want to know more behind the scenes. Basically my approach would be to find a problem or two and use programming to show that computers can do wonderful things once we learn how to interact with them in various ways.
评论 #31210490 未加载
taurathabout 3 years ago
&gt; Maybe there was a let&#x27;s do it all in javascript phase, but that doesn&#x27;t seem to be the answer today.<p>Whats the child&#x27;s actual goal though? Is it to be able to gain a useful workplace skill that will actually provide financial support for their lives (something that their peers who don&#x27;t end up in tech will struggle with heavily)? If so web dev is honestly a really good path, and quite useful, and will touch on things they already know.<p>If they&#x27;re a gamer see if they can make some mods - minecraft is good for it, but the best one is something they&#x27;re already into.<p>If they care deeply about some world issue like say climate change, try to have him make some visualizations and do some data science on climate data to understand whats going on.<p>What you do with coding is imo a bit more important than how you code. Does the kid want to take apart toasters and put them back together again? What actually motivates them?
davepeckabout 3 years ago
(NB: Since your son is 18 this probably doesn&#x27;t apply, but I&#x27;ll comment here in case it&#x27;s useful for others with younger children.)<p>My 7 year old has gotten into programming through her iPad.<p>In particular, she uses:<p><pre><code> - Tynker - code.org - Swift Playgrounds </code></pre> All three have well-considered tutorial material. Tynker is the one she&#x27;s most excited about, and the one she&#x27;s currently spending the most time in. Some of the stuff she&#x27;s cooked up without any help from her dad... really brings a smile to my face.<p>I&#x27;m old enough to have learned programming on a C64 -- BASIC first, then 6510. Back then, the game was to understand the machine and figure out how you could coax it to do new things. Today, so much programming feels like stringing together black (or at least dark gray) boxes, and hoping that the resulting value is greater than the mental overhead of managing said boxes.<p>Tynker&#x2F;code.org&#x2F;Swift Playgrounds hearken back to the immediacy and narrowness that I loved from the old C64 days. My daughter seems to genuinely be learning from them. That moment when she really &quot;got&quot; variables and loops... big moment!
评论 #31211723 未加载
jay_kyburzabout 3 years ago
Unity.<p>It&#x27;s &quot;cool&quot; and relevant.<p>The coding part is C# so a nice language and environment.<p>You don&#x27;t really need to understand all the low level stuff, you can write some scripts and just press play!<p>There are heaps of official and community tutorials. API Quite well documented too.<p>Its not just code. There is a big editor to learn and become good at. Your kids may decided they like other aspects. Modeling, Lighting, Effects, Audio, UI, VR even?<p>I think there is plenty of Unity employment around, not just in games but all kinds of &quot;multi media&quot; businesses.<p>Jay
评论 #31213226 未加载
Snowwormabout 3 years ago
I&#x27;d definitely recommend freecodecamp for learning whatever language you&#x27;d like to get him started with. After watching one of their tutorial videos, your son could have a look at other videos for the particular language if there&#x27;s something in particular he&#x27;d like to do.<p>Python is great for beginners, it&#x27;s usually the first language taught in schools.<p>Web development is also really easy and rewarding, which makes it a particularly good route to get someone started in programming. Just remember to guide him through JavaScript libraries after learning html, CSS and JavaScript. When I first started learning web dev, I didn&#x27;t know about frameworks like react and angular which caused me to waste a lot of time rewriting things which could have been made as react components. It was a lot more difficult to maintain the website I already made at that point.<p>Like you said replying to someone else&#x27;s comment, game development is good for getting into programming. Although, make sure he is aware of the other routes, as game development isn&#x27;t always the best career path even though it might sound fun at first.<p>Finally, let him make choices. You shouldn&#x27;t have to decide everything for him, it&#x27;s a good skill as a programmer to be able to look things up yourself. Maybe ask your son to find out what he would prefer to do, although if you already have some experience, of course let him know if there&#x27;s anything that could help him get started in programming quicker.<p>Enjoy the rest of your day!
mynameismonabout 3 years ago
Speaking as a 17 year old myself, the way I got into programming was automating. It could be small things, like breaking open a slow dreary web portal and download off things that one might need so as to avoid interacting with the portal, or help out a local business with some repetitive tasks, whatever floats their boat. After they have gotten a hang of it, I would probably have a gentle introduction to the SICP, but thats maybe just me.
评论 #31213174 未加载
osenerabout 3 years ago
The book ”Automate the Boring Stuff with Python” [1] and the course with the same name is a pretty good.<p>It is a practical introduction to programming using the type of projects that got many of us into this field and manages to capture the spirit of what makes writing your first program so special.<p>[1] <a href="https:&#x2F;&#x2F;automatetheboringstuff.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;automatetheboringstuff.com&#x2F;</a>
chaostheoryabout 3 years ago
Roblox. Everything is free including a nice visual IDE. There&#x27;s lots of documentation and lots of 3rd party education. It&#x27;s LUA. Best of all, unlike all the other alternatives, there&#x27;s no configuration or setup beyond installing Roblox and Roblox Studio, the IDE. There&#x27;s also a chance to make money on the Roblox platform.<p><a href="https:&#x2F;&#x2F;developer.roblox.com&#x2F;en-us&#x2F;onboarding" rel="nofollow">https:&#x2F;&#x2F;developer.roblox.com&#x2F;en-us&#x2F;onboarding</a><p>If you want something more traditional, Rails for Zombies is good<p><a href="https:&#x2F;&#x2F;www.pluralsight.com&#x2F;courses&#x2F;code-school-rails-for-zombies" rel="nofollow">https:&#x2F;&#x2F;www.pluralsight.com&#x2F;courses&#x2F;code-school-rails-for-zo...</a><p>Oreilly&#x27;s Head First series would be great too, if they updated it. Hopefully I&#x27;m wrong, but I think it&#x27;s dead.
评论 #31213467 未加载
smiley1437about 3 years ago
Harvard&#x27;s CS50x (taken through edX) is absolutely amazing as an intro to computer science. Professor David Malan is really engaging.<p>I cannot recommend it highly enough.<p>And, if you don&#x27;t care for the certificate at the end of the course, it&#x27;s free
评论 #31213459 未加载
评论 #31213086 未加载
sthu11182about 3 years ago
If he was younger, I would have recommended scratch. I recommended that to my then 11-year old cousin and he is now an engineering undergrad student.<p>At your son&#x27;s age, there are plenty of how to program python courses using udemy and the like that show to build progressively harder apps for a complete beginner. From there, he could probably try to do one of those google certificate courses on android development or the like.<p>I remember having to check out BASIC programming books from the library as a kid to learn. These days, people have made fortunes on creating videos on how to program.
评论 #31210852 未加载
sporklabout 3 years ago
I personally would recommend How to Design Programs[0] as a starting point, then whatever technologies are best-suited for particular interests after that<p>[0]: <a href="http:&#x2F;&#x2F;htdp.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;htdp.org&#x2F;</a><p>I&#x27;m guilty of this, but it&#x27;s far to easy to spend too much time jumping between different technologies and programming languages and only learning the basics. So it&#x27;s nice to have a concrete project in mind, so you can choose an established tool for that kind of project and not get lost with anything else until the project is done.
评论 #31212754 未加载
downrightmikeabout 3 years ago
Local community college. Hands on help and smaller class sizes. VS code and code runner plugin will run just about everything. Maybe also a subscription to pluralsight or oreilly&#x27;s online catalog safari.
catsarebetterabout 3 years ago
Do you know what he wants to build?<p>Probably has lots of different things that he wants to learn so help him explore each.<p>Python for command line stuff and backend stuff, vanilla JS, html, css for blogs or web pages.<p>There&#x27;s also either online classes like Udemy or in person camps or summer programs that would be great, he can meet ppl his own age trying to code too.<p>I know a few years back iOS coding classes were the rage, now it&#x27;ll probably be something with blockchain...<p>In terms of code editor maybe just sublime or atom, no need to go super complicated, he&#x27;ll figure out what he needs as he builds expertise.
评论 #31210742 未加载
guessbestabout 3 years ago
Rather than making him learn a language to build a simple, possibly tedious tool, let him figure out how the &quot;social&quot; side of the tech sector works by allowing to tool makers to explain the tools. There are lists like this on github. He doesn&#x27;t have to be a computer hacker to get in to the industry.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;bayandin&#x2F;awesome-awesomeness" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;bayandin&#x2F;awesome-awesomeness</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;sindresorhus&#x2F;awesome" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sindresorhus&#x2F;awesome</a><p>Also, there is always nocode&#x2F;lowcode solutions he can put together.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;kairichard&#x2F;awesome-nocode-lowcode" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;kairichard&#x2F;awesome-nocode-lowcode</a>
sphabout 3 years ago
I suggest Racket to start with. Maybe Ruby later, something fun and flexible to experiment in. Python if it looks like they might actually want to develop it into a skill or a career.<p>Starting with (modern) JS will turn off pretty much anybody, but probably one of the first things they&#x27;ll want to learn is how to make a website. Fun JS like game engines might be a good fit.<p>Python is too magic to start with. It can get pretty complex to follow and debugging a pain.<p>I would also consider Godot. It&#x27;s fun and intuitive, syntax is not hard, game logic can be complex but it&#x27;s closer to the maths they&#x27;ve been studying in school and creating something you can interact and play with is how you get students excited and eager to learn more.
sathish316about 3 years ago
Think Python or what used to be called “How to think like a Computer scientist” is still one of the best beginner programming books IMHO. There is an edition which is upgraded to Python 3 which you can find here - <a href="https:&#x2F;&#x2F;greenteapress.com&#x2F;wp&#x2F;think-python-2e&#x2F;" rel="nofollow">https:&#x2F;&#x2F;greenteapress.com&#x2F;wp&#x2F;think-python-2e&#x2F;</a>
TheGrkIntrprtrabout 3 years ago
I took CPSC 110 at UBC with Gregor Kiczales (who worked at Xerox PARC). It was the best course I’ve ever taken.<p>The course can also be completed for free: <a href="https:&#x2F;&#x2F;www.edx.org&#x2F;bio&#x2F;gregor-kiczales" rel="nofollow">https:&#x2F;&#x2F;www.edx.org&#x2F;bio&#x2F;gregor-kiczales</a><p>How to code - simple data, and how to code - complex data together make up the material in CPSC 110 (though there are probably some differences). They’re completely accessible with no background requirements.<p>The courses are based on this curriculum, which uses HTDP: <a href="https:&#x2F;&#x2F;programbydesign.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;programbydesign.org&#x2F;</a><p>The programming language used is based on scheme.
评论 #31254391 未加载
zelphirkaltabout 3 years ago
I would still call this an SICP case. SICP simply teaches so many things right, that I would deem it the single most important book on programming I read. I still draw from that and it helps me avoid cludgy mistake prone code. The only regret is, that no one has told me about it earlier. The original SICP using Scheme is to be preferred over the &quot;reimplementations&quot; in languages, which lack some of the important language features, that the book hits on and that Scheme has. Maybe also link to the recorded lectures, to give an idea about what great teachers look like.
omarhaneefabout 3 years ago
As many others have pointed out, something relevant like games is a good starting point.<p>On your main question about how to make the (now painful) dev environment setup easier I have some suggestions:<p>1. Just use javascript<p>2. Just use python&#x2F;pygames (yes it has to be installed)<p>3. Just use a hosted environment (like replit.com)<p>4. Just use swift if you are a mac user
mattlondonabout 3 years ago
I think the important thing is to focus on the end objective - so not programming just for the sake of programming, but programming as a means to do something else.<p>Start with an interpreted language that doesn&#x27;t require convoluted compilation or build-steps. Or at the very least something with a &quot;play button&quot; that allows one-click runs. Anything else just distracts and confuses from the actual &quot;programming&quot; part.<p>I&#x27;ll echo others and say building games is a good on-ramp for kids. I also recall enjoying playing around in Visual Basic as I could make a &quot;real application&quot; and it was satisfying to see my work as a &quot;real&quot; program I could see and use, and try to work out how to imitate other features I was seeing in apps I used every day.<p>As yours is 18 something like scratch is probably too &quot;baby-ish&quot; so perhaps python will feel like more of a grown up option for them with the option to do some fun stuff with game&#x2F;graphic programming. Visual Basic .net (or even C#) will allow for building GUI apps nicely.<p>If they enjoy those they&#x27;ll be able to broaden their horizons and learn more. Don&#x27;t sweat the theory aspects - they <i>don&#x27;t</i> need to know about runtime complexity and monads etc just to get started - if they get the bug for coding, they&#x27;ll come across this stuff on their own eventually (e.g. when they end up creating a naive O(n^n) implementation, they&#x27;ll end up spending some time trying to optimise it even if they don&#x27;t realise they are doing that - be there to help guide and offer pointers to help open their eyes to it all)<p>Good luck
MarcScottabout 3 years ago
We wrote a fairly simple introduction to using Unity, which might be worth a shot. <a href="https:&#x2F;&#x2F;projects.raspberrypi.org&#x2F;en&#x2F;pathways&#x2F;unity-intro" rel="nofollow">https:&#x2F;&#x2F;projects.raspberrypi.org&#x2F;en&#x2F;pathways&#x2F;unity-intro</a><p>The first three projects introduce the skills. The second two give you some agency in decisions. The last lets you make whatever you want to make
dmarcosabout 3 years ago
A-Frame (<a href="https:&#x2F;&#x2F;aframe.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;aframe.io&#x2F;</a>) + glitch (<a href="https:&#x2F;&#x2F;glitch.com&#x2F;~aframe" rel="nofollow">https:&#x2F;&#x2F;glitch.com&#x2F;~aframe</a>)<p>Code interactive 3D apps &#x2F; VR &#x2F; AR starting with HTML and dive into the entity &#x2F; component API as you progress. Super rewarding to get something visual than can be shared with an URL to show off or ask for help.<p>With glitch one can start coding right away with zero tooling to install no account required. Glitch doesn’t hide details and knowledge transfers directly if one wants to start developing locally.<p>I recommend also the A-Frame docs as learning material:<p><a href="https:&#x2F;&#x2F;aframe.io&#x2F;docs&#x2F;1.3.0&#x2F;introduction&#x2F;" rel="nofollow">https:&#x2F;&#x2F;aframe.io&#x2F;docs&#x2F;1.3.0&#x2F;introduction&#x2F;</a><p>I help maintain A-Frame and seen plenty of success with people learning how to code while having fun. Also advanced capabilities available as you learn. Very accessible but not just a toy.<p>Very welcoming community.<p>edit: typos
kwhitefootabout 3 years ago
You should probably try to figure out what sort of programming problem would interest him. That will narrow the field because the libraries needed are not available for all languages or hardware.<p>Is he interested in making websites, games, AI, embedded control of robots (drones, vacuum cleaners, etc).<p>Without a goal in mind learning about programming, for most people, is a sterile exercise.
danamitabout 3 years ago
Bait him with something, if he is into game introduce him in Lua. I got into programming because I was into websites, and I&#x27;ve met a friend who&#x27;s into design and I did programming and he did design.<p>My nephew is interested in making games for Roblox for example.<p>I think we are beyond the generation of interest in the baremetal, I learned programming in mid 2000s, I spent just a short time with desktop programs, but was enchanted by the idea of making dynamic websites right after, it was enchanting that I can make something interactive that all the world can interact with. The fact that it was easy to show it to others (a URL) made it nice too, handing people an .exe in 2000s doesn&#x27;t look nice.<p>Also being passionate in front of him and talking about what you like in programming would help, because that&#x27;s how my brother got into it. Me broxplaining stuff to him.<p>In general just open the doors for him, he might love a language more than other.
AnimalMuppetabout 3 years ago
The thing about BASIC was that you could just <i>do</i> something. You could try things easily and quickly. You could fiddle with things.<p>Of current environments, Python may come the closest. (Other environments have a REPL, which is a great environment, but &quot;REPL + harsher learning curve&quot; is not what you&#x27;re looking for.)
tayo42about 3 years ago
Just use Javascript and make some games with canvas or something. It&#x27;s pretty fun, you can iterate fast and web based things are easy to share so your kid can show all their friends their cool stuff. Then if you need to torture your self you can learn how to serve websites with Linux and web servers
Shared404about 3 years ago
&gt; I&#x27;m afraid that if I show him how to download (or, better yet, build) emacs, how to build SBCL, install SLIME, etc... and hand the kid copies of SICL and PCL someone will call child protective services on me.<p>Fwiw, I&#x27;m only a couple years older than #2, and I would kill to have someone in meatspace who would help me with all of the above.<p>As far as other options, I would say Pico-8, tic80, UXN, Minetest&#x2F;Minecraft, Godot, or Unity may all be decent options to start with, depending on how in depth you want to go.<p>Oh, also I really really really <i>really</i> like the book The Secret life of Programs. In my opinion, it really is worth learning how the layer below where you&#x27;re working works.
Mikeb85about 3 years ago
Godot (with GDScript). JS + a browser. C++ and an IDE like Gnome Builder or QtCreator. Ruby and Rails. Ruby and command line.
评论 #31211620 未加载
adverblyabout 3 years ago
I&#x27;d throw everything at them and see what sticks. Try web, gaming, hardware, ML, puzzles... find a place of passion and grow out from there.<p>Try to give them a tour of what can be done in each domain, and see what they&#x27;d like to try.
评论 #31211345 未加载
belkarxabout 3 years ago
Make him install an easy Linux distro (I recommend LMDE). Give him an IDE (start with VScode, if he enjoys Linux he&#x27;ll switch to vim&#x2F;emacs soon enough), some Leetcode problems, a browser, and have him figure it out. Advise him on compiling if his language of choice* requires it, as it&#x27;s a pain to figure out when you don&#x27;t know anything about programming. Should probably also find a basic syntax guide on the language.<p>*This really depends on his goals. AI&#x2F;general scripting -&gt; python. Sysadmin -&gt; C&#x2F;Perl. Games -&gt; C#&#x2F;Java if Minecraft. Etc.
AussieWog93about 3 years ago
&gt;point the kid to<p>&gt;Tell him to learn<p>&gt;online courses<p>You&#x27;re their mum&#x2F;dad, no? You know their interests, you know their abilities. This is an amazing opportunity to form a lifelong bond. Sit down with them and work it out together!
exdsqabout 3 years ago
I&#x27;d suggest picking something relevant to the things he&#x27;s already interested in like modding video games. Obviously this is personal to us all but I learn best building things, and I&#x27;m most likely to stick to building things I&#x27;m interested in.<p>SICP is great for those who want to learn more about programming <i>after</i> they have some experience programming. If someone gave me that book as my first one I think I&#x27;d have picked a different career field, even though I am now - 8 years later - working through it :)
ybbondabout 3 years ago
I always recommend my relatives or friends that interested in coding to learn React and make their own website which contains some logic.<p>Apart from npm and yarn, they need not install any other tool or builder. Also they can see the results in near real time.<p>I think the ability to see the result of what they code right-away will keep their interest for the &#x27;fragile and prone-to-stress phase&#x27;. Proven my architect older brother and 2 of my friends continue to make website and learn other webtools or language till now.
ilakshabout 3 years ago
There is nothing wrong with BASIC or turtle graphics. Those would probably be awesome places to start at least for a few sessions. Google for online turtle graphics or basic or emulators.<p>The main thing is that he finds something that is interesting and approachable. Build up small achievements. Let him start with simple examples and then figure out how to change colors or the number of iterations in a loop. Don&#x27;t rush too many things at once. Some things that seem simple like recursion may actually take a bit of time to grasp solidly. Encourage him to be patient and persistent and expect challenges like that.<p>Don&#x27;t try to pile on too many things at once.<p>Dictating which language etc. is not going to help him learn programming.<p>He needs to be motivated by something and generating his own questions and Google searches.<p>If he is waiting for you to tell him what to do then your job is to train him to be a proactive learner. Help him find interesting mini projects. Start very simple. But keep trying to build gradually towards something he is really interested in (such as game programming etc.).<p>No reason it has to be one thing. If you want to hand hold it could be literally 100 different things to play with, show him a different thing every week based on his actual progression and interests.
评论 #31214033 未加载
Xavdidtheshadowabout 3 years ago
As another commenter notes, programming with a specific goal in mind is a good way to start. People can&#x27;t sit down and learn &quot;math&quot;, it&#x27;s too broad a subject. Instead, you sit down and learn how to do a specific task (solve for x in an equation) and build from there. A lot of younger engineers today learned things like HTML&#x2F;CSS&#x2F;JS to customize&#x2F;exploit Neopets and Myspace. It&#x27;s not that they were interested in programming, they just wanted a result and figured out how to make it happen.<p>So to that end, I&#x27;d probably start with a project-oriented book, or give them tasks that require programming to solve (e.g. tell me the distribution of words in this Shakespeare play. What are the most common ones?).<p>Editor wise, VSCode is great, but may be too many bells and whistles. Sublime Text may be a better place to start, since it&#x27;ll do highlighting, formatting, etc without being overwhelming.<p>Language wise, Python, JS, and Ruby all have ample beginner resources. Depending on what else they&#x27;re into, JS is probably the most widely useful (since it&#x27;s on most web pages and the sandbox is built right into the browser).<p>Good luck! Let us know how it goes!
TT-392about 3 years ago
I tried getting into programming as a kid, but I never really got to a point where I was having fun, printing stuff into a terminal just isn&#x27;t really... engaging, and gui stuff looked complicated. One day I bought a kit with electronics which had an arduino in it. And when I decided to try that thing out, I found out you can make stuff happen in the real world with code. So ye, arduino, that is what worked for me.
sidibeabout 3 years ago
To diverge a little from most of the answers which are about making games or something useful, I had trouble getting going on ANYTHING with that advice. I think I only started actually coding when I looked at projecteuler.com just because the problems started so contained and achievable. Before that I only tried to read a book and copied the code from that (this was a dead end for me). I realize some people hate this kind of exercise or find it boring and a grind, but for some people it is actually fun and if that&#x27;s the case they should really take advantage of it getting started.<p>These days there&#x27;s plenty of sites like leetcode where you don&#x27;t have to set up anything at all and they can give you little bite-size problems that will make you learn the basics with a feeling of accomplishment.<p>Incidentally, if they decide they like these kinds of problems and want to become a professional programmer, spending some time on Leetcode or codeforces (later as it requires a little setup) alone can get them a good job these days. People around here dislike this fact but it is so useful if it turns out your child enjoys these kinds of problems.
harikbabout 3 years ago
I will tag along here - with some details on my experience as well as looking for better answers.<p>Things like Scratch, Python+Pygames etc make the initial hello-world style apps too easy and then there is a gigantic learning curve for anything better. It is very hard to keep the motivation going.<p>We tried codehs.com . Kids spend an excruciating amount of time trying to make the print statement&#x27;s literal output match with whatever the code-checker is expecting. It is frustrating even for me to try to debug their code. I feel any kid who is learning coding without an IDE such as VsCode will get discouraged from this field.<p>I am just about to start a session for 8th grade graduates to introduce them to &#x27;advent of code&#x27;. At least here, the right answer is just a number. No more worrying about the quote character being in unicode or text.<p>The one that got real interest from my students was a world-puzzle solver - to cheat the phone game &quot;LetterPress&quot; (free on iPhone and Android). They finally understood how a bot (official bot that you play against) could be so smart.<p>I am still on the lookout for such good examples that they can actually use in real life.
logicalmonsterabout 3 years ago
Perhaps looking into some game engine might be a fun thing for a young person? Phaser.io or Love2d or something along those lines.
评论 #31210043 未加载
giantg2about 3 years ago
I think I&#x27;ll go against the advice of others here.<p>I would first start him on some guided C++ projects that illustrate basic syntax, data structures, explain libraries, pointer, how memory works, etc. I wouldn&#x27;t spend a lot of time here. Some simple but neat console games that also showcase some math coolness (like guess a number between 1-100, then say you can guess it in 7 or fewer guesses).<p>This is how I learned, and was very helpful in understanding some of the why and how of programming. This gave me a deeper understanding of what was going on when I was introduced to easier languages. It also gave me enough understanding to ask how things worked in the easier languages.<p>After that brief learning period, then I would put him Python. There are lots of powerful libraries and it&#x27;s easier to build more advance projects. There is also great support for physical stuff like Pi hats if he wants to so robotics, sensors, etc.
评论 #31212245 未加载
评论 #31214181 未加载
bluenose69about 3 years ago
You didn&#x27;t say anything about the boy&#x27;s interests. That&#x27;s what matters most. A lot of young people (and older ones!) find tinkering arduinos to be a lot of fun, either making robot-type devices or making sensors to monitor the environment. Others like games, and would enjoy exploring that area. Still others might be interested in mathematics. And so on. Build on existing interests.<p>I wonder if there&#x27;s a typo in your message. If the boy is 18yo, then an interest in programming will have already surfaced. Don&#x27;t try forcing him to do something that&#x27;s not of interest to him. You only have him at home for short while now. I&#x27;d encourage you to explore what he likes to do. Maybe you&#x27;ll find a new interest, and the two of you will have a great time before he leaves home.
acqbuabout 3 years ago
I think CS50 (edx) and Nand2Tetris (coursera) would be great courses to start with. Also, freeCodeCamp has some great introductory courses to Python (computing, data, ML etc) as well as web dev (js, react, html&#x2F;css and even a bit of node).
heavyset_goabout 3 years ago
What are they interested in? If they&#x27;re interested in building games, show them Itch.io and how to download the code of the games they think are cool. Show them Pygame and&#x2F;or Godot.<p>JavaScript in the browser allows for quick feedback loops that I think can be rewarding for beginners.<p>Help them come up with projects that they&#x27;re interested in and will challenge them a bit, but are also tractable. Beginners won&#x27;t have the context to be able to scope a project out, or to decide what is realistic and feasible, either. I find that can be a roadblock for people who are just starting out, where they learn the basics but can&#x27;t figure out what to do with them.
mikewarotabout 3 years ago
Here are a number of things that can all be done as threads, over time:<p>Show them how to make backups, and test them. They need to have confidence that they can recover, and can&#x27;t damage things beyond repair.<p>Show them how to use apt-get to install and remove things. This is essentially giving them all of the open source software in the world.<p>Show them how to use keywords with google, especially -searchterm. This will aid them when they want to find things. Teach them about the &quot;magic words&quot; and how to find them... i.e. annotation instead of markup, that kind of thing.<p>Set them up a git repository and Notepad++. Teach them how to use it, along with GitHub or some equivalent. Just use plain text until they understand how it all works. Walk them through their first pull request and fork. This gives them the tools required to be able to experiment without losing things, and sets some expectations about working with others.<p>Set them up with Excel or the Open Equivalent. Show them how purely declarative programming works. Then show them how macros work. Everyone should know how declarative programming works.<p>Show them how double entry book keeping works. How errors in entry are detected and corrected.<p>Show them your favorite programming language. Explain how you came to value it, it&#x27;s strengths and weaknesses. Show them, if possible, some of your code.<p>Show them lisp, forth, basic and prolog, and explain the strengths and weaknesses of each.<p>Show them how test driven development works. Make sure they know how to write good tests.<p>Show them how gnu readline works, have them read the manual for it, and bash (this one is a new thing to me, as an old windows user. You would not believe how powerful that thing is)<p>For the love of all that is good in the world, teach them how to name variables correctly, how to write useful comments, and how to smell code.<p>Teach them pair programming, the experience of a few hours can help them skip months of grief. It can be quite a bit of fun to show your kids something new. Don&#x27;t be surprised when they return the favor.
评论 #31221391 未加载
derkadesabout 3 years ago
If he plays Minecraft, developing mods for Fabric&#x2F;Forge or plugins for Spigot can be great fun. With very little code you can add new mechanics and in the case of mods even new blocks and items.
dgb23about 3 years ago
How you start almost doesn’t matter, it’s the stuff that happens after, such as actually take the time to answer questions and do stuff together.<p>After some initial experiments it should be more clear where the journey goes. Some learn better bottom up, meaning few abstractions are suitable. Some like bells and whistles, UI or games. Some like domain specific stuff like math or robotics.<p>There’s plenty to explore. The big realization has to be „I can do pretty much anything!“ and off they go. Just be there when needed and it’s going to be fine.
replwoacauseabout 3 years ago
What about this? I&#x27;ve seen it posted on HN before. Seems like a good place to start for a beginner:<p><a href="https:&#x2F;&#x2F;easylang.online" rel="nofollow">https:&#x2F;&#x2F;easylang.online</a>
digitalbreedabout 3 years ago
I&#x27;d suggest to build a game on Roblox. It&#x27;s easily accessible through Roblox Studio, it&#x27;s well documented, it has a young and welcoming community, and it teaches you a lot about client-server architecture. Plus, it comes with tons of freely available assets, you can invite others to work collaboratively, and you can publish your work and get some feedback from friends and family. I feel like Lua is kind of an exotic programming language but it works well in this environment.
blooalienabout 3 years ago
I&#x27;d go with Python, Javascript, (and also Godot engine if they have an interest in game development). After that, any other language they&#x27;d want to learn should come fairly easily to them. All three have great huge <i>piles</i> of tutorials available free on YouTube, as well as various free and &#x2F; or cheap resources available from Humble Bundle, Udemy, and other sites (especially if you catch them on sale).
balls187about 3 years ago
Swift Playgrounds is pretty cool.
surgeabout 3 years ago
<a href="https:&#x2F;&#x2F;gamehacking.academy&#x2F;" rel="nofollow">https:&#x2F;&#x2F;gamehacking.academy&#x2F;</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;ossu&#x2F;computer-science" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;ossu&#x2F;computer-science</a><p><a href="https:&#x2F;&#x2F;poignant.guide&#x2F;book&#x2F;chapter-1.html" rel="nofollow">https:&#x2F;&#x2F;poignant.guide&#x2F;book&#x2F;chapter-1.html</a>
bsenftnerabout 3 years ago
Blender (the FOSS 3D modeling, animation &amp; rendering software) has a recently updated UI that is significantly easier to use, the embedded language within is Python, and the number of tutorials covering a vast range of interests is noteworthy. You don&#x27;t really know what will captivate your kid, and the range of applications and learning opportunities with Blender covers a large range of potential interests.
chopsuey5540about 3 years ago
The thing that did it for me was building a &quot;web browser&quot; in VB6 using a printed book and copying the lines one by one. It was just a wrapper around a webview with a few buttons and text fields to navigate.<p>I think what I found amazing what that it was relatively easy to rebuild something that I used every day and that was immensely cool&#x2F;useful.<p>So maybe help him rebuild a basic instagram &#x2F; TikTok clone app on a mobile device?
laserbeamabout 3 years ago
I see a lot of comments about fun resources and useful automation. Those can get you to like programming... But most value I&#x27;ve ever gotten in the field was from algorithmic challenges. From contests. They are generally pretty dry, but it&#x27;s the same way you learn maths or physics. Solving problems.<p>I can only remember one in Romanian, but I&#x27;m sure google is your friend.
jonahbentonabout 3 years ago
18yo is college&#x2F;transition age. Are they attending college or continuing with education, or do they need to&#x2F;are motivated to get a job, and see coding as a means to that end? What to recommend depends entirely on the context.<p>Agree though- do not under any circumstances introduce&#x2F;subject them to the toolchain bullshit we have to deal with.
Decabytesabout 3 years ago
If you still want to use a Lisp, consider using Racket. It comes with Drracket, which is an editor for the language which has a repl embedded in it. It has the standard cut, copy, paste shortcuts (though you can use Emacs key bindings in it) and is simple enough not to be overwhelming (like other more robust editors can be)
rsyringabout 3 years ago
<a href="https:&#x2F;&#x2F;www.level12.io&#x2F;blog&#x2F;advice-to-aspiring-developers&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.level12.io&#x2F;blog&#x2F;advice-to-aspiring-developers&#x2F;</a><p>Includes advice on getting started but also comes from the perspective of getting a development job, not just getting into coding.
bayareabadboyabout 3 years ago
What’s he into? I got into programming as a tool to further my other interests. For a lot of people here I think that’s video games. For me, it was setting up websites, then web-scraping projects. I think that’s prolly less important than the tech, but yeah can’t go wrong with python and vscode
sharemywinabout 3 years ago
Personally I would start with one of these:<p><a href="https:&#x2F;&#x2F;bubble.io&#x2F;how-to-build" rel="nofollow">https:&#x2F;&#x2F;bubble.io&#x2F;how-to-build</a><p>or scratch<p>then build some things. then search on the internet and see if there&#x27;s any tutorials on how to do it with code.<p>I think the first step is to think about what he would like to build.
评论 #31210058 未加载
r9295about 3 years ago
<a href="https:&#x2F;&#x2F;w3.cs.jmu.edu&#x2F;kirkpams&#x2F;OpenCSF&#x2F;Books&#x2F;csf&#x2F;html&#x2F;" rel="nofollow">https:&#x2F;&#x2F;w3.cs.jmu.edu&#x2F;kirkpams&#x2F;OpenCSF&#x2F;Books&#x2F;csf&#x2F;html&#x2F;</a><p>I wish I had this resource when I started. A great introduction to CS fundamentals
perakojotgenijeabout 3 years ago
If he is interested in playing video games, I would recommend &quot;Learn to Code FROM ZERO with Godot, the Biggest Free Game Engine&quot;<p><a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=_G7jbafLdv0" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=_G7jbafLdv0</a>
dsowerbyabout 3 years ago
I’m 18 I’d go with game dev It’s fun and will teach you basic concepts with instant feedback<p>Unity is a decent start, and from there I got more into the fun stuff, OpenGL, assembly Lots of tutorials online.<p>From there you’ll have the background to quite easily transfer to whatever area is of interest.
hypertele-Xiiabout 3 years ago
Zachtronics games [0]. The epitome of educational programming game developers. Solve puzzles and optimize solutions by learning to think like a computer.<p>[0] <a href="https:&#x2F;&#x2F;www.zachtronics.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.zachtronics.com&#x2F;</a>
Foobar8568about 3 years ago
Python for its expressiveness and &quot;learning&quot; &quot;how&quot; to code.<p>OCaml for the functional language close to writing math expression and be able to do a lot of other things C or C++ for memory management and close to baremetal.<p>Basically see different paradigm, their tradeoffs.
digisignabout 3 years ago
Use FLOSS and explain why. Python and Geany are great to start with. Avoid proprietary and&#x2F;or telemetry filled products like vscode. Most IDEs are too complicated anyway.<p>I also think Flutter might be interesting, though not sure how suitable for begginers.
chkasabout 3 years ago
I have created a browser-based beginner programming language. It is also well suited for self-study and it is open source.<p><a href="https:&#x2F;&#x2F;easylang.online&#x2F;ide&#x2F;" rel="nofollow">https:&#x2F;&#x2F;easylang.online&#x2F;ide&#x2F;</a>
pcdoodleabout 3 years ago
Xojo is a nice modern IDE that is very close to Visual Basic 6. It runs on Win&#x2F;Mac&#x2F;Linux. Something about being able to place buttons, canvas, etc and write code directly into them and hitting play, makes it more engaging.
adamredwoodsabout 3 years ago
My son started with Scratch.<p><a href="https:&#x2F;&#x2F;scratch.mit.edu&#x2F;" rel="nofollow">https:&#x2F;&#x2F;scratch.mit.edu&#x2F;</a><p>Why Scratch? It has assets available immediately, it&#x27;s simple to draw and import images, and has a built-in audio editor.
dpflugabout 3 years ago
Not that it&#x27;s the direction you want to go, but <a href="https:&#x2F;&#x2F;portacle.github.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;portacle.github.io&#x2F;</a> is a bundle of all the Lispiness you mentioned in one go.
wagslaneabout 3 years ago
I&#x27;ve been working on https:&#x2F;boot.dev in my spare time, trying to go full-time on it soon.<p>Wont&#x27;t say it&#x27;s the best but I&#x27;ve been trying to fix a lot of things I don&#x27;t like about existing content&#x2F;platforms.
oaieyabout 3 years ago
VS Code with C#. Why: VS Code is the editor and no matter what comes next in his choices, even random non CS stuff, VS Code will be good. Maybe start with a notebook and not a program in the first days.<p>Why C#: it is the most versatile platform. You can create apps, web stuff, servers, desktop apps, machine learning, console apps, etc. It is statically typed (which is important for the youth to understand what he is doing), has excellent intellisense and beginner friendliness was a focus in the last year (a one liner is nowadays a valid c# program). .NET as base platform allows also F# for a switch to the purity (do not make me comment on that), can run on Linux&#x2F;macos (if this is important to you) and most important: is not Python which everyone else is doing. Python is the new boring Java.
_tom_about 3 years ago
He might have a look at NAND2tetris and see if that grabs his interest.<p>Arduinos are also fun.
kjellsbellsabout 3 years ago
I suggest the most imputant thing is to find an itch that the kid might enjoy scratching. It doesnt need to meet any kind of bar for &quot;proper&quot; programming. And since tech is everywhere, there are lots of places to start:<p>- alexa skills (start with one and modify it)<p>- game mods eg skyrim (ditto)<p>its a ton easier to make <i>tiny tweaks</i> to a codebase like this and get <i>instant feedback</i>, even if you are essentially cargo culting at this point.<p>- mobile app kits. MIT had a kit once, i forget the name. make an app that makes a fart noise or texts a buddy etc. we&#x27;re not talking material design and deep frameworks here. quick feedback and tinkering.<p>- scratch games. i know ppl. think its toy but its quick to experiment with and the results are quick.<p>do not, under any circumstances, let the kid get sucked into the tarpit of webapps. if they are into the web, have them spin up a wordpress site and start tinkering with plugins.<p>tl;dr - newbies need quick feedback and early successes. tinkering helps.
tmalyabout 3 years ago
I teach kids programming in my spare time. I would still recommend Scratch programming to absolute beginners.<p>It has very low cognitive overhead so you can get going quickly and focus on the concepts.
newusertodayabout 3 years ago
teach him to tinker existing sites in browser with javascript. Once he is able to see the changes he is making in realtime it will get him hooked, then you just need to point him to the right references here and there and he will become proficient on his own. I have taught or rather i shoud say given a demo to number of kids and i am yet to find a kid who didn&#x27;t get hooked. It&#x27;s kind of empowering just to change the background color of any website to your liking :)
shaunxcodeabout 3 years ago
Dr Racket is easy to install and makes it easy to get pixels on the screen. After that moving on to common lisp or clojure|script is an easy next step.
whateveracctabout 3 years ago
Haskell via Sokobon<p><a href="https:&#x2F;&#x2F;haskell-via-sokoban.nomeata.de&#x2F;" rel="nofollow">https:&#x2F;&#x2F;haskell-via-sokoban.nomeata.de&#x2F;</a>
throwawayboiseabout 3 years ago
If he&#x27;s interested, he&#x27;ll figure it out. It&#x27;s easier than ever in 2022. If he doesn&#x27;t, he wasnt&#x27;t that interested.
ilrwbwrkhvabout 3 years ago
Programming is about building mental maps.<p>Take any program, change something, see what it affects, rinse and repeat.<p>The program needs to do something they are interested in.
charcircuitabout 3 years ago
Google<p>Starting from there you can learn almost anything for free.
bananamericaabout 3 years ago
I&#x27;m not a programmer. I tried Python many times, but honestly the best time I had was in an algorithms class that used C.
dougabugabout 3 years ago
Machine learning, for sure. Pytorch. Andrew Ng has a new version of his machine learning class on Coursera, now in Python (the de facto lingua franca of ML these days).<p>A game engine like Unity, or maybe Unreal Engine. People use game engines for almost everything these days: creating synthetic data for training Computer Vision models, AR&#x2F;VR applications, even high end Disney shows such as “The Mandalorian.” Motivating use cases can spark greater long term engagement.
trenchgunabout 3 years ago
VS Code and Python is good.<p>Another is to just let them build a website, so learn some javascript to make games and put them up there.
mensetmanusmanabout 3 years ago
<a href="https:&#x2F;&#x2F;ocw.mit.edu&#x2F;" rel="nofollow">https:&#x2F;&#x2F;ocw.mit.edu&#x2F;</a>
smackeyackyabout 3 years ago
Emacs? Why?<p>Pull up the debugger in chrome on random websites and start them on javascript.
DantesKiteabout 3 years ago
This is a great question and I wish there was an obvious answer.
darepublicabout 3 years ago
if your child is interested in a particular type of project why not choose the language based on that as a start
samlittlewoodabout 3 years ago
How about an Arduino with a kit of parts?
dybberabout 3 years ago
The Coding Train w. Daniel Shiffman
bmitcabout 3 years ago
* <i>How to Code: Simple Data</i> and <i>How to Code: Complex Data</i> on edX. Taught by Gregor Kiczales, of Common Lisp and CLOS fame. Uses Racket and graphical programs to teach.<p><a href="https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;how-to-code-simple-data" rel="nofollow">https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;how-to-code-simple-data</a><p><a href="https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;how-to-code-complex-data" rel="nofollow">https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;how-to-code-complex-data</a><p>* The <i>From Nand to Teris</i> project, <i>The Elements of Computing Systems: Building a Modern Computer from First Principles</i> book, and&#x2F;or Coursera course. Builds a hardware stack for a CPU and then a software stack (assembler, VM, high-level language).<p><a href="https:&#x2F;&#x2F;www.nand2tetris.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.nand2tetris.org&#x2F;</a><p><a href="https:&#x2F;&#x2F;www.coursera.org&#x2F;learn&#x2F;build-a-computer" rel="nofollow">https:&#x2F;&#x2F;www.coursera.org&#x2F;learn&#x2F;build-a-computer</a><p><a href="https:&#x2F;&#x2F;www.coursera.org&#x2F;learn&#x2F;nand2tetris2" rel="nofollow">https:&#x2F;&#x2F;www.coursera.org&#x2F;learn&#x2F;nand2tetris2</a><p><a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Elements-Computing-Systems-second-Principles-dp-0262539802&#x2F;dp&#x2F;0262539802&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Elements-Computing-Systems-second-Pri...</a><p>* The <i>How to Design Programs</i> book. What the edX course above is based upon.<p><a href="https:&#x2F;&#x2F;htdp.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;htdp.org&#x2F;</a><p><a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;How-Design-Programs-Introduction-Programming&#x2F;dp&#x2F;0262062186" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;How-Design-Programs-Introduction-Prog...</a><p>* <i>Structure and Interpretation of Computer Programs</i> (<i>SICP</i>). Uses Scheme. One can use Racket with the `#lang sicp` language.<p><a href="https:&#x2F;&#x2F;mitpress.mit.edu&#x2F;sites&#x2F;default&#x2F;files&#x2F;sicp&#x2F;index.html" rel="nofollow">https:&#x2F;&#x2F;mitpress.mit.edu&#x2F;sites&#x2F;default&#x2F;files&#x2F;sicp&#x2F;index.html</a><p><a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Structure-Interpretation-Computer-Programs-Engineering&#x2F;dp&#x2F;0262510871&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Structure-Interpretation-Computer-Pro...</a><p>YouTube playlist of the course by the authors: <a href="https:&#x2F;&#x2F;youtube.com&#x2F;playlist?list=PLE18841CABEA24090" rel="nofollow">https:&#x2F;&#x2F;youtube.com&#x2F;playlist?list=PLE18841CABEA24090</a><p>* <i>Thinking as Computation: A First Course</i>. Uses Prolog to solve problems of thinking.<p><a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Thinking-Computation-First-Course-Press&#x2F;dp&#x2F;0262534746&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Thinking-Computation-First-Course-Pre...</a><p><a href="https:&#x2F;&#x2F;www.cs.toronto.edu&#x2F;~hector&#x2F;PublicTCSlides.pdf" rel="nofollow">https:&#x2F;&#x2F;www.cs.toronto.edu&#x2F;~hector&#x2F;PublicTCSlides.pdf</a><p>* <i>Turtle Geometry: The Computer as a Medium for Exploring Mathematics</i> (shares an author with <i>SICP</i>). Uses Logo to explore turtle geometry&#x2F;graphics. Can use any modern Logo implementation.<p><a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Turtle-Geometry-Mathematics-Artificial-Intelligence&#x2F;dp&#x2F;0262510375&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Turtle-Geometry-Mathematics-Artificia...</a><p><a href="https:&#x2F;&#x2F;direct.mit.edu&#x2F;books&#x2F;book&#x2F;4663&#x2F;Turtle-GeometryThe-Computer-as-a-Medium-for" rel="nofollow">https:&#x2F;&#x2F;direct.mit.edu&#x2F;books&#x2F;book&#x2F;4663&#x2F;Turtle-GeometryThe-Co...</a><p>* <i>Starting Forth</i>. Uses Forth.<p><a href="https:&#x2F;&#x2F;www.forth.com&#x2F;starting-forth&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.forth.com&#x2F;starting-forth&#x2F;</a><p><a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Starting-Forth-Leo-Brodie-ebook&#x2F;dp&#x2F;B01MS7YDKD&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Starting-Forth-Leo-Brodie-ebook&#x2F;dp&#x2F;B0...</a><p>* <i>Learning Processing: A Beginner&#x27;s Guide to Programming Images, Animation, and Interaction</i> and also <i>The Nature of Code: Simulating Natural Systems with Processing</i>. Uses Processing and p5.js (the JavaScript version of Processing).<p><a href="http:&#x2F;&#x2F;learningprocessing.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;learningprocessing.com&#x2F;</a><p><a href="https:&#x2F;&#x2F;natureofcode.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;natureofcode.com&#x2F;</a><p><a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Learning-Processing-Beginners-Programming-Interaction&#x2F;dp&#x2F;0123944430&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Learning-Processing-Beginners-Program...</a><p><a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Nature-Code-Simulating-Natural-Processing&#x2F;dp&#x2F;0985930802&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Nature-Code-Simulating-Natural-Proces...</a><p>The author&#x27;s YouTube channel: <a href="https:&#x2F;&#x2F;youtube.com&#x2F;c&#x2F;TheCodingTrain" rel="nofollow">https:&#x2F;&#x2F;youtube.com&#x2F;c&#x2F;TheCodingTrain</a><p><a href="https:&#x2F;&#x2F;processing.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;processing.org&#x2F;</a>
randyrandabout 3 years ago
games games games. best thing for learning.
curyousabout 3 years ago
HandmadeHero
Terry_Rollabout 3 years ago
Reddit and ask them to do a TL;DR&#x2F;ELI5 of programming, I think they could come up with something useful.
qualudeheartabout 3 years ago
Get them a copy of K&amp;R C.
dmcbrayerabout 3 years ago
What’s a yute?
jsiaajdsdaaabout 3 years ago
Replit.com or some other online compiler, get them to create some variables and add some numbers.<p>Move on to functions, arrays, ifs&#x2F;fors, and maps.<p>Teach them the point of JSON and data objects, and then the world is theirs.
ejASIMabout 3 years ago
so you should go te read about anything in programming also you should ask any question in your mind
b20000about 3 years ago
why learn programming? also, an 18yo is an adult
评论 #31211009 未加载
评论 #31210759 未加载
评论 #31210583 未加载