I mean, there's books out there like this.
In my own experience, it's a matter of coding enough. You have to try to create something and do it naively. Having done something yourself gives you a reference for when you study programming in books or videoes or when talking to others that you can compare new information to, so you can realize how you could have done things better in your own project. If you don't have any reference experience, you wont learn from the information in the same way. It's part of becoming a programmer that you'll write some crap code.
Try to code some simple desktop application, like a text editor, or some other simple program. Make a list of features it should have - for a text editor, you should be able to input text, modify the input text, save the text and load a text file.
How about this book Think like a programmer. Have a looksie.
Edit: For your problem you could use reverse planning: Start at the end with the result you want and work backwards.
Stupid question on my end perhaps but have you ever read How to Think Like A Programmer?
Think Like a Programmer: An Introduction to Creative Problem Solving https://www.amazon.com/dp/1593274246/ref=cm_sw_r_cp_apa_sjOCAbTSAJPKT
I have been doing these challenges
And also using this book to get better at coding, in general: Here you go
Both links are C++ related and work on challenges which build on each other.
If you're just at conditionals, you'll get to structures and collections later.
This is actually a really good type of project for learning to program with. Your first program here is reasonable, but has a lot of areas of potential improvement (this is expected, you're just getting started). As you learn more about C++ you'll see how you can both simplify the program structure and make expanding the game much easier.
There's a book Beginning C++ Through Game Programming, I'm not familiar with this 2014 edition, hopefully it's been updated to C++11. I (when learning a different programming language) had worked through the equivalent of it in Ada and found the overall structure to be sound so I feel comfortable recommending it without having read it myself (though now I'm looking through my various resources to see if I can get a digital copy through one of the office's digital library services).
The games are all text based which is in line with what you've started here. If you work through it and continue developing this program as you learn more C++ you'll get a pretty decent game by the end.
If you want to learn electronics, this is the book to get:
Make: Electronics: Learning Through Discovery https://amazon.com/dp/1680450263
It literally goes through everything you need to know about basic electronics to be able to teach you how to make your own stuff. I only read through part of the first edition and loved it, so I’m planning on getting the second and actually doing the stuff by hand. I believe one of the last experiments is to 3D print a racecar yourself and create all the electronics from scratch to make it work.
You’ll obviously have to buy all the electronics parts (there’s guides in the book on how and what to buy) but if you don’t want to spend the time buying individual stuff online they sell kits tailored to this book. Each kit covers a certain number of experiments and the total will probably set you back about $200.
I saw Reddit threads recently (not specific to the book) about where to get discount electronics, so you could get the book and then look for the parts you need if you have time.
Modern computers still use the same “basic theory” that the first computers used.
Introduction to computing systems is a good book that will give you what you are looking for.
There's a book Beginning C++ Through Game Programming. Teaches C++ with text based games. May be a useful start.
Sounds like the book Think like a programmer might be up your alley. Haven't read it myself, but I've heard good things.
In college, I had a course called Introduction to Computer Engineering. It started with how a transistor works, then how multiple transistors could store values, then how transistors could perform boolean operations, then how all of those boolean operations could be programmable rather than single-purpose, and then how you might design a human-readable shorthand to represent the instructions going to this programmable circuit.
C programming was the next semester.
We used this textbook for that course. I always found it very readable.
First, have you tried applying to other than the Big N companies? No CS degree, tons of competition, almost a lottery for acceptance. You're setting yourself up to fail.
As for the other bits. Problem solving is the what seperates coders from programmers. It's not a black art or magic or anything -- it is a skill that can be learned. For the most part it comes from experience. A strong math background can help as it is the essence of problem solving.
The algorithm interview pony show -- In practice it's not really about coding them, it's about choosing which one to apply to a given problem. All they are doing is (purposely or unknowingly) applying an arbitrary filter to applicants. Anyone testing if you can knock out a selection sort from memory is really asking the wrong questions. The proper question is when should you use this algorithm or given this sort of problem what sort of algorithm should you select.
A book that might help is Sprual's Think Like a Programmer.
Another favorite is The Practice of Programming. Not so much about problem solving, but a good quick read on some of the basics of professional programming. Read the Amazon synopsis to see if it will float your boat.
Hey, I'm a CS sophomore right now at a community college and here's my take on it:
If you're set on learning C and C++ make sure you find a program at a school that incorporates that. My semester currently is Machine Archtecture (some c++), Programming Concepts (python), and Programming in C. So if you have a local college or have one in mind to attend online, make sure you look at their courses, and inquire with the advisors at that school with any questions.
Yes to reading books, always helps. Youtube is always a friend as well but if you prefer reading you could start with
https://www.amazon.com/Programming-Absolute-Beginners-Guide-3rd/dp/0789751984
I learned c++ first, I guess your challenge will be syntaxe, memory management and learning the std libraries.
I highly recommend a book. It will be a reference for years. My suggestion is this one: https://www.amazon.com/Primer-Plus-6th-Developers-Library/dp/0321776402/ref=mp_s_a_1_2?dchild=1&keywords=c%2B%2B+primer&qid=1598384756&sprefix=C%2B%2B+pri&sr=8-2
I had a lot of my start with C++. This was the textbook I used to learn it initially and I had a lot of fun going through this book:
https://www.amazon.com/Beginning-C-Through-Game-Programming/dp/1305109910/(I would suggest reading only up to right before DirectX chapter though, since I believe the DirectX section has been outdated for a long time now for these books. Personally, I only briefly learned to do DirectX programming in general in college and never used it professionally, so I'm not aware of how often much older versions of DirectX is used, but I remember hearing things like the X files format we used in college got deprecated.)
I have worked professionally as a developer in and out of the game industry and I definitely agree that learning C++ to start would actually be advantageous, regardless of what languages you may have to work in later on because it makes everything easier to learn in comparison I feel. I use C# now for my current role and never had taken courses in it or such, but I was able to self teach it because of my C++ background.
If you have never made a game of tic tac toe or something similar, your brain hasn't made the connections or learned the skills that would translate from one game to another.
Building a mern stack website is a completely different skillset. It's planning, architecture design and some programming logic depending on the webiste. A game of tic tac toe is pure logic and breaking down a large problem into smaller pieces to solve.
In short, you've definitely made progress! Just in a different area :) If you want to improve in logic, just build more logic heavy projects.
Also, just use google! lol It helps you learn and professionals use it everyday to help them solve real world problems.
Also, here's a great book if you are interested. It will help in learning how to break larger problems into smaller ones. https://www.amazon.com.au/Think-Like-Programmer-Anton-Spraul/dp/1593274246/ref=asc\_df\_1593274246/?tag=googleshopdsk-22&linkCode=df0&hvadid=341791741598&hvpos=&hvnetw=g&hvrand=17615376656973970093&hvpone=&hvptwo=&h...
I actually got into web development a without any bootcamp or degree. I learned mainly through youtube tutorials in order to wrap my head around it but it really started to click for me when I FreeCodeCamp(FCC). I was very poor living abroad at the time so I literally paid for nothing and managed to learn everything I needed. We live in beautiful times where knowledge is abundant!
Anyways, I highly recommend FCC as it helps you think like a programmer and provides you with portfolio projects. I actually got my first job in an ed-tech company before finishing the FCC course as an e-learning administrator. There was no coding needed for the role but I coded at work as much as possible on tasks outside my role just to help others. This eventually led to people seeing my passion and then moved me into the right place, into a dev team. Overall, it took me around a year of learning to code before I got a job in the tech sector, then another 3 months before I switched roles to a junior developer.
Good luck to you!
Also I highly recommend this book: https://www.amazon.com.au/Think-Like-Programmer-Anton-Spraul/dp/1593274246/ref=asc\_df\_1593274246/?tag=googleshopdsk-22&linkCode=df0&hvadid=341791741598&hvpos=&hvnetw=g&hvrand=17615376656973970093&hvpone=&hvptwo=&h...
"Programming: Principles and Practice Using C++" is a classic. There are many problems at the end of each chapter, and a lot of them are pretty challenging.
I've got this https://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784 and i've been using that site too but only for when i forget syntax or something like that
I'm going to take a different route at answering this question, perhaps the difficulty did not stem from learning the language but, rather the goal to learn.
A good amount of teaching material in the past was geared towards games. and the way this material was delivered in the past was based off children's imagination first and principles coming later.
The best part about this is this somehow got kids learning some of the languages like C and C++ first, because the goals involved mattered more to them than the actual hurdles they would encounter.
This is how I learned to code as well and somehow the difficulties that most people talked about did not occur to me the entire time.
Heck, I actually didn't realize pointers were difficult because they don't present them to you the way they do in most CS classes or tutorials.
I'd recommend a book like Beginning Game Programming with C++ by Michael Dawson, who seemed to have gotten good at this by tutoring kids.
I guess what I'm trying to say is, it is less about the language or the programs affiliation towards children but, rather the delivery for some people to be drawn to something.
Children, or at least some children look for the fun entertaining and relatable aspects to their imagination, not the principles as we are so often taught as adults and in my opinion, this has birthed some of the best developers and engineers in the industry.
However, this is my opinion on the subject, and everyone is built different. I'm a goal-oriented learner and knowing that has helped me learn a few difficult subjects over time.
Maybe this might work for your niece or not, it all depends on what interests them the most to act as a delivery vehicle of knowledge.
Ice really enjoyed think like a programmer it helps with the problem solving side more than the programming side
If you have never programmed before I strongly reccomend that you choose another book to learn about computer programming.
I recommend that you begin by reading "Think Java, 2nd edition". In my opinion Think Java is a good introductory book to programming.
Another supposedly good introductory book is Programming: Principles and Practice Using C++. However I can't comment much on it since I haven't read it myself.
I've got a book suggestion for you. There's probably some better ones out there but it's the one I happened to read recently.
I think it's exactly what you're talking about doing and does a decent job of holding your hand to get you started while still showing you exactly what's going on.
The way things are explained in the book easily translates to using other AVR chips.
​
Not sure which country you're in, friend, but that's the UK edition. I'm not sure if there's a newer edition or not, but this one's really good :)
It's never too late or too hard.
Start here with the Foundations https://www.theodinproject.com/paths
And I've heard good things about this book: https://www.amazon.com/Think-Like-Programmer-Introduction-Creative/dp/1593274246
Come back after those and explain what you want to build and you'll get suggestions for next steps.
For the CpE side, this is commonly the intro book teaching the fundamentals:
https://www.amazon.com/Introduction-Computing-Systems-Gates-Beyond/dp/0072467509
And for computer architecture it seems to be commonly this one:
https://www.amazon.com/Computer-Architecture-Quantitative-John-Hennessy/dp/012383872X
Is the course the whole academic year?
I think that half an entire school year on drag-and-drop might be too much and could lead to developing bad habits.
If I were teaching a course, I'd have the drag-and-drop and corresponding GML side by side so those who are more advanced can start to get it faster and even those that don't get it as quickly can still start to see what is happening "under the hood"
This isn't to put down drag-and-drop which I use myself, just that I think that being exposed to GML sooner would be better so students see that programming isn't as scary and that it's just a way of thinking.
Also, I think a resource like Thinking Like a Programmer would be good to draw inspiration from because even if it's not in GML, I think that thinking of an approach to solve a problem is also an important skill that will help them throughout the course and in the future if they stick to it.
As an example, when I was working on a simple game to learn GameMaker, I had several objects rendered to prevent a character from moving but it was more efficient to just check if they were within a rectangle.
It's not the biggest deal since unless they are making AAA titles, any modern PC won't have issues with a few extra objects but the good habit to follow best practice will serve them well in the future!
Also, awesome job on having a course like this in high school. Your students are lucky! Thanks for being an engaged and dedicated teacher!
If you like Maths and Circuits, look into embedded systems. Depending on how deep you want to go, you can work with circuits, maths (especially embedded is getting popular in AI, Digital Signal Processing etc etc). A lot of what you do here is low level and you dont always have the luxury of nice IDEs for e.g
I switched from a software engineer to embedded systems. I am currently doing my masters in it, I didn't enjoy software engineering. I always enjoyed tinkering with electronics as a kid, so this is something I really enjoy.
I do find it a bit more challenging, because my adhd makes it hard for me to read, a lot of embedded is going through pages and pages of datasheet, so that is kind of a bummer.
I would suggest you get a starter arduino kit or what I did was get this book: AVR Programming: Learning to Write Software for Hardware and an AVR programming kit, there are plenty of them, get a beginner one and then have a go at it, see if you enjoy it.
C++ is easy to learn and notoriously hard to master. If you have a very specific question, the internet is a good place to learn. If you are looking to master the language, online courses are very bad. A book written by an experienced programmer will be far better. This is mainly due to the philosophy behind C++. Unlike a language like python, C++ does not present a "correct" way to do things.
The problem with just looking at the rules and tutorials and then going at it alone are two fold.
First of all, C++ does not double check your work. A wrong code can work. For example lets say you set a variable, deleted the variable and then used a pointer to access the deleted data. This code will likely work. This is because C++ did as you instructed it to. When you said delete the variable, C++ went to the OS and told it that it was no longer using that memory space. However, the OS did not need that space yet so did not alter anything. Hence, your code worked even though it is erroneous. Mistakes like this can turn horrible very fast.
The second reason why being guided by a book is better is simply because C++ is an everything language. C++ allows a lot of programming paradigms which means one problem has a lot of solutions. The problem is knowing which approach would fit best. That is where a wholistic book rather than a short and catchy tutorial will guide you best.
I would recommend the book that the creator of the language wrote. It is good at teaching the mentality that goes along with the language.
As to C++, perhaps the book Programming: Principles and Practice Using C++ written by the language creator, Bjarne Stroustrup, would be a great option as well. Although not perfect and even a bit exagerated sometimes, it covers general aspects of programming as well as C++. I think it could be a great fit for you. It's not free, though.
Grab some good books and work through them methodically. Slow and steady wins this race. Try to avoid IDEs and use an editor instead. Learning the compiler is really important. Don't focus on assembly yet. You can always view your assembly by making the compiler output the asm with -S -fverbose-asm. Udemy has some good courses on C, as well as general CS topics.
If you really want to learn how a computer ticks, watch all of Ben Eaters videos on YouTube.