music |
OSdata.com |
Computer programming text book
table of contents
summary
My goal is to provide a free downloadable text that can be used in college and high school computer programming classes. The intent of this free downloadable college text book is to attempt to directly help poor and middle class students with the high cost of college text books by providing a high quality free alternative that can be used in the classroom for a subject that most college students are required to take.
Professors are encouraged to use this to create their own mash-up book that matches their lesson plans (within copyright restrictions listed below).
Material is usually presented as a summary, a mixture of platform-independent principles and ideas along with specific implementation instructions for some popular languages (with the intent that the professors mash-up have only one language implementation of the professors choice), additional resource material, and an optional discussion of the underlying mathematics (to keep more talented students from becoming bored).
This book is released under a free educational license allowing most non-profit educational uses (including professor mash-ups), but requiring that each and every contributor be contacted for any other use. This is specifically non-GNU to protect the rights of professors to include their own materials in their own mash-ups.
The first part of the book covers the basics of programming and the second part covers advanced topics, such as assembly language, compilers, and operating systems. Each chapter and subchapter starts with a language independent summary of the programming concepts, followed by the mechanics of language specific implementation and additional related material that may interest more talented students.
This free downloadable book is based on and includes materials from OSdata.com . Materials from OSdata.com have already been used in more than 300 colleges and universities around the world and have been quoted in studies and policy decisions by the U.S. Navy and the government of the Federal Republic of Germany.
This is still a work in progress. Feedback and constructive criticism appreciated (especially feedback from professors who might want to use the finished book).
While this book is still being written, professors are free to use specific chapters (or portions of chapters) as class handouts to supplement existing for-profit text books. This same policy will continue to apply after the book is completed, but this policy offers usefulness for many classes right now today even though the book is still incomplete.
Poor students should not feel bad about using this book for free. You are exactly who this book is intended to help. You may optionally do volunteer work for the charitable organization of your choice (not political or religious activity actual work for a charitable organization helping the poor, the elderly, the sick, the disabled, or the environment, etc.).
copyrights
Students have permission to download this free computer programming textbook (in whole or in part) and print out copies for personal use.
Government schools and the instructors/professors/teachers at government schools have permission to download and print copies of this free computer programming textbook (in whole or in part) for personal use and for distribution to students in their classes. Schools/instructors/professors/teachers may charge a reasonable fee to cover the cost of printing, binding, and other related costs.
The schools and educators granted permission in the paragraph above may change the order of material, add new material, delete existing material, and otherwise make changes that customize the book for their classes. Schools and educators are asked to provide copies of any new materials added and indicate whether they want to credited by name and institution or anonymously.
Remember that any donations are voluntary and donations are not expected from those who are poor or otherwise might be burdened by the cost of making a donation. Corporations or rich people who want to help support the writing of this book are encouraged to make donations and will be specifically mentioned for their support.
author: Milo, PO Box 1361, Tustin, CA, 92781, USA
Note that the full copyright notice has been moved to a separate web page.
view text book
HTML file
Because I no longer have the computer and software to make PDFs, the book is available as an HTML file, which you can convert into a PDF.
download text book
huge PDF book (first draft)
This huge PDF file might crash many web browsers, so you probably want to download to disk or save link to disk.
free computer programming text book projectIf you like the idea of this project, |
Message to Professors
If you are at an accredited college, university, or other school in the U.S. or Canada, you have permission to use any of these materials in your own mash-up, as hand-outs, or as a whole book (and you can change the order, delete stuff, add stuff, and mdify stuff) as long as it is for your own classroom use. I do need you to include the copyright notice on anything you use.
I do not know the accreditation rules for other nations, so am limiting the above permission in other nations to government schools, colleges, and universities in any nation. Write a letter and ask if you are at a non-government school in another nation. I do need you to include the copyright notice on anything you use.
Also, accredited schools, colleges, and universities in the U.S. and Canada and government schools in any other nation may print this book (with modifications) and provide it to students either free or at actual printing costs. I do need you to include the copyright notice (including website URL) on anything you use.
I also ask that you provide a copy of any variant versions of this book you create (you can send a CD-R to Milo, PO Box 1361, Tustin, CA, 92781, USA).
Feel free to donate additional materials (you will be credited for your contributions).
And please provide feedback on any recommendations, suggestions, complaints, corections, etc. to improve the quality of this free text book for your class use.
Message to Self-Taught Students
It is almost always better to learn from a qualty university or college.
With the current dismantlement of quality higher education for the middle class and poor, many prospective students are forced to learn on their own.
If you must self-teach, please seek out other talented individuals and form a study group.
If you must seek underground education, such as reading a free college text book on-line, please use the knowledge you gain for positive purposes, such as when internet-savvy youth used the internet to start and finish the non-violent overthrow of the Mubarak government in Egypt. Note, I strongly recommend that the people of Egypt be rewarded by returning the prime meridian of the world to the center of the Great Library at Alexandria, and that Egypt, Brazil, Germany, Japan, and India be added to the permanent members of the United Nations Security Council with veto power. That would be a just international reward for skilled positive use of the internet for widespread public good.
Please avoid any destructive programming. Seriously consider the moral and ethical consequences of weapons of mass destruction.
chapters written so far:
table of contents
- Section 1: Introduction
- Chapter 1: Scholastic matters
- table of contents
- goal of this textbook
- copyright information
- using this text book
- picking a class
- syllabus
- tools
- Chapter 2: Critical reasoning
- introduction to critical reasoning
- classifications
- definitions
- engineering
- Chapter 3: Introduction to computers and programming
- computer programming
- size of programs
- basics of computer hardware
- kinds of programming
- programming languages
- direct programming
- machine and object code
- assemblers
- high level languages
- interpreters
- compilers
- linkers
- loaders
- editors
- command line interface
- development environment
- standards and variants
- Hello World
- history of programming languages
- Chapter 4: HTML
- HTML (hyper text markup language
- Chapter 5: CSS
- CSS (cascading style sheets)
- Chapter 6: Shell programming
- shell programming
- cool shell tricks
- UNIX and Linux history
- choice of shells
- connecting to a shell (Telnet and SSH; terminal emulator)
- shell basics (book conventions; root or superuser; starting your shell; login and password; prompt; command example)
- login/logout (login; select system; account name; password; terminal type; logout; exit)
- passwd (setting password; local password; periodic changes; 100 most common passwords; secure passwords; superuser)
- command structure (single command; failed command; options, switches, or flags; arguments; options and arguments; operators and special characters)
- quick tour of shell commands
- man (using man for help; man sections)
- cat (creating files; example files for this book; viewing files; combining files)
- command separator (semicolon)
- less, more, pg
- file system basics (graphics examples; directory tree; important directories; home directory; parent and child directories; absolute paths; relative paths; dots, tildes, and slashes)
- pwd
- command history
- built-in commands
- ls
- cd
- cp
- mv
- rm (recursive)
- shred
- mkdir
- alias
- pipes
- scripts
- sysadmin and root/superuser
- sudo and root
- su
- who
- advanced file systems
- major directories
- Network File System (NFS)
- tail
- wc
- chmod
- chown
- shell levels and subshells
- substitutions
- command substitutions
- arithmetic substitutions
- flow control
- management tools
- df
- du
- processes
- ps
- kill
- nice
- w
- date
- uname
- uptime
- top
- lsof
- free
- vmstat
- polkit
- defaults (screencapture; Mac Flashback Trojan)
- init (init; Linux run levels)
- sendmail
- ifconfig (view configuration; static IP address)
- arp
- netstat (view connections; main info; routing address)
- route (view connections; routing commands)
- ping (test packets; measuring)
- nslookup
- traceroute (entire route; etiquette)
- ftp and sftp
- cURL
- sysstat
- at (example; removing a job; timing)
- back ups
- tar
- touch (multiple files; specific time)
- find
- text processing
- basename
- sed (fixing end of line; adding line numbers)
- awk (remove duplicate lines)
- screencapture (from graphic user interface; changing defaults; command line screenshots)
- signals
- kernel modules
- LAMP
- mysql
- PHP
- Perl
- Tcl
- Java
- installing software from source
- test bed
- grep
- ssh
- vim
- diff
- sort
- export
- xargs
- gzip
- bzip2
- unzip
- shutdown
- crontab
- service
- mount
- whereis
- whatis
- lcoate
- yum
- rpm
- wget
- file permissions
- nano
- troff
- command summaries
- Forth-like routines
- Chapter 7: Matters of form
- creating a program
- listings and errors
- free form vs. columns
- whitespace
- comments
- program structures
- building blocks of a program
- Chapter 8: First simple programs
- first program
- program format
- lexical elements
- character set
- valid identifiers
- reserved words
- program headers
- statements
- variables
- simple input
- sequence
- Chapter 9: Numbers
- numbers
- rational numbers
- irrational numbers
- elementary algebra
- Chapter 10: Data types
- data types
- number systems
- declarations
- integer data type
- binary numbers
- decimal numbers
- fixed point numbers
- arbitrary precision integers
- floating point numbers
- complex numbers
- enumerated values
- bits
- characters
- character strings
- Boolean
- time date
- void and null
- constants
- Chapter 11: Calculations
- calculations
- operators
- assignment
- initialization
- addition
- subtraction
- multiplication
- division
- modula
- exponentiation
- expressions
- order of precedence
- augmented assignment
- chain assignment
- parallel assignment
- built-in functions
- transfer functions
- arithmetic functions
- logarithmic functions
- trigonometric functions
- Chapter 12: Modular programming
- modular programming
- simple procedures
- code blocks
- scope
- step-wise refinement
- no operation/null statement
- Chapter 13: Stream I/O
- stream I/O
- stream input
- stream output
- Chapter 14: Decisions
- decisions
- relation expressions
- if-then
- else
- nested if
- compound if
- ternary operator
- case/switch
- Chapter 15: Boolean expressions
- Boolean programming
- Boolean AND
- Boolean OR
- Boolean NOT
- Boolean expressions
- Chapter 16: Loops
- loops
- iterative (do/for) loop
- counters, increment, and decrement
- while loop
- until loop
- early exits
- branching
- Chapter 17: Subprograms
- subprograms and subroutines
- procedures
- functions
- parameters
- coroutines
- Chapter 18: Exception handling
- exception handling
- breaks, stops, and ends
- Chapter 19: Characters and strings
- character strings
- characters
- strings
- string comparison
- Chapter 20: Arrays
- arrays
- vectors
- matrix
- array slice
- associative arrays
- Horners Method
- Chapter 21: Number thoery
- number theory
- prime numbers
- amicable numbers
- Chapter 22: Records
- records/structures
- combining arrays and records
- Chapter 23: File operations
- file operations
- record I/O
- Chapter 24: Boolean logic
- Boolean logic and bit operations
- AND
- OR
- NOT
- exclusive OR
- NOT AND
- NOT OR
- NOT exclusive OR
- Boolean logic
- Boolean postulates
- Chapter 25: Ternary logic and operations
- Ternary logic and operations
- Chapter 26: Enumerated ordinal types
- enumerated ordinal types
- Chapter 27: Sets
- sets
- Chapter 28: Memory classes
- memory classes
- Chapter 29: Pointers
- pointers
- Chapter 30: Stacks
- stacks
- Chapter 31: Queues
- queues
- Chapter 32: Lists
- lists
- association lists
- Chapter 33: Trees
- trees
- tree lookup
- tree insert
- Chapter 34: Graphs
- graphs
- Chapter 35: Recursion
- recursion
- eight queens
- Chapter 36: Objects
- objects
- Chapter 37: Program Units
- program units
- libraries
- packages
- tasks
- Chapter 38: Real Time
- real time processing
- schediling
- interrupts
- Chapter 39: Distributed processing
- distributed processing
- multitasking
- shared data
- synchronization
- Chapter 40: Ethics
- ethics
- exploiting labor
- innovation
- Section 2: Advanced
- Chapter 41: Assembly language
- intro to assembly language
- data representation and number systems
- registers
- addressing modes
- data and address movement
- integer arithmetic
- floating arithmetic
- binary coded decimal (BCD) arithmetic
- advanced math
- data conversion
- logical
- shift and rotate
- bit manipulation
- character and string
- table operations
- high level language support
- program control and condition codes
- input/output
- system control
- coprocessor and multiprocessor
- trap generating
- Example Program
- music player
- simple music player code example
- adding songs
- local server
- setting start time