Learn Programming
Antti Salonen
Computers & Technology
Learn Programming

This book is aimed at readers who are interested in software development but have very little to no prior experience.

The book doesn’t have any new information compared to what you can find online or in other books; it has two purposes:

  1. It includes what I think is important for software development from a large variety of topics, saving the reader from the dilemma “what should I learn”

  2. It collates relevant information from lots of sources in one book, saving the reader from going through several separate web sites and books

It aims to contain an overview of almost everything that I think is important for software developers. It doesn’t contain everything; but it should contain enough for the reader to understand software development, and to be able to read about and understand any topic in further detail as needed.

The book focuses on teaching the core principles around software development. It uses several technologies to this goal (e.g. C, Python, JavaScript, HTML, etc.) but is not a book about the technologies themselves. The reader will learn the basics (or in some cases more) of various technologies along the way, but the focus is on building a foundation for software development.

The beginning
Why this book?
What is software?
How does a computer work?
OK, but seriously, how does a computer work?
The basics of programming
Setting up the C toolchain
The basics of programming in C
Learning to learn
Basics of programming in Python and C
Quadratic formula in C
Lots of quadratic equations
Quadratic formula in Python
Generating input data using Python
Unix shell
Basic Unix shell usage
Unix shell scripting
Regular expressions
Using libraries in Python
Creating a simple web page
Making our web page work
Stage 1
Further Unix tools
Version control
Working with other git repositories
Some related Unix tools
Programming with vim
Background on programming languages and algorithms
Big O notation
Array, stack, queue
Guessing game in JS
JavaScript meets algorithms
Intermediate C
C and the stack
Arrays and the stack
Dynamic memory allocation
C and strings
Writing a toy web server
More programming concepts using Python
More data structures
Object oriented programming
More useful Python constructs
Callbacks and anonymous functions
Functional programming
Stage 1.5
Web development with Python and JavaScript
HTML tables
High level architecture
Gluing AJAX and Redis together
The page for starting a new game
Generating the high score table
Some more tips and tricks
Working with binary data in C
PNG files
Finishing our simple PNG parser
Strongly, statically typed languages
Under the hood
Virtual machines
The case for statically, strongly typed languages
Established languages
Newer languages
Learning C++ using Sudoku
Introduction to Sudoku
Containers for Sudoku
Sudoku Puzzle class
Propagation and search
Stage 2
Larger software
Introduction to larger software
Breaking software down to components
Drawing to a screen using SDL2
Drawing the schedule screen using SDL2
Unix way - sched
Unix way - parse_gps
Unix way - merge
Monolithic way - parsing
Monolithic way - scheduled arrivals and GPS data
Monolithic way - merging and putting it all together
A fistful of Python exercises
SQL and its relationship with online shops
Introduction to SQL
Adding data to an SQL database
Querying SQL databases
Generating a return form
Web UI for our return form
Final bits
Software licenses
NP-hard problems
Tech behind this book
Further reading
Chapter dependencies
The book hasn't received reviews yet.