text:
Computers for Beginners/Networking

Setting Up A Home Network

 * 1) First let's understand the basic pieces of a home network. We all know what a network is, right? A network is a set of hardware and software technologies that allow all the PCs in the home to connect to each other and to the Internet. One example of a network that most PCs connect to is the internet. The internet is generally easy to join, but slow, open, and unsecured.
 * 2) How is the home network built? A network is built by connecting one or more operating systems together allowing for communication between the two. Usually this is done using hardware devices which move the data from computer to computer, and software programs that convert the sent data and read the received data. A home network is easily built by using a broadband router which acts as a server to create the network for your home. In addition, routers connect to the larger internet and thus allow the home network computers to all connect to the internet simultaneously.
 * 3) To get onto the internet through a router, you need broadband internet. Broadband internet is commonly provided by cable and phone companies in the form of cable internet and DSL respectively. They require special modems to connect to their service, called broadband modems. A broadband modem is a device that allows you to quickly send and receive information from the Internet. DSL modems and cable modems are the two popular types of broadband modem. For the most part, cable modems are easier to configure and use, requiring only plugging in the cable line to the modem and the Ethernet cord to the router. The DSL modem requires users to log on to the ISP in order to get Internet access working.
 * 4) The broadband router is usually a small box - popular companies that make them are Linksys, Netgear, and DLink. One of the router's functions is to share a single Internet account with all the PCs and other devices in the home that want access to the Internet. Usually your Internet Service Provider (ISP) gives you one IP address. An IP address is a unique number for your computer's network card in a particular network (In the case of the ISP, it gives an IP address for the internet). The router works by splitting the single IP address given by your ISP into routable units that go to each computer within your home network, using special numbers that are read by the router. The router then sends the appropriate data to the appropriate IP address  of the computer in the home network Network Address Translation (NAT).
 * 5) Let's look at the typical router. You will see a series of Ethernet ports (which look like enlarged telephone line plugs), with one usually not grouped with the others or labeled differently (oftentimes labeled WAN). This port is used to connect to the cable or DSL modem using a CAT5 cable. The other Ethernet (Local Area Network) ports, which are used to attach the home PCs' Ethernet cards. Some routers have the capability to provide wireless networking. A wireless router will also sport one or two antennae, for the purpose of providing a wireless connection to computers with wireless network cards.

Sharing Internet Connection
As the setting up section explains. One of the most basic features of home networking is sharing Internet access between two computers. This can be done with DSL, cable modem, or dial-up.

Print Sharing
There are two major ways to share a printer across the network. The first requires a stand-alone printer, the other is using a printer that is connected to a computer.

A stand-alone printer is a printer that does not require being attached to a computer to use. Common examples are large office printers. They each have their own network card that allows them to connect directly into the network. These printers then can be assigned a network address, or a host name that allows other computers on the network to find them. In order to set these up please refer to your printer's administration manual.

Most modern printers also have a web-administration guide. A web administration guide shows options that can be set for the printer using a web-based interface. To get to it, you simply open your web browser and put the host name of the printer or the IP address. This will usually ask you for an administrator's account and password to change settings. This will be found in the administration manual, or you may have set it when setting up the printer's IP address.

Next, you will have to install the printer drivers and software on each computer that you want to have use of the printer.

In Windows XP:

 * 1) Click on the start menu
 * 2) Choose Run
 * 3) Type in: Control Panel and press enter
 * 4) Click Printers and Other Hardware
 * 5) Choose Printers and Faxes
 * 6) Under Printer Tasks, choose Add Printer
 * 7) Click Next, Choose Network Printer, Click Next
 * 8) Choose the bottom option to "Connect to this printer (or browse for a printer...)"
 * 9) In the text box, type in the host name or the IP address of the printer
 * 10) It will ask you if you would like to install the printer, connect yes
 * 11) It will then install the printer and tell that it has been installed!

The second option is to install a printer that is connected to another computer. First, you need to install the printer according to the instructions provided by the manufacturer on the computer. Next, you will need to get the computer's network name.

This is done in Windows XP by:

 * 1) Click on the start menu
 * 2) Choose run
 * 3) type cmd and press enter
 * 4) type in ipconfig /all and press enter
 * 5) write down the host name

Next, go to the computer that you want to connect to the printer.

In Windows XP:

 * 1) Click on the start menu
 * 2) Choose Run
 * 3) Type in: Control Panel and press enter
 * 4) Click Printers and Other Hardware
 * 5) Choose Printers and Faxes
 * 6) Under Printer Tasks, choose Add Printer
 * 7) Click Next, Choose Network Printer, Click Next
 * 8) Choose the bottom option to browse for printer
 * 9) Click Next, this should bring up a list of computers on the network
 * 10) Find the host name of the computer that the printer is attached to and double click it. (You may have to left-click on the network name before you see the computer).
 * 11) It will then show the computer and the attached printer. Choose the attached printer and click next.
 * 12) It will ask you if you would like to install the printer, connect yes
 * 13) It will then install the printer and tell that it has been installed!

