![V. Anton Spraul](/img/default-banner.jpg)
- 37
- 1 547 363
V. Anton Spraul
United States
Registrace 22. 02. 2012
Videos for people who want to understand software better, including explanations of how software performs some of its most important jobs and tools programmers can use to to solve programming problems.
The First Video Game War (3/3) [Tech Wars]
The first video game war pitted the Atari 2600 against the Fairchild Channel F and Magnavox Odyssey 2. In this episode, we'll see how decisions made by Atari, both good and bad, resulted in a resounding victory, and what happened in the aftermath.
If you are coming in late, here's part 1: czcams.com/video/ohbXUbW0wFc/video.html
Part 2: czcams.com/video/K53MaHNIlds/video.html
This is the first story in a new series called TECH WARS, all about the technology battles that shaped recent history. These stories are adapted from a new book I'm writing.
Connect with me:
My site: vantonspraul.com
Twitter: VAntonSpraul
Facebook: ThinkLikeAProg/
If you are coming in late, here's part 1: czcams.com/video/ohbXUbW0wFc/video.html
Part 2: czcams.com/video/K53MaHNIlds/video.html
This is the first story in a new series called TECH WARS, all about the technology battles that shaped recent history. These stories are adapted from a new book I'm writing.
Connect with me:
My site: vantonspraul.com
Twitter: VAntonSpraul
Facebook: ThinkLikeAProg/
zhlédnutí: 1 182
Video
Finding the Best Path (Dijkstra's Algorithm)
zhlédnutí 14KPřed 6 lety
How does a program find the optimal route between two points? This problem comes up in map apps, networking, and lots of other situations. One way to solve it is known as Dijkstra's algorithm. I put all the code at the end of the video, so if you're a non-programmer you can watch up to then to get the general idea. This is another viewer-suggested topic feel free to suggest others. If you like ...
The First Video Game War (2/3) [Tech Wars]
zhlédnutí 584Před 6 lety
The first video game war pitted the Atari 2600 against the Fairchild Channel F and Magnavox Odyssey 2. In this episode, we'll see the different techniques these early consoles used to get graphics on the screen, and how that changed the look and feel of the games. Finally, in episode 3, we'll see how the war was won, and what happened in the aftermath: czcams.com/video/AEjuPnEWVEc/video.html If...
The First Video Game War (1/3) [Tech Wars]
zhlédnutí 1,5KPřed 6 lety
The first video game war pitted the Atari 2600 against the Fairchild Channel F and Magnavox Odyssey 2. In this first episode, we'll discover we led three different companies to develop their own versions of a cartridge-based game console, and meet key players like Ralph Baer and Nolan Bushnell. In episode 2, we'll see the different techniques these early consoles used to get graphics on the scr...
Backtracking (Think Like a Programmer)
zhlédnutí 319KPřed 6 lety
Backtracking is used when you need to find the correct series of choices that will solve a problem. The example I use here is finding one's way through a maze. You can use the basic idea with or without recursion; if you haven't seen my other videos on recursion, start with the first one at czcams.com/video/oKndim5-G94/video.html This topic was a viewer suggestion your suggestions for future vi...
How Mergesort Works -- a fast way to put things in order
zhlédnutí 2,5KPřed 6 lety
Here's another video for both programmers and non-programmers. This one explains a fast way to put things in order called mergesort. If you haven't seen the video on the more common, but slower, ways to sort things, check it out here: czcams.com/video/PY82qqyWJJs/video.html If you like this video and you want to learn more about how computers do what they do without learning programming, check ...
What Is an Algorithm?
zhlédnutí 22KPřed 6 lety
Heading into a series of videos of algorithms, I thought I would make a video that explains to anyone, programmer or not, what an algorithm is. The basics of algorithms are actually pretty simple, as I hope this video makes clear. If you like this video and you want to learn more about how computers do what they do without learning programming, check out my How Software Works book: vantonspraul...
Bottom-Up Programming Solutions (Think Like a Programmer)
zhlédnutí 16KPřed 6 lety
Bottom-up programming is method for solving certain types of programming problems in which the code starts with the smallest pieces of the problem and builds intermediate results up to a full solution. The bottom-up technique is often seen with dynamic programming but can be used in other ways as well. Source code is available through my site: vantonspraul.com/node/97 This video is related to s...
Make Your Own Fun in MMOs (Thinking About Games)
zhlédnutí 994Před 6 lety
What's your favorite way to make your own fun in an MMO? Here are five ways I've enjoyed games outside of what the game intended. Part of my Thinking About Games series.
Dynamic Programming (Think Like a Programmer)
zhlédnutí 68KPřed 6 lety
This video is about a cool technique which can dramatically improve the efficiency of certain kinds of recursive solutions. It's called "dynamic programming." The name isn't very helpful, but as you'll see, it's easy to implement once you understand the basic idea. Your comments and suggestions for future videos are welcome. "Think Like a Programmer" is a book I've written to help programmers w...
The Peg Puzzle Solved (Think Like a Programmer)
zhlédnutí 9KPřed 6 lety
There's a puzzle with 15 holes and 14 pegs that I hadn't solved, and I thought, why am I solving this when I could write a program to solve it for me? You'll see the thoughts behind the program, the mistakes I made along the way, and some discussion of how we should choose approaches that match our programming strengths and weaknesses. Your comments and suggestions for future videos are welcome...
How Software Draws a Line (How Software Works)
zhlédnutí 3,1KPřed 6 lety
This video is about what software has to do to draw a line...an ordinary straight line. Sounds simple, doesn't it? Well, there's a lot more going on than you might think. This video explains the basics behind pixels and gets into what anti-aliasing is and how it works. How Software Works is a book and video series explaining the magic behind software encryption, CGI, video game graphics, and a ...
RUA Programmer? (Think Like a Programmer)
zhlédnutí 2,7KPřed 6 lety
This video is for anyone who is considering learning how to program, and is asking the questions: how do I know if programming is for me? And: how should I get started learning programming? I also talk a little about the new Python Edition of the Think Like a Programmer book, which is more suited for beginners. If you want to read more advice on learning how to program, I have a whole series of...
Practical Big-O Notation (Think Like a Programmer)
zhlédnutí 5KPřed 6 lety
Big-O notation is how the efficiency of algorithms is typically described. Figuring out the O-notation of an algorithm can look tricky, but as this video shows, for the majority of situations, it's pretty straightforward. Your comments and suggestions for future videos are welcome. "Think Like a Programmer" is a book I've written to help programmers with problem solving. If you've found that yo...
World of Warships Aiming Method -- Ghost Ship Targeting
zhlédnutí 33KPřed 6 lety
World of Warships Aiming Method Ghost Ship Targeting
Performance & Efficiency (Think Like a Programmer)
zhlédnutí 6KPřed 6 lety
Performance & Efficiency (Think Like a Programmer)
Divide & Conquer (Think Like a Programmer)
zhlédnutí 32KPřed 7 lety
Divide & Conquer (Think Like a Programmer)
Shadowrun Chronicles: Boston Lockdown Review for Co-Optimus
zhlédnutí 422Před 8 lety
Shadowrun Chronicles: Boston Lockdown Review for Co-Optimus
Tackling a Real-World Problem, Part 2 of 2 (Think Like a Programmer)
zhlédnutí 9KPřed 8 lety
Tackling a Real-World Problem, Part 2 of 2 (Think Like a Programmer)
Tackling a Real-World Problem, Part 1 of 2 (Think Like a Programmer)
zhlédnutí 20KPřed 9 lety
Tackling a Real-World Problem, Part 1 of 2 (Think Like a Programmer)
Planning Your Problem Solving (Think Like a Programmer)
zhlédnutí 19KPřed 9 lety
Planning Your Problem Solving (Think Like a Programmer)
Think Like a Programmer: What It's All About
zhlédnutí 20KPřed 10 lety
Think Like a Programmer: What It's All About
Different Approaches (Think Like a Programmer)
zhlédnutí 19KPřed 10 lety
Different Approaches (Think Like a Programmer)
i was able to solve both problems nearly immediately but i still struggle with problem solving in general, and i already apply these concepts 😔
I have been stuck on the topic of recursion for several days, and now it has finally clicked.
dude - this was the video that actually unlocked the concept of backtracking for me, in a way that I can now start to understand problems going forward. Huge props. I will have to check out your library of videos and i'm not sure if you're still making them but if so I'd love to hear you explain some more concepts. Thanks for making the effort, its much appreciated
6:10
Splendid explanation!
one of the best books i've ever read
Wow! So nice, thank you!
Dear CZcams Algorithm, please give me more of these practical SWE videos and less tech influencer garbage
Oh, if only we could talk directly to the algorithm...anyway, glad you found it helpful.
okay iam now in my 40s! Getting my popcorn!
Never too late to learn something new!
Thanks for making this informative review.
i have a question. how could u make the while loop with conditions iter and foundoutlet terminates because i didn't see anything to trigger its termination here?
I can't believe you're making this available for free. Dude, thank you very, very much.
Hey, you're welcome. Glad it is helpful content.
Isnt using a map or dictionary or hash data structure to store better than using an array?
Something about the aesthetics of that robot remind me of the ISpy books. Thanks for the fun video. It puts the fun in functional.
I haven't finished the video but right now, I keep thinking about all of the different paths that you can go down, keep thinking about the recursion... and then once you return you go up the path until you can make another decision based off of where you end up but it's just very... complex when you think about it... I mean the base cases do make a lot of sense but the way I'm thinking about it right now is too hard to grasp, it's almost mind bending.
Thank you for explaining everything a lot more into detail you made it a lot more easier to understand how to line it up I was trying to explain to my 13 year old son and he could not get it I showed him your video and now he understands the game and he love the game so much now thank you so much!!!!
An even better approach is just to make all the right decisions the first time around. Then you never have to backtrack.
Ha! For that you'll need a non-deterministic computer. You still don't make only right decisions, but because you make all possible decisions simultaneously, you can pick the one that ends up at the exit.
Could you show how the list<int> sample_maze is being generated and called in main? When I called the backtrack function sample_maze[9] is empty.
this is great but i wish you could explain the same thing on python :(
would be nice if you used a dark or black background too
Really great video, thanks for giving a non-recursive solution, it helps putting things back in perspective. I'm wondering if this can apply to problems that search for a min/max value? For example, the classic "bag" problem which is traditionally solved using more "combinatory-oriented" approaches. (bag can carry at most N kilos and you have many items worth different values and weights, and you want to find the combination of a minimum items that are worth the maximum amount of gold)
Thanks! Yes, you could use recursion to solve that problem, which I know as the knapsack problem. The function could have two parameters: a maximum weight (maxWeight), and a list or other structure with all the items (AllItems), each with a weight and value. Also suppose there is an easy way to make a copy of that list without its first item (AllButFirst). The logic would then be, which of these has greater value? A. the recursive call with (maxWeight, AllButFirst) B. the recursive call with (maxWeight - weight of first item in AllItems, AllButFirst) + value of the first item in AllItems The recursion would stop when AllItems has zero items. Something like that.
I was looking for videos on backtracking.. i did not want to waste my time.. so i scrolled many times before i found a video title that talked about "thinking" about backtracking.. well done sir!!
Was sent here by Sweigart's recursion book!
I think that for problem solving it's also very important to know what actions you can do. For example, in the water problem you can pour from one container to the other. In programming you also need to know what instructions you can do, what commands are available, what APIs you can call, and in general what components/pieces/actions are involved/possible in the problem.
Yes! In the book, I use the example of the fox, goose, and corn puzzle, which has the same issue. If you define your available actions as, "the boat can take the farmer and one item from the west side of the river to the east side," the problem isn't solvable. If you define the actions as, "I have a boat that can travel from one side of the river to the other, and at either end I can embark or disembark so long as I am only carrying one item at a time," the problem is solvable.
Still didn't get it...😒
I need some serious help. I can understand how this works but I cant come up with a code by myself.
New programmers? Sir, I've been writing code for over 20 years. I flunked this module at college. I even had the book at the time, but I was preoccupied with partying. I always struggled to take what was in my head and put it into a plan. I'd always jump straight in and write a bunch of tests and work from there. It worked sometimes.
so it is true.. if c0llege loans get forgiven, the g0v is basically just forgiving so more students can party it up.
Sir,Do you have any online courses?So that anyone can learn in person from you
widce
Goofy ah Mersenne Twister
this is one of the best explanations I've ever seen. I wish you to keep going on to brush up more information
its normal to be more depressed after watching this playlist?
I certainly hope my videos do not induce depression.
@@vantonspraul your videos are not the peoblem i'm just to dumb to understand then
@@caiquemoa Oh, come on. If any of the concepts seem too advanced, just find a simpler place to start. If there's anything in particular that you have questions on, let me know.
I will just write empty iterative functions and assume it solves the problem for my own satisfaction because I still can't trust recursion. lol. This video helped alot. Thanks!
great to know that there is no little gnome throw the dice in my pc btw what is the game name at 1:14
That is The Secret World, a horror MMO that I was really into at the time. It has since been reborn as the free-to-play Secret World Legends. I don't like the progression system in the new version as much, but honestly the storytelling is the reason to play it anyway.
@@vantonspraul haiya thanks for answer
very instructive! I do really benefit from it!
Keep up the videos!
It's been 4 years since you last uploaded..
Lifesaver! Thanks for this.
Good idea!
I have no experience with Programming whatsoever so I have no idea how this would be executed however I thought for the Dept problem the police number would always be 2,4 or 6 for each of these the sum of the other two has to be either 10, 8 or 6 I wonder if a loop could be coded only for numbers to add to those quantities and be different from one another
Fire #3 , Police #4, Sanitation #5
Your voice sounds like sheldon 😆
Hay quá
This is plain wrong. Software can produce nondeterministic random numbers when the instruction set of the computer has nondeterministic instructions. Every current X86 CPU includes two nondeterministic instructions - RdRand and RdSeed. Software is just an assemblage of CPU instruction and if some the the instructions are nondeterministic then so can the software be nondeterministic.
What exactly is "plain wrong"? I don't mean to be snarky, but: did you watch the entire video before posting this comment? Starting around 5:20 I talk about how some processors have instructions to produce truly random numbers for use by software; this was still a fairly new feature at the time when I made the video.
@@vantonspraul I mean it is plain wrong to say software cannot be nondeterministic. Obviously it can be if the underlying instructions include nondeterminstic instructions. Your explanations of the relationship between deterministic software and hardware that grants it access to nondeterministic data is correct, but the characterization of software being always deterministic is not right.
This helps a tonne thankyou V. Anton
So far I've been lost with all the practice problems because they involve math, but I've been picking up the concepts.
Really well explained, thank you!
This video is very helpful and in the same time exciting 👍🏻
Just found your channel. Thank you for putting amazing teaching content online for free, I would have killed for teachers like you in college.
Please don't
where can we get the source code?
Python 3.6 released the "secrets" module. It's a secure non-deterministic RNG that is real easy to use. It's just a easy as the "random" module.
AFAIK, the secrets module repackages calls to something like os.urandom, which itself is a repackaged call to the underlying operating system to get the random number. So if the OS and hardware supports non-deterministic random numbers, that's what you will get, and if not, you will get a (hopefully well-implemented) software-regenerated pseudorandom number. Point is, the secrets module is not producing the random number itself, and it didn't any new functionality, it just made the ability to call the OS for random numbers more visible, to get programmers to use that feature when strong RNG was needed. You probably already know all this, and I am probably going on too long, I just didn't want someone to read your comment and think that Python had created a non-deterministic RNG in software.
The maze problem is basically solved by depth-first search.