![]() 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: 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 3: Shell programming
- shell programming
- shell basics
- tar
- Chapter 4: Matters of form
- creating a program
- listings and errors
- free form vs. columns
- whitespace
- comments
- program structures
- building blocks of a program
- Chapter 5: First simple programs
- first program
- program format
- lexical elements
- character set
- valid identifiers
- reserved words
- program headers
- statements
- variables
- simple input
- sequence
- Chapter 6: Data types
- data types
- number systems
- declarations
- integer data type
- binary numbers
- decimal numbers
- arbitrary precision integers
- floating point numbers
- floating point numbers
- complex numbers
- bits
- characters
- character strings
- Boolean
- time date
- void and null
- constants
- Chapter 7: Calculations
- calculations
- assignment
- initialization
- addition
- subtraction
- multiplication
- division
- modula
- exponentiation
- expressions
- order of precedence
- augmented assignment
- chain assignment
- parallel assignment
- transfer functions
- arithmetic functions
- logarithmic functions
- trigonometric functions
- Chapter 8: Modular programming
- modular programming
- simple procedures
- code blocks
- scope
- step-wise refinement
- no operation/null statement
- Chapter 9: Stream I/O
- stream I/O
- stream input
- stream output
- Chapter 10: Decisions
- decisions
- relation expressions
- if-then
- else
- nested if
- compound if
- ternary operator
- case/switch
- Chapter 11: Boolean expressions
- Boolean programming
- Boolean AND
- Boolean OR
- Boolean NOT
- Boolean expressions
- Chapter 12: Loops
- loops
- iterative (do/for) loop
- counters, increment, and decrement
- while loop
- until loop
- early exits
- branching
- Chapter 13: Subprograms
- subprograms and subroutines
- procedures
- functions
- paramters
- coroutines
- Chapter 14: Exception handling
- exception handling
- breaks, stops, and ends
- Chapter 15: Characters and strings
- character strings
- characters
- strings
- Chapter 16: Arrays
- arrays
- vectors
- matrix
- array slice
- associative arrays
- Horners Method
- Chapter 17: Number thoery
- number theory
- prime numbers
- amicable numbers
- Chapter 18: Records
- records/structures
- combining arrays and records
- Chapter 19: File operations
- file operations
- record I/O
- Chapter 20: Boolean logic
- Boolean logic and bit operations
- AND
- OR
- NOT
- exclusive OR
- NOT AND
- NOT OR
- NOT exclusive OR
- Boolean logic
- Boolean postulates
- Chapter 21: Ternary logic and operations
- Ternary logic and operations
- Chapter 22: Enumerated ordinal types
- enumerated ordinal types
- Chapter 23: Sets
- sets
- Chapter 24: Memory classes
- memory classes
- Chapter 25: Pointers
- pointers
- Chapter 26: Stacks
- stacks
- Chapter 27: Queues
- queues
- Chapter 28: Lists
- lists
- association lists
- Chapter 29: Trees
- trees
- tree lookup
- tree insert
- Chapter 30: Graphs
- graphs
- Chapter 31: Recursion
- recursion
- eight queens
- Chapter 32: Objects
- objects
- Chapter 33: Program Units
- program units
- libraries
- packages
- tasks
- Chapter 34: Real Time
- real time processing
- schediling
- interrupts
- Chapter 35: Distributed processing
- distributed processing
- multitasking
- shared data
- synchronization
- Chapter 36: Ethics
- ethics
- exploiting labor
- innovation
- Section 2: Advanced
- Chapter 37: 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
- Chapter 38: Numbers
- numbers
- rational numbers
- irrational numbers
- elementary algebra
- Example Program
- music player
- simple music player code example
- adding songs
- local server
- setting start time