To ensure complete installation, reboot the computer.

title: Computers for Beginners/Networking


text:
Talk:Algebra

Pre-Algebra
I've searched around and I've found no book on pre-algebra, but I've found 4 book on 'algebra I'. Many of these (in my opinion) definitely belong in pre-algebra, especially a lot of the chapters in this book. Cactusbin (talk) 23:40, 7 April 2009 (UTC)

Logarithms
This book needs a section on logarithms.

http://www.purplemath.com/modules/logs.htm might be a good place to learn about them.

I've put up a basic (and I mean basic) page on logarithms. It probably needs a bit of proofing, as I have a hard time trying to explain things to other people. Regre7 20:13, 13 June 2006 (UTC)

Logic
I looked at the logic page and even though I've had introductory logic (Euclidean Geometry), I found the information difficult to understand. I wrote another section, entitled "Statements" that I believe contains the same information as the original page, but in an easier-to-understand format (to me). Before I add more information, I would like to know if anyone likes my style of writing over what was on the logic page. Regre7 19:30, 13 June 2006 (UTC)

radicals in a calculator
How you do radicals in a calculator will depend on the model you have. A scientific (or business or statistics) calculator (something other than a graphing calculator) will frequently have a "square root" key and, close by, a "x-th root of y" key. The "square root" key will often be the same as the "squared" key (one of these will be a "second" function for the key); the "x-th root of y" key will often be the same as the "y to the power x" key. The specific key-sequence will vary from model to model, but is often something along the lines of "[intended root] [x-th root of y key] [value you're taking the root of]". So, for instance, "the fifth root of thirty-two" would be entered as "[5][x-th root key][3][2][=]", with the calculator returning a value of "2".

Graphing calculators usually have menu option (rather than a key) that does the same thing, and the key-sequence is similar. But check your owners manual for specifics.

Note: "Radical" may be listed in the manual index under "root".

Links from deleted "College Algebra" book
Someone had started a "College Algebra" book but didn't really do anything with it, which is good because the material belongs in this one. Anyway, here are the entire contents of that page, just in case someone wants them:

 * Website with lectures and quizzes.

 * Website with College Algebra introduction and lessons.

 * The C.L.E.P. College algebra test information.

Audience?
The supercategory for this book is "primary school mathematics". After browsing these pages, I can see that the explanations are all over the map in terms of understanding the audience. Should the discussion in a primary school algebra text be significantly different from a college algebra text? I think so, and I think it increases the difficulty of success, since the explanations must be much more than just technically correct - they must also be accessible. Thoughts?
 * This book should not be in the "Primary" category. It definitely covers way too much stuff.  We're talking about Junior college and up. --MathMan64 05:33, 20 November 2005 (UTC)
 * When describing the level of the audience it would help if everyone explained their terms a little more. We all of us tend to think first of our own educational experience and terminology but very often this can be either incomprehensible or, worse, misleading to others.  I think I understand what is meant by primary here but I really don't know what junior college means.  I think that most of this book was covered in my junior high school years (1966..1969) but whether my junior high school corresponds with anyone else's I have no idea, even with England there were wide differences in terminology and organization of schools.  For the sake of comparison here are the types of educational establishments that I attended (ages in brackets): infants school (5..6), primary school (7..10), junior high school (11..13, that is first to third form), senior high school (14..18, fourth form to upper sixth), university (19..21, bachelor's degree).  My children however are attending schools described like this: grunnskole (6..12), ungdom skole (13..15), videregående skole (16..18) and might go on to any of a wide variety of further education establishments.  Grunnskole can be translated roughly as primary but note that the age range is not the same as the English one, ungdom (literally youth) as junior high school (but note that most UK schools are not divided into junior and senior high schools) and videregående (literally further going) as senior high school.  Perhaps WikiBooks needs a glossary that describes the target audiences.  --kwhitefoot 11:30, 21 November 2005 (UTC)
 * The US system looks like this: preschool (optional, usually 2 days a week part day)  3-4, Kindergarden:age 5 (sometimes all day, sometimes not), grade school (grades 1-8): 6-14 (sometimes 12-14 is called junior high), high school 14-18 (grades 9-12).  After that is college/university.  A junior college is a 2 year college that does not give out bachellor degrees (sometimes they give out associates).  They tend to offer a lot of adult education courses and tend to be very, very cheap.  People who go there usually are there to save money and finish off at a 4 year college.

 * Side note: Most of this book looks like its on a late grade school/high school level.  The only real exception is the linear algebra portion.  Perhaps it ought to be spun off to its own book?--Gabe Sechan 17:52, 21 November 2005 (UTC)

I added my comments to Staff_lounge because I think that the issue of terminology is important for all books not just this one. By the way, the description I gave of the UK system was of the system as it was when I attended it in the sixties and early seventies not as it is now. And before anyone berates me for that let me point out that very few people outside of education know the current system but many can remember the terminology of the one they attended so agreed and documented terminology is even more essential for the avoidance of confusion than one might think. --kwhitefoot 09:19, 22 November 2005 (UTC)

Things this wikibook needs:

 * Multiplication of radicals. http://www.purplemath.com/modules/radicals.htm would be a good place to learn about them.

I added a section for adding, subtracting, multiplying, and dividing radicals. Regre7 18:25, 13 June 2006 (UTC)

 * How to use a calculator for the radicals in this wikibook. I didn't even know about those types of radicals I only know about the plain square root.

 * Perhaps we need a separate "How To" book on the fancier operations on fancier calculators, such as the one I'm working on: TI-Lists. We could put appropriate links to those from this Algebra book. --MathMan64 20:29, 2 December 2005 (UTC)

--Matt.minuti 18:04, 23 October 2006 (UTC)
 * It should ideally be written for the youngest audience possible, with links to proofs of the fundamental or important concepts. My reasoning behind this is that maybe motivated students in middle school or homeschooled children can read and learn the concepts, while college-level students needing to study algebra can see the level of detail necessary for their study. Also, sometimes a proof can give insight about how or why a particular math concept works.

PDF Version
Just to let everyone know, I'm currently compiling the Algebra book into a printable pdf format. I'm not sure why you might need to know, but there we are. Odd bloke 19:01, 2 December 2005 (UTC)

Proposed name change
I'd like to change the pages in thi book so that they all start with "Algebra/" rather than "Algebra:". This would make this book consistent with the wikibook naming policy. I trust such a change would be uncontroversial, but note it here in advance to allow a short time for comments, Jguk 06:55, 22 March 2006 (UTC)

Adding lecture notes
I'm linking to some lecture notes for a class that I taught at University of Phoenix which I'm making available for inclusion into the text.

See Talk:Algebra/ToInclude Roadrunner 19:43, 17 June 2006 (UTC)

Reorganizing
Some of these sections are beautiful, but some of this is just so oddly order, and they lack rational functions. There doesn't seem to be a logical order, so as soon as I recover from my surgery I plan to re-order and re-do a few/most of the articles, if that is fine with everyone. --Jaden Mathos 17:16, 14 July 2006 (UTC)

 * Algebra I - A Verbose Approach was an attempt to create a book with a more coherent organization. We should not have multiple books teaching the same subject the same way, so I recommend that you merge that book with the Algebra I content in this book into one Elementary Algebra book, then move the leftover content to an Intermediate Algebra book. --hagindaz 00:43, 15 July 2006 (UTC)

Actually I think I'm going to merge it together into this one book as "Algebra" but split it up into Elementary and Intermediate. Then Advanced if we have any leftover topics.--Jaden Mathos 16:19, 15 July 2006 (UTC)

 * "Elementary", "Intermediate", and "Advanced" sections are too arbitary. You are better off arranging things in terms of individual subjects: "Elementary Algebra", "Linear Algebra", "Abstract Algebra", "Discrete Algebra", etc. For that matter, I would like to separate out these topics into separate books, instead of all the cross-linked half-books that we have now. Pages about sets, groups, rings, etc should be in "Abstract Algebra", pages about matrices, determinents, eigenvalues should be in "Linear Algebra", etc. There is no reason why pages should be in such a bad order, and why pages from one subject should be located in a different book. --Whiteknight (talk) (projects) 16:28, 1 September 2006 (UTC)

 * I agree with Whiteknight on most of the restructuring issues. It's a good idea for anything beyond a highschool level to be broken down by subject. A number of these subjects can be treated independently of each other, though they require a lot of internal cohesion. However, I'd like to think that the elementary algebra and highschool algebra follow a natural linear progression and would be well suited to fit in the same book. However, there is a question of reading level; early work on arithmetic should be done in a basic english tone while I think it's too tedious to keep such a tone for teaching highschool math. For that reason, perhaps there should be a difference between elementary algebra and intermediate algebra. I think the basic english introduction to algebra --- which is a part of the one laptop for every child program --- should be sufficient for the elementary algebra. I think the rest should be reworked into a single algebra book as Whiteknight proposes: that means role intermediate algebra and the verbose algebra into one algebra book. Also, I'm of the impression that all wikibooks should be verbose to distinguish them from wikipedia articles; they should be linear, provide motivation and assume background. Thus, any articles that don't meet this standard should be assumed broken, as opposed to being the model (this is my argument against the verbose book as a separate book). I'm going to post this comment and more on WhiteKnight's talk page. These are just my opinions --- I hope he'll take the lead. Ahhoefel 02:14, 13 March 2007 (UTC)

I agree with Ahhoefel and Whiteknight. They both are correct. If you split them into Elementary, Intermediate and Advanced sections, those sections are too vague. As for Whiteknight's idea about the restructing issues, I agree too. They do not need to see what's inside to give them an idea that they should see. Instead, if you have a subsection saying "Abstract Algebra", the people will know what they are seeing, and so click on that link.

Authors
The authors of Algebra include:

 * Daniel Ehrenberg
 * many anonymous Wikibook contributers.
 * some content from Wikipedia was used.
 * H Padleckas has written Algebra/Function Graphing and made contributions to other chapters. Plans to work on other chapters in Algebra about graphics.
 * Jaden Mathos

Mass Reorganization
I'm starting my project to completely reorganize this book. I had tried to start this project last semester when I had no time to do it, and now I have the time. Some other authors have expressed some support for this movement, so anybody who wants to help is very welcome to do so. i have created a new template Algebra Page to be used at the top of every page in this book. --Whiteknight (talk) (projects) 22:31, 12 February 2007 (UTC)

algebra I vs algebra II
I think there should be two TOCs, one for algebra I and another for algebra II, since that's the way it's usually taught. Any comments? Hoogli 15:29, 2 June 2007 (UTC)

i agree

Any recent activity??
I was wondering if anyone is still working on making progress on this book consistently? I would also like to pose a question to those that are concerned with it currently and that is how do you feel about some merges that were suggested probably over a year ago? I like to simplify and condense things and I was wondering if anyone would have a problem with me trying to do that with any of the mathematics books. For example all the different books on Algebra that cover the same topics. It doesn't make sense to me to have multiple somewhat started books on topics instead of one complete book that expands on every topic or will eventually with our work and cooperation. I'd appreciate any comments or feedback you may have. I've read over this discussion and I couldn't really follow any concensus. Please correct me if I overlooked something or inform me! Thanks! Jfrederick (talk) 20:56, 2 March 2008 (UTC)

Good question, as it is not 4 years later and there seems to be little progress. As far as merging and splitting, the facts are that Algebra is an abstract subject in its own right, so abstracting even more, particularly what would be called "Beginners" Algebra is not necessarily a good idea. What topics should go where is meaningless if you do not have the essential referants to be able to cope with the more advanced topics and techniques. --Henry Tallboys (discuss • contribs) 07:13, 21 May 2012 (UTC)

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Talk:Algebra


text:
User:William M. Connolley

I'm http://en.wikipedia.org/wiki/User:William_M._Connolley. Please leave any messages for me there.

title: User:William M. Connolley


text:
Set Theory/Zorn's Lemma and the Axiom of Choice

Two dual ideas in set theory have to do with finding the "largest" possible objects in some set under a given ordering and with making a simultaneous selection of objects from many sets. These notions are phrased in terms of Zorn's Lemma, and the Axiom of Choice; and though they sound very different, they are equivalent to one another. That is, given Zorn's Lemma one can derive the Axiom of Choice, and vice versa. The Axiom of Choice is named as such because it is independent from Zermelo-Fraenkel set theory axioms. Thus, the addition of Choice to ZF enables work not previously possible.

Zorn's Lemma
Zorn's Lemma, as usually stated, takes the form:

1) If every chain in a partially ordered set S has an upper bound, then S has a maximal element.

As Zorn's Lemma (ZL) has no proof or disproof from the axioms of Zermelo-Fraenkel set theory (ZF) (by famous work of Kurt Gödel and Paul Cohen), it makes sense to speak of certain propositions P logically equivalent to Zorn's Lemma (over ZF). "Logically equivalent" means the existence of implications, provable in ZF, that say ZL ==> P and P ==> ZL. "Provable," here, means provable in classical logic; often classically equivalent forms turn out independent with respect to, say, intuitionistic logic. (Topos theory provides a context for separating, via counterexamples, classically equivalent but intuitionistically inequivalent statements.)

We immediately establish the logical equivalence of ZL with two similar propositions.

2) Let S be a set with partial order ≤. If every chain has a least upper bound, then a maximal element exists in S.

3) (Hausdorff Maximality Principle) Let S be a set with partial order ≤ such that every chain of S has an upper bound. Then S contains a maximal chain (maximal with respect to set inclusion).

(1 => 2)  If every chain has a least upper bound, a fortiori every chain has an upper bound, so the conclusion of 1) follows, and so that of 2).

(2 => 3) Write Chains(S) for the partially ordered set of chains contained in S, ordered by set inclusion. (We shall apply 2) to Chains(S), not to S itself!) Since every chain in Chains(S) has a least upper bound, namely its union, 2) grants us a maximal element in Chains(S), i.e. a maximal chain.

Some details
The union U of a chain (C_i) in Chains(S) itself has the form of a chain. For given x and y in U, we must have x in C_j and y in C_k, say, and j < k without loss of generality. But having x and y both in C_k makes them comparable.

U, as a chain, then constitutes the least upper bound for (C_i) because it does as a set!

(3 => 1) If a maximal chain C in a partially ordered set S has an upper bound u, then u belongs to C and constitutes a maximal element for S.  (If u does not belong to C, then C+{u} gives a larger chain; if u does belong to C but v>u, then C+{v} gives a larger chain.

Though one might expect no content from the tautology 1) ==> 1) that results from combining the three implications above, actually, combining the proofs, we see that whenever Zorn's Lemma fails for a partially ordered set S, it must also fail for Chains(S), the chains of S ordered by inclusion. Thus if Zorn's Lemma holds for partial orders based on set inclusion, then it holds in general!

The Axiom of Choice
Often, Choice is stated "For every nonempty set S, there exists a function f from the set $$\mathcal{S}$$ of all nonempty subsets of S to S such that f(A) is in A". Parsing this, we assert that given a set, there is a way to simultaneously pick an element from each subset of the set. This function is usually referred to as a "choice function".

Further Equivalents of the Axiom of Choice
There are literally hundreds of mathematical statements that are known to be logically equivalent to the Axiom of Choice. Some of these statements are pure set-theoretic statements, such as Zorn's Lemma, above, while others are grounded in other mathematical disciplines.

In this section we will present some of these, mostly without proof.

Zermelo's Well-Ordering Theorem
Perhaps the most important equivalent of the Axiom of Choice (at least from the viewpoint of pure set theory) is Zermelo's Well-Ordering Theorem.

Before we state it, we must introduce some terminology:

A binary relation $$R$$ on a set $$X$$ is said to be well-founded if there is no infinite sequence $$\langle x_n \rangle_{n = 0}^\infty$$ of elements of $$X$$ satisfying the following:
 * 1) $$x_n \neq x_{n+1}$$ for each $$n$$, and
 * 2) $$\langle x_{n+1}, x_n \rangle \in R$$ for each $$n$$.

A partial order relation $$R$$ on a set $$X$$ is called a well-order relation if
 * 1) for each $$x,y \in X$$ either $$\langle x, y \rangle \in R$$, or $$\langle y , x \rangle \in R$$, and
 * 2) $$R$$ is well-founded.

Zermelo's Well-Ordering Theorem is then the following simple statement: Every set $$X$$ can be well-ordered.

Tychonoff's Theorem
States that the cartesian product of any arbitrary family of compact topological spaces is itself compact.

Existence of Non-Lebesgue Measurable Sets
Consider the unit interval $$[0,1]$$ and the equivalence relation defined the interval by $$a \sim b\ \mbox{if}\ a - b \in \mathbb{Q}$$. Certainly, this is an equivalence relation:

 * $$a \sim a$$ because $$a - a = 0$$, which is rational.
 * $$a \sim b$$ implies $$a - b$$ is rational. Then $$b - a = -(a - b)$$ is rational, and so $$b \sim a$$.
 * $$a \sim b\ \mbox{and}\ b \sim c$$ implies that $$a - b\ \mbox{and}\ b - c$$ are rational. Then, $$a - c = (a - b) + (b - c)$$ is rational too.  This implies $$a \sim c$$.

Now, choose one representative from each equivalence class. Call this set $$S$$. Can $$S$$ be Lebesgue measurable? The answer is no.

To prove this, we note that any element of $$x \in [0,1]$$ differs by the chosen representative of its equivalence class $$s_{x} \in S$$ by a rational number in $$(-1,1)$$, However, there are only countably many rational numbers in $$(-1,1)$$; enumerate them as $$\left\{r_{k}\right\}_{1 \le k < \infty}$$. Define the set $$S + r= \left\{s + r \mid s \in S\right\}$$, the translate of $$S$$ by $$r$$.

Suppose $$S$$ is Lebesgue measurable. Then, by translation independence, $$S_{k} = S + r_{k}$$ is also measurable, and has the same measure. Note that by the choice procedure, the sets $$S_{k}$$ are all distinct. Take the union of all the translates:

$$\mathcal{S} = \bigcup_{k = 1}^{\infty} S_{k}$$.

If $$S$$ has measure zero, then $$\mathcal{S}$$ has measure zero too, by countable additivity.

If $$S$$ has positive measure, then $$\mathcal{S}$$ has measure $$\infty$$, by countable additivity. However,

$$[0, 1] \subset \mathcal{S} \subset [-1, 2]$$, and so $$1 \le \mu(\mathcal{S}) \le 3$$. But $$\mu(\mathcal{S})$$ cannot fall within this range, and so $$S$$ is nonmeasurable.

Exercises

 * 1) Show that any partially ordered set contains a maximal antichain (a subset in which no two elements are comparable).


text:
Perl Programming/Filehandles

= Reading files =

By slurping file
This method will read the whole file into an array. It will split on the special variable $/

By line processing
This method will read the file one line at a time. This will keep memory usage down, but the program will have to poll the input stream on each iteration.

Object-oriented interface
Using IO::File, you can get a more modern object-oriented interface to a Perl file handle.

title: Perl Programming/Filehandles


text: Japanese/Kanji/Lesson 9

title: Japanese/Kanji/Lesson 9


text:
User:Smack

Wikipedia:User:Smack

title: User:Smack


text:
Talk:Computers for Beginners/Programming

Yes, I know this a very rudimentary and incomplete entry, but it's better than when there was nothing there, and it provides a good foundation for future editors.

This is too general, and too long..
For a book that includes a section on "moving the mouse", I think the discussion of assembly is a bit involved.

It'd be nice to start with programming opportunities built into XP, such as scripting or application languages. Show a few basic things that can be done, then talk about more advanced languages and give step-by-step getting started guides.

If I knew the first thing about modern programming, I'd write this section, but the last thing I programmed was a Commodore 64.

bad title
as it stands, this artical is poorly misnamed. it mentions no Windows XP whatsoever, and focuses entirely on differences between high and low level languages. we should either rename this artical "General Programming for beginniners", or change focus immediately to WinXP programming (in C/Win32API, C++/MFC or VB). --Whiteknight 16:44, 30 August 2005 (UTC)


text:
Computers for Beginners/Programming

Taking your first step into the world of programming
Computer programming (often simply programming) is the craft of implementing one or more interrelated abstract algorithms using a particular programming language to produce a concrete computer program. Programming has elements of art, science, mathematics, and engineering. The first step to programming is understanding the problem you are trying to solve by writing your program. Programming is usually done by writing human-readable code into a text editor and then compiling that code into a form the computer understands, called a binary executable file.

Types of programming languages
There are many types of programming languages based on the code or syntax they use.

The difference between them is on the way we write their code and the different types of solutions they allow us to implement.

For example, Assembly is a low-level language where the user writes code which is almost identical to the one computers understand (see below for more info). High-level programming languages uses a more natural and human-readable syntax which makes it easier for humans to understand and write.

Today, most programmers use some sort of a high-level language, because it is much easier to learn and understand and often requires much less work.

Low level Assembler code

A typical example of a low-level programming language is Assembly. Assembly offers the lowest level of programming experience, meaning that one has absolute control over everything the machine will do. Although this offers programmers the most power, it is very hard to learn and even the most basic task can require a painful amount of work on the part of the programmer. Once compiled, assembly programs usually offer the fastest execution and most precise processor control possible. Assembly is often used for smaller, speed critical, projects such as writing a device driver, but due to its hard to understand syntax and complexity, today it is being replaced by high-level languages. The big difference between low-level and high-level languages is how the code is compiled into the binary form. Compiler used for compiling Assembly code is named assembler and as programmers say, the code written is assembled into binary form, not compiled (see under compilers for more details). There are also many Assembly languages, often specific for a processor platform. Although they are extremely hard to use, they are a very good learning tool, because an Assembly programmer is required to understand how the machine works (mainly CPU and RAM) in order to write code. MASM (Microsoft's Macro Assembler) is a popular assembler for the 80x86 (Pentium/Athlon) platform for Windows, others popular assemblers are TASM (Borland's Turbo Assembler) and the opensource FASM (Flat Assembler). NASM (The Nationwide Assembler), is currently the most versatile and popular compiler in existence.

Randall Hyde has also written a popular assembler for the 80x86 platform, called HLA (High Level Assembly) which is an attempt to simplify learning Assembly with a high-level syntax. Although one can use the high-level syntax, Randall Hyde has repeatedly stressed that a programmer can still code using a series of CMP's and Jcc's, instead of .IF for example.

This is an Assembly code snippet of a program written in MASM which loads two numbers (in the registers eax, and ebx) adds them and stores the result (in the register ecx).

.model small, C .586 .data mov eax,5 mov ebx,10 add eax,ebx mov ecx,eax end

High level languages

Due to the fact that the complexity of Assembly language programming is extremely hard to learn, and written programs are hard to maintain, low-level languages often cannot be ported to another platform, because they use platform, or, rather, CPU specific instructions, thus written Assembly code for the PC isn't portable to another platform (such as the Mac for example) without the complete rewrite of the program. Programmers were in a need for a language that could be easily understood and be portable, therefore high-level languages were created. The major difference between high-level and low-level languages is the way they are written and compiled.

While Assembly code is assembled into binary without any modifications than converting the syntax into CPU instructions, high-level languages use a compiler which also converts code into binary form, but instead of using a syntax which symbolizes CPU instructions, it used a readable, human-understandable code, thus making it easier and quicker to write, learn and maintain. The downfall is that the compiler is responsible for converting the code and often it produces a slower running binary then Assembly would.

Compilers are extremely good at optimizing code and most of the time produce a binary with the same running speed Assembly would if used correctly. They are also smart enough to tell us if there's a problem in our code and sometimes even fix it by themselves. Today, where speed is not as important as it was many years ago, high-level languages are most programmer's choice.

Although we already know two types of languages, there are also low-level and high-level languages in high level languages. A programming language may even be high-level and low-level at the same time. A typical example of this would be C or C++. Both offer low-level operations (even manipulating the smallest forms known to a computer - bits), but they also offer a natural and easy to use syntax. A typical example of a fully high-level language would be C# or Java which don't offer any low-level operations and are thus even easier to learn and write.

The difference between programming language levels is speed - the higher level the language, the slower the binary and the quicker the learning curve.

Below is the code written in C which (as the previous Assembly example) adds two numbers and stores the result.

int main {  // assign to the variable result the value of 5 + 10 int result = 5 + 10; return 0; }

The mathematical 'equals' operator ('=') has a different meaning in C so let me explain what this program does. It takes two numbers, 5 and 10, adds them and stores them in a local variable (which is stored in RAM) we called 'result'.

Another popular high-level programming language is Microsoft's Visual Basic. It is often used for learning programming, because of its ease of use and understanding. All programming languages require some basic knowledge of mathematics (mainly Algebra) and the basics of how computers work. Also every programming language serves its purpose. For example, PHP is used for programming dynamic web pages while C# is used for programming Windows applications and Java is used for programming platform independent applications.

How programs work
It is very important that you understand at least the very basics of how computers work, because learning any language it is required to know this first. Computers use the processor (CPU) to execute instructions, memory (RAM) to store the running program and hard drive (HDD) to store data and programs that are not running at that time. In order for a program to add two numbers like we did in the previous example, the program must know at compile time and before the program is run, how much memory it should ask for and what it would store there. Computers use variables to do this. Variables are data stored in RAM which can be changed any time while the program is running. In our example, we didn't use variables, but we used constants - plain numbers which can not be changed at runtime. This, you will find, is extremely useless as most of the time we don't know exactly what our program will do.

A calculator would be useless without user input and if it could only add numbers that were already given to him at compile time. Therefore, variables are the primary thing you will get to know at programming. When you run the program we wrote in C, the program knows it has two numbers in it and asks the operating system for space in memory for 2 integer numbers. Integer numbers are whole numbers such as 1, 24 and 1497. Not only does the program have to know how much space it has to ask, but even what type of a variable it will store. Will it be an integer or a character string?

Whenever one uses a program that asks for user input (a calculator for example) it has already made place in RAM for the number one will type in. When you do type it in, it stores it in that place and marks its type - if you type in 33 it will mark it as an integer, if you typed in 3.14 it will mark it as a real number.

Real numbers are numbers with fractions. For example 1.33 is a real number, so is 0.25 and so on. Knowing what type of a variable the program stores, it knows what it can do with it. So if we have real numbers or integers we can multiply them, divide them etc. But we can not do those things with a character string. We can't divide words and letters.

The other major thing to know about programming is that computers can't think. Computers are pretty much useless machines without a human to operate it. The computer does exactly what you tell it to do and nothing more. This, as you have probably notice, doesn't seem true all the time, but it is almost never the computer's fault and almost always programmer's. Computers do not understand numbers, words or any other human-readable type. They can only understand two states; true and false.

You have probably heard that computers work with 1's and 0's but that is not the case. They work with electricity and nothing more. We made up those 1's and 0's to make it simplier for us to understand them. (1's and 0's represent voltage changes).Computers cannot think or do anything useful without someone programming it. They can only compare numbers and nothing else. It is important to know this, so you start thinking as a computer programmer.

title: Computers for Beginners/Programming


text:
Template:Calculus/TOC

Navigation: Main Page · Precalculus · Limits · Differentiation · Integration · Parametric and Polar Equations · Sequences and Series · Multivariable Calculus · Extensions · References

Usage
A high-level navigation template for the Calculus textbook. Add this to the bottom of Calculus content pages.

This also includes the page in the |book category.

title: Template:Calculus/TOC


text:
User:Poiuyt Man~enwikibooks

See my Wikipedia user page. However, Wikibook-related comments should go on my Wikibooks talk page.

title: User:Poiuyt Man~enwikibooks


text:
Cookbook:Lancashire Hotpot

| Cuisine of the United Kingdom | Meat recipes

Lancashire hotpot, originating from England, is a very easy but delicious baked dish consisting of lamb, onions, potatoes, and herbs.

Ingredients

 * 2 lb (900 g) neck of lamb or mutton
 * 2 large potatoes, sliced
 * 1 large or 2 small white onion s, diced
 * Choice of mixed herbs
 * 500 ml boiling water

Procedure

 * 1) Dice the lamb and set aside. Preheat oven to 325°F / 170°C / Gas mark 3.
 * 2) Add a layer of the potatoes to the bottom of a casserole dish, and cover with a handful of the diced onion. Layer the diced lamb on top of this, sprinkling with the herbs.
 * 3) Repeat these layers until the dish is full. Top with a final layer of the potatoes.
 * 4) Pour boiling water into the dish until filled—if more water is needed, continue to add until topped.
 * 5) Bake for at least 1 hour, though traditionally the dish was left baking all day. Mutton will require a longer cooking time.

Notes, tips, and variations

 * A handful of mixed vegetables such as parsnips, turnips, leek or carrots can be added to the dish. It is worth experimenting to find out what combination of flavours you prefer.
 * The dish has occasionally been known to be cooked with oysters or with small birds such as snipe, when they were available.
 * Flavour can be improved by adding a stock cube or instant gravy granules to the boiling water.

title: Cookbook:Lancashire Hotpot


text:
Cookbook:Spaghetti alla Carbonara

| Pasta | Cuisine of Italy

Spaghetti alla carbonara (literally "charcoal burners' spaghetti" in Italian) is an Italian pasta dish made with eggs, pecorino romano, guanciale and black pepper. It was created in the middle of the 20th century. Like most recipes, the origins of the dish are obscure but there are many legends. As 'carbonara' literally means 'coal miner's wife', some believe that the dish was first made as a hearty meal for Italian coal miners. Others say that it was originally made over charcoal grills, or that it was made with squid ink, giving it the color of coal. It has even been suggested that it was created by, or as a tribute to, the "charcoalmen", a secret society prominent in the unification of Italy. Also, the name may be from a Roman restaurant named Carbonara.

Recipes vary, though all agree that pecorino romano, eggs, cured fatty pork, and black pepper are the basics. The pork is fried in fat (olive oil or lard). Then, a mixture of eggs, cheese and olive oil is combined with the hot pasta, thereby cooking the eggs. All of the ingredients are then mixed together. Guanciale is the most traditional cured pork cut for this recipe, but pancetta is a popular substitute. In the US, it is often made with American bacon.

Cream is not common in traditional Italian recipes, but is common in carbonara recipes from other countries such as the United States, France, the United Kingdom, Australia, and Russia (especially Moscow). Italian Chef Luigi Carnacina, however, used cream in his recipe. Other Anglo/Franco variations on carbonara may include peas, broccoli or other vegetables added for colour. Yet another American version includes mushrooms. Many of these preparations have more sauce than the Italian versions. In all versions of the recipe, raw eggs are added to the sauce and cook with the heat of the pasta.

Ingredients

 * 450 g (1 pound) spaghetti
 * 225–500 g (½–1 pound) guanciale or pancetta
 * 5 egg yolks
 * 178 ml (¾ cup) grated Pecorino Romano cheese
 * 178 ml (¾ cup) grated Parmigiano-Reggiano cheese
 * 3–4 tablespoons extra-virgin olive oil
 * ½ tablespoon freshly-ground pepper
 * Salt

Equipment

 * Large pot
 * Large skillet
 * Bowl
 * Measuring cups and spoons
 * Fork

Procedure

 * 1) Dice the guanciale or pancetta into 2.5 cm (1-inch) pieces.
 * 2) Bring a big pot of water to a boil and add salt to taste when it begins to simmer.
 * 3) Cook the spaghetti until it is al dente and drain it, reserving 1 cup of water.
 * 4) While spaghetti is cooking, heat the olive oil in a large skillet over a medium-high heat. When the oil is hot, add the pancetta and cook for about 10 minutes over a low flame until the pancetta has rendered most of its fat but is still chewy and barely browned.
 * 5) In a bowl, slowly whisk about ½ cup of the pasta water into the egg yolks. Add the grated cheese and mix thoroughly with a fork.
 * 6) Strain the spaghetti and transfer it immediately to the skillet with the pancetta. Toss it and turn off the heat.
 * 7) Add the egg and cheese mixture to the pasta while stirring in the remaining pasta water to help thin the sauce and create an emulsion.
 * 8) Add the pepper and toss all the ingredients to coat the pasta.

Notes, tips, and variations

 * Ideally this dish is served with a red wine (Merlot, Chianti, Montepulciano d’Abruzzo), allowed to decant for several hours, and served at 65°F (18°C).

title: Cookbook:Spaghetti alla Carbonara


text:
Cookbook:Strutto

Strutto is reconstituted pork fat. Strutto is primarily used for frying, or to prepare crusts for savory pies. It is also called sugna.

title: Cookbook:Strutto